Tabellen- und Spaltenbenennung in Datenbanken

klausschreiber

Well-known member
ID: 162475
L
6 Mai 2006
247
8
Hallo,

da ich gerade dabei bin, die Bezeichnungen meiner Tabellen und Spalten in einer Datenbank zu verbessern, habe ich folgende Frage. Und zwar, wie benennt ihr die Tabllen und Spalten in Datenbanken?

Ich habe bisher leider nur eine kleine Diskussion zwischen zwei Usern gefunden (https://www.phpforum.de/forum/showthread.php?t=194117).

Ansonsten habe ich mir mal angeschaut, wie die Sachen bei phpBB benannt sind, aber das muss ja auch nicht unbedingt die optimalste Benennung sein.


Was ich mir bisher überlegt habe:

  • alle Bezeichnungen auf Englisch, da die englischen Wörter meistens kürzer sind als die Deutschen (wiederspricht es sich eurer Meinung nach, Tabellennamen und php-Variablen auf Englisch zu machen, aber die php-Kommentare auf Deutsch?)
  • alle Bezeichnungen werden normalerweise kleingeschrieben
  • Besteht eine Bezeichnung aus mehreren Wörtern, wird ab dem zweiten Wort der Wortanfang großgeschrieben.
    Code:
    short description = shortDescription
  • die Tabellennamen sind im Plural
  • die Tabellennamen fangen mit einer Abkürzung des Datenbank- oder Projektnamens an, gefolgt von einem Unterstrich und dem
    Tabellennamen.
    Code:
    Datenbankname: hardwareshop
    Tabellenname: hs_products
  • bei einer Tabelle, die nur der Verbindung von zwei Tabellen dient, werden beide Tabellen getrennt durch einen Bindestrich genannt
    Code:
    Datenbankname: hardwareshop
    Tabelle 1: hs_products
    Tabelle 2: hs_categories
    Verbindungstabelle: hs_products-categories
  • Spaltennamen sind im Singular
  • Spaltennamen fangen mit dem Tabellennamen gefolgt von einem Unterstrich an, haben jedoch nicht den Datenbanknamen im Namen
    Code:
    product_id
    product_name
    product-category_id
Jo, was haltet ihr von dieser Lösung oder wie macht ihr es? (Ich hatte bisher noch kein festes Schema, will jedoch eins haben)


Danke für eure Antworten,
Gruß,
Klaus

edit: Falls jemand eine Webseite kennt, wo eine Bezeichungsart vorgeschlagen wird, würde ich mich über den Link freuen.
 
Zuletzt bearbeitet:
Viel ordentlicher als ich das mach :mrgreen:

Mit Bindestrichen wäre ich allerdings vorsichtig und würde lieber zu Unterstrichen tendieren.

Zu Groß-/Kleinschreibung halte ich durchwegs Kleinschreibung ein, damit sich SQL-Schlüsselworte (groß) und Tabellen und Spalten (klein) im Code deutlich unterscheiden. "Worttrennungen" mach ich entweder durch Konkatenation oder wenn das zu unleserlich wird, mit Unterstrichen. Großbuchstaben würd ich aber nicht verwenden.

Sprache sollte durchwegs Englisch sein. Ich würde mir an deiner Stelle auch angewöhnen, wenn du Kommentare machst, diese auf Englisch zu schreiben - auch wenn du deshalb mal im Wörterbuch blättern musst.

Dass du den einzelnen Spalten noch den Tabellenname voranstellst, kann nützlich sein, neigt aber auch dazu, dass dein Code schwerer lesbar wird.
Grundsätzlich würde es genügen, wenn du darauf achtest, dass eine Spalte, die Primär- oder Fremdschlüssel ist, eindeutig über allen Tabellen ist. Also quasi die ID-Spalten zu user_id, foo_id, bar_id, etc.

In den SQL-Abfragen kannst du ja die Tabellen voranstellen. Evtl. kannst du einige Sachen lesbarer schreiben, z.B. statt
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] article_id, article_name, product_of_the_year_name
[B][COLOR=#9932cc]FROM[/COLOR][/B] product_of_the_year
[B][COLOR=#9932cc]JOIN[/COLOR][/B] article [B][COLOR=#9932cc]ON[/COLOR][/B] product_of_the_year_name = article_name;[/FONT]
würde ich
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] article.article_id, article.name, product_of_the_year.name
[B][COLOR=#9932cc]FROM[/COLOR][/B] product_of_the_year
[B][COLOR=#9932cc]JOIN[/COLOR][/B] article [B][COLOR=#9932cc]USING[/COLOR][/B](name);[/FONT]
empfehlen.

Numerus der Tabellennamen sollte einheitlich sein. Ja, Plural is aber manchmal schwer zu schreiben, drum würd ich da eher zum Singular tendieren.

Ok, das war, wie ichs mach oder empfehlen würde. Bin aber offen für andere Meinungen.
 
Zuletzt bearbeitet:
danke für deine Antwort.

Naja, bisher habe ich es ja auch noch nicht ordentlich gemacht, weshalb meine Frage aufkam.:mrgreen:

Den Tabellennamen nur bei Primär- und Fremdschlüsseln voranzustellen, finde ich eine gute Idee. Meine Lösung wäre wohl wirklich etwas schwerer lesbar.

Bezüglich Bindestriche für Verbindungstabellen:
Warum hälst du das für keine gute Idee? Ich hatte mir das überlegt, um zwischen Tabellenverbindungen und "Datenbankname_Tabellenname" zu unterscheiden. Gut, das ist im Grunde nicht wirklich notwendig, aber der Grund, warum du mit Bindestriche in Tabellennamen grundsätzlich vorsichtig bist, würde mich trotzdem interessieren.