1831 Stimmen

Dilemma bei der Benennung von Tabellen: Singular- und Plural-Namen

Nach akademischer Auffassung sollten Tabellennamen die Einzahl der Entität sein, deren Attribute sie speichern.

Ich mag kein T-SQL, das eckige Klammern um Namen erfordert, aber ich habe eine Users Tabelle in den Singular umzuwandeln, was dazu führt, dass diejenigen, die die Tabelle verwenden, manchmal Klammern verwenden müssen.

Mein Bauchgefühl sagt mir, dass es korrekter ist, beim Singular zu bleiben, aber mein Bauchgefühl sagt mir auch, dass Klammern unerwünschte Elemente wie Spaltennamen mit Leerzeichen usw. anzeigen.

Soll ich bleiben, oder soll ich gehen?

12voto

Bruce Patin Punkte 305

Ich habe einmal "Dude" für die Tabelle "Benutzer" verwendet - dieselbe geringe Anzahl von Zeichen, kein Konflikt mit Schlüsselwörtern, immer noch ein Verweis auf einen generischen Menschen. Wäre ich nicht besorgt über die spießigen Köpfe, die den Code sehen könnten, hätte ich es so belassen.

12voto

Shane Delmore Punkte 1535

Ich bin ein Fan von singulären Tabellennamen, da sie meine ER-Diagramme mit CASE-Syntax leichter lesbar machen, aber wenn ich diese Antworten lese, habe ich das Gefühl, dass es sich nie richtig durchgesetzt hat. Ich persönlich liebe es. Es gibt einen guten Überblick mit Beispielen dafür, wie lesbar Ihre Modelle sein können, wenn Sie singuläre Tabellennamen verwenden, Aktionsverben zu Ihren Beziehungen hinzufügen und gute Sätze für jede Beziehung bilden. Für eine 20-Tabellen-Datenbank ist das alles etwas übertrieben, aber wenn Sie eine DB mit Hunderten von Tabellen und einem komplexen Design haben, wie sollen Ihre Entwickler es dann jemals ohne ein gut lesbares Diagramm verstehen?

http://www.aisintl.com/case/method.html

Was das Voranstellen von Tabellen und Ansichten betrifft, so hasse ich diese Praxis absolut. Geben Sie einer Person überhaupt keine Informationen, bevor Sie ihr möglicherweise schlechte Informationen geben. Jeder, der eine Datenbank nach Objekten durchsucht, kann ganz einfach eine Tabelle von einem View unterscheiden. Wenn ich aber eine Tabelle mit dem Namen tblUsers habe, die ich aus irgendeinem Grund in der Zukunft in zwei Tabellen umstrukturieren möchte, mit einem View, der sie vereint, damit der alte Code nicht kaputt geht, habe ich jetzt einen View mit dem Namen tblUsers. An diesem Punkt habe ich zwei unattraktive Optionen: Entweder ich belasse eine Ansicht mit dem Präfix tbl, was einige Entwickler verwirren könnte, oder ich zwinge eine andere Schicht, entweder die mittlere Ebene oder die Anwendung, umgeschrieben zu werden, um auf meine neue Struktur oder den Namen viewUsers zu verweisen. Dadurch wird IMHO ein großer Teil des Wertes von Ansichten zunichte gemacht.

9voto

jleviaguirre Punkte 646

Meiner Meinung nach hängt es von der Semantik ab, wie Sie Ihren Container definieren. Zum Beispiel: Eine "Tüte Äpfel" oder einfach "Äpfel" oder eine "Apfeltüte" oder "Apfel".

Beispiel: eine "College"-Tabelle kann 0 oder mehr Colleges enthalten eine Tabelle mit "Colleges" kann 0 oder mehr Colleges enthalten

a "student" table can contain 0 or more students 
a table of "students" can contain 0 or more students.

Meine Schlussfolgerung ist, dass beides in Ordnung ist, aber Sie müssen definieren, wie Sie (oder die Leute, die damit interagieren) vorgehen, wenn Sie sich auf die Tabellen beziehen; "eine x-Tabelle" oder eine "Tabelle von xs".

9voto

Chris Punkte 317

Wie bereits von anderen hier erwähnt, sollten Konventionen dazu dienen, die Benutzerfreundlichkeit und Lesbarkeit zu verbessern. Nicht als Fessel oder Keule, um Entwickler zu quälen.

Ich persönlich bevorzuge jedoch die Verwendung von Singularnamen für Tabellen und Spalten. Das kommt wahrscheinlich von meinem Programmierhintergrund. Klassennamen sind in der Regel singulär, es sei denn, es handelt sich um eine Art Sammlung. In meiner Vorstellung speichere oder lese ich einzelne Datensätze in der betreffenden Tabelle, daher macht der Singular für mich Sinn.

Auf diese Weise kann ich auch plurale Tabellennamen für diejenigen reservieren, die viele Beziehungen zwischen meinen Objekten speichern.

Ich versuche auch, reservierte Wörter in meinen Tabellen- und Spaltennamen zu vermeiden. Im vorliegenden Fall ist es sinnvoller, die Singular-Konvention für Benutzer zu verwenden, um die Notwendigkeit zu vermeiden, eine Tabelle zu kapseln, die das reservierte Wort "Benutzer" verwendet.

Ich verwende gerne Präfixe in begrenztem Umfang (tbl für Tabellennamen, sp_ für Proc-Namen usw.), auch wenn viele glauben, dass dies zu Unordnung führt. Außerdem bevorzuge ich CamelBack-Namen gegenüber Unterstrichen, weil ich beim Eingeben des Namens immer auf das + statt auf das _ tippe. Viele andere sind anderer Meinung.

Hier ist ein weiterer guter Link für Richtlinien zu Namenskonventionen: http://www.xaprb.com/blog/2008/10/26/the-power-of-a-good-sql-naming-convention/

Denken Sie daran, dass das Wichtigste an Ihrer Konvention ist, dass sie für die Personen, die mit der betreffenden Datenbank interagieren, Sinn macht. Es gibt nicht "den einen Ring, der alle regiert", wenn es um Namenskonventionen geht.

9voto

Borzio Punkte 835

Das ist vielleicht ein bisschen überflüssig, aber ich würde vorschlagen, vorsichtig zu sein. Nicht unbedingt, dass es schlecht ist, Tabellen umzubenennen, aber Standardisierung ist eben genau das; ein Standard -- diese Datenbank ist vielleicht schon "standardisiert", wenn auch schlecht :) -- Ich würde vorschlagen, dass Konsistenz ein besseres Ziel ist, da diese Datenbank bereits existiert und vermutlich aus mehr als nur 2 Tabellen besteht.

Solange Sie nicht die gesamte Datenbank standardisieren können oder zumindest planen, darauf hinzuarbeiten, vermute ich, dass Tabellennamen nur die Spitze des Eisbergs sind und dass es in Ihrem Interesse sein könnte, sich auf die eigentliche Aufgabe zu konzentrieren und die Schmerzen schlecht benannter Objekte zu ertragen.

Praktische Konsequenz ist manchmal der beste Standard... :)

my2cents ---

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X