# SQL-Namenskonvention



## Gumbo (22. Januar 2007)

Da ich mich bisher mit Datenbankensystemen eher wenig beschäftigt habe – und dort eigentlich auch nur mit MySQL –, möchte ich gerne wissen, ob es für Datenbankschemen Namenskonventionen oder optimale Verfahren gibt, damit es nicht zu Problemen kommt wenn es um Kompatibilität und Komplexität geht.

Im Internet sind schon einige zu finden, die jedoch bis auf die Regel, dass SQL-Schlüsselwörter durchgehend groß geschrieben und als Bezeichner vermieden werden sollen, kaum noch Gemeinsamkeiten aufweisen.
Bei der einen werden Tabellenbezeichner in der Singularform, bei der anderen in der Pluralform geschrieben. Spaltenbezeichner werden mal durchgehend klein und mit Unterschtrichen, und mal mit Binnenmajuskel geschrieben; mal bekommen sie als Präfix den Spaltenbezeichner vorangesetzt, mal nicht.


Welche Konventionen oder Richtlinien verwendet ihr und vor allem warum?


----------



## Flex (24. Januar 2007)

So, auch wenn der Thread schon ein wenig älter ist und eher intuitiv mit MySQL arbeite (sprich ich habe mich nie wirklich eingearbeitet, sondern eher durch Not dazugelernt und mein Wissen vergrößert und mich mit relationalen Datenbanksystem auch nur sehr gering beschäftigt). 
Also:
- SQL Schlüsselwörter sind tabu
- grundsätzlich benutze ich englische Bezeichner
- durchgehend klein geschrieben
- ich benutze meist die Pluralforum (es sei denn z.B. bei einer config Tabelle)
- als Präfix benutze ich meist eine Art Kürzel des Projekts (wie z. B. phpbb_tabellennamen [was ich mir auch von dort abgeguckt habe])

Vermeidung von SQL Schlüsselwörtern ist für mich selbstverständlich.
Englische Bezeichner benutze ich, weil ich mir nie sicher bin, wer nochmal einen Blick auf meine Projekte wirft oder mit/weiter daran arbeitet. Und bevor ich dort eine ganze Datenbank übersetzen muss, bleibe ich lieber im Englischen.
Kleinschreiben und Pluralform benutze ich um eine gewisse Konformität hineinzubringen und weil es (imho) schöner aussieht


----------



## Gumbo (24. Januar 2007)

Mit Präfixen meinte ich eher die für Spaltenbezeichner, dass also der Tabellenbezeichner auch im Spaltenname vorkommt. Dass Tabellen einen Präfix bekommen, hängt ja meist damit zusammen, dass oft nur eine Datenbank zur Verfügung steht und es somit zu keinen Kollisionen mit anderen Tabellen kommt und die zusammengehörigen Tabellen schneller erkennbar sind.


Ach ja: Danke für deine Antwort, Flex. Ich bin froh, dass überhaupt jemand darauf antwortet.


----------



## Flex (24. Januar 2007)

Ha, dann habe ich das etwas falsch verstanden... 

Und ja, die nutze ich tatsächlich, allerdings nur wenn die Spaltennamen doppelt vorkommen 

Meist benutze ich dabei verkürzte Versionen der Tabellenbezeichnung:

user => usr_id
products => prod_id
usw.

Solange die einzelnen Spaltenbezeichner einzigartig sind, verzichte ich auf Präfixe...
Auch wenn dabei eine gewisse Konformität verloren geht... 

Und kein Problem  Ich hab heute einfach nix anderes zu tun


----------



## dark_ghost (26. Oktober 2007)

Hi,

auch wenn das Jahr schon fast zuende ist möchte ich doch meine Meinung hinzufügen 

- Englische Bezeichner
- Kleinschreibung
- Pluralform
- Tabellenpräfix keines
(Da ich meist mehrere Datenbanken zur Verfügung habe, ich stimme aber zu, dass es
durchaus sinn macht ein Tabellenpräfix in der Form _project_tblname zu verwenden)
- _Spaltenbezeichner -> JA
Allerdings habe ich hierzu des öfteren gelesen, dass dies keinen Sinn macht. Konnte aber leider nicht herausfinden wieso dies unsinnig ist.

Hier mal ein kleines Beispiel, anhand einer CREATE TABLE Anweisung, wie ich meine Tabellen und Spalten benenne.

CREATE TABLE `news` (
  `news_id` int(7) NOT NULL auto_increment,
  `news_headline` varchar(50) NOT NULL,
  `news_author` varchar(20) NOT NULL,
  `news_date_add` int(20) NOT NULL,
  `news_date_edit` int(20) NOT NULL,
  `news_topic` text NOT NULL,
  `news_type` varchar(10) NOT NULL,
  PRIMARY KEY  (`news_id`)
);

Wäre interessant wenn noch mehr ihre Meinung dazu abgeben.
Wieso singular / plural bei der benennung von Tabellen bevorzugen ?
Wieso ist es unsinnig einen Spaltenbezeichner zu verwenden (der den Namen der Tabelle trägt) ?

Gruß


----------



## ishino (27. Oktober 2007)

dark_ghost hat gesagt.:


> Hi,
> Wieso singular / plural bei der benennung von Tabellen bevorzugen ?
> Gruß


Singular. Zum einen, weil ich es so gelernt habe, andererseits folgt es einfach aus der Modellierung. Dort (in einem E/R-Modell) werden ja auch Beziehungen zwischen einzelnen Entitäten angegeben, die man im Singular angibt. Da aus den Entitäten (i.d.R.) die Tabellennamen folgen, übernimmt man die Bezeichung eben gleich so mit.


dark_ghost hat gesagt.:


> Hi,
> Wieso ist es unsinnig einen Spaltenbezeichner zu verwenden (der den Namen der Tabelle trägt) ?
> Gruß


Weil ich in einer Query üblicherweise angebe, aus welcher Tabelle etwas selektiert wird. ;-) Wenn es mehrere sind, nutzt man i.d.R. Aliase. Das könnte man sich bei dem Tabellenpräfix natürlich sparen. Wenn jemand von euch programmiert, wird er sicherlich auch bei Klassenvariablen nicht jedes Mal den Namen der Klasse als Präfix verwenden (aus ähnlichen Gründen). Abgesehen davon hat es auch einen einfachen praktischen Hintergrund: die Bezeichnerlänge ist bei einigen DBMS relativ stark eingeschränkt (bei Oracle sind es zum Beispiel nur 30 Zeichen). Da ist der Tabellenname nicht nur überflüssig, sondern auch hinderlich beim Finden von aussagekräftigen Spaltennamen (was immer eine gute Sache ist).


----------



## dark_ghost (31. Oktober 2007)

Hi,

danke für deine Antwort.
Da muss ich dir recht geben, im Query steht ja aus welcher Tabelle ich selektieren möchte da ist der Spaltenbezeichner "doppeltgemoppelt" und ich kann dann ja noch mit Aliasen arbeiten und muss nicht den ganzen Tabellennamen voranstellen.

Werde ernsthaft darüber nachdenken, meine DB struktur umzugestalten.
Tabellen und Spaltennamen im Singular und ohne Spaltenbezeichner zu schreiben.

Gruß


----------

