it-swarm.com.de

Tabellennamensdilemma: Singuläre vs. Plural-Namen

Nach wissenschaftlichen Erkenntnissen sollten Tabellennamen der Singular 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 umbenannt und die Benutzer der Tabelle für immer dazu verurteilt, manchmal Klammern verwenden zu müssen.

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

Soll ich bleiben oder gehen?

1357
ProfK

Andere haben in Bezug auf "Standards" ziemlich gute Antworten gegeben, aber ich wollte dies nur hinzufügen ... Ist es möglich, dass "Benutzer" (oder "Benutzer") keine vollständige Beschreibung der in der Tabelle enthaltenen Daten ist ? Nicht, dass Sie mit Tabellennamen und Spezifität zu verrückt werden sollten, aber vielleicht ist etwas wie "Widget_Users" (wobei "Widget" der Name Ihrer Anwendung oder Website ist) angemessener.

234
Tom H

Ich hatte die gleiche Frage und nachdem ich alle Antworten hier gelesen habe, bleibe ich definitiv bei SINGULAR. Gründe:

Grund 1 (Konzept). Man kann sich eine Tüte mit Äpfeln wie "AppleBag" vorstellen, egal ob 0, 1 oder eine Million Äpfel, es ist immer die gleiche Tüte. Tabellen sind nur das, Container, der Tabellenname muss beschreiben, was es enthält, nicht wie viele Daten es enthält. Darüber hinaus handelt es sich beim Plural-Konzept eher um eine gesprochene Sprache (um tatsächlich festzustellen, ob es eine oder mehrere gibt).

Grund 2. (Bequemlichkeit). Es ist einfacher, mit singulären Namen herauszukommen, als mit pluralischen. Objekte können unregelmäßige Pluralformen oder gar keinen Plural haben, werden jedoch immer eine Singularform haben (mit wenigen Ausnahmen wie News).

  • Kunde
  • Bestellung
  • Benutzer
  • Status
  • Nachrichten

Grund. (Ästhetik und Ordnung). Insbesondere in Master-Detail-Szenarien liest sich dies besser, richtet sich besser nach dem Namen aus und hat eine logischere Reihenfolge (Master zuerst, Detail zweitens):

  • 1.Bestellen
  • 2.OrderDetail

Verglichen mit:

  • 1.OrderDetails
  • 2 Bestellungen

Grund 4 (Einfachheit). Alles zusammen, Tabellennamen, Primärschlüssel, Beziehungen, Entitätsklassen ... ist besser, sich nur eines Namens (Singular) als zweier (Singular-Klasse, Plural-Tabelle, Singular-Feld, Singular-Plural-Master-Detail) bewusst zu sein. .)

  • Customer
  • Customer.CustomerID
  • CustomerAddress
  • public Class Customer {...}
  • SELECT FROM Customer WHERE CustomerID = 100

Sobald Sie wissen, dass Sie mit "Kunde" zu tun haben, können Sie sicher sein, dass Sie für alle Ihre Datenbankinteraktionsanforderungen dasselbe Word verwenden werden.

Grund 5. (Globalisierung). Die Welt wird immer kleiner, Sie haben vielleicht ein Team verschiedener Nationalitäten, nicht jeder hat Englisch als Muttersprache. Für einen Programmierer, der nicht Englisch als Muttersprache spricht, ist es einfacher, sich "Repository" als "Repositories" oder "Statuses" anstelle von "Status" vorzustellen. Singuläre Namen können zu weniger Tippfehlern führen. Sparen Sie Zeit, indem Sie nicht an "Kind oder Kinder?" Denken und so die Produktivität steigern.

Grund 6. (Warum nicht?). Sie sparen sogar Zeit beim Schreiben, Speicherplatz und sogar eine längere Lebensdauer Ihrer Computertastatur!

  • SELECT Customer.CustomerName FROM Customer WHERE Customer.CustomerID = 100
  • SELECT Customers.CustomerName FROM Customers WHERE Customers.CustomerID = 100

Sie haben 3 Buchstaben, 3 Bytes, 3 zusätzliche Tastaturtreffer gespeichert :)

Und schließlich können Sie diejenigen benennen, die mit reservierten Namen verwechselt werden:

  • Benutzer> LoginUser, AppUser, SystemUser, CMSUser, ...

Oder benutze die berüchtigten eckigen Klammern [User]

1658
Nestor

Wenn Sie Werkzeuge zur objektrelationalen Zuordnung verwenden oder dies in Zukunft tun, empfehle ich Singular.

Einige Tools wie LLBLGen können Pluralnamen wie Benutzer zu Benutzer automatisch korrigieren, ohne den Tabellennamen selbst zu ändern. Warum ist das wichtig? Denn wenn es zugeordnet ist, soll es in einigen meiner alten Datenbanktabellen so aussehen wie "User.Name" anstelle von "Users.Name" oder schlechter, was im Code nur verwirrend ist.

Meine neue Faustregel lautet, zu beurteilen, wie es aussehen wird, wenn es in ein Objekt umgewandelt wurde.

eine Tabelle, die ich gefunden habe und die nicht zu dem neuen Namen passt, den ich verwende, ist UsersInRoles. Aber es wird immer diese wenigen Ausnahmen geben und selbst in diesem Fall sieht es gut aus als UsersInRoles.Username.

254
Brian Boatright

Ich bevorzuge es, das nbeeinflusste Nomen zu verwenden, das im Englischen Singular ist.

Das Beeinflussen der Tabellennummer führt zu orthografischen Problemen (wie viele der anderen Antworten zeigen), aber dies zu tun, da Tabellen in der Regel mehrere Zeilen enthalten, ist auch semantisch lückenhaft. Dies ist offensichtlicher, wenn wir eine Sprache betrachten, die Substantive basierend auf Groß- und Kleinschreibung beugt (wie die meisten):

Da wir normalerweise etwas mit den Zeilen machen, warum nicht den Namen in den Akkusativ setzen? Wenn wir eine Tabelle haben, in die wir mehr schreiben als wir lesen, warum nicht den Namen in Dativ setzen? Es ist eine Tabelle von etwas, warum nicht den Genitiv verwenden? Wir würden dies nicht tun, da die Tabelle als abstrakter Container definiert ist, der unabhängig von seinem Status oder seiner Verwendung existiert. Das Nomen ohne einen präzisen und absoluten semantischen Grund zu biegen, ist ein Plappern.

Die Verwendung des nicht reflektierten Substantivs ist einfach, logisch, regelmäßig und sprachunabhängig.

201
Ian Mackinnon

Welche Konvention verlangt, dass Tabellen singuläre Namen haben? Ich dachte immer, es seien Pluralnamen.

Ein Benutzer wird zur Tabelle Benutzer hinzugefügt.

Diese Seite stimmt zu:
http://vyaskn.tripod.com/object_naming.htm#Tables

Diese Seite stimmt nicht überein (aber ich bin damit nicht einverstanden):
http://justinsomnia.org/writings/naming_conventions.html


Wie schon andere erwähnt haben: Dies sind nur Richtlinien. Wählen Sie eine Konvention, die für Sie und Ihr Unternehmen/Projekt geeignet ist, und halten Sie sich daran. Der Wechsel zwischen Singular und Plural oder manchmal abkürzende Wörter und manchmal nicht ist viel erschwerender.

125
Michael Haren

Wie wäre es damit als einfaches Beispiel:

SELECT Customer.Name, Customer.Address FROM Customer WHERE Customer.Name > "def"

vs.

SELECT Customers.Name, Customers.Address FROM Customers WHERE Customers.Name > "def"

Die SQL in der letzteren klingt seltsamer als die erste.

Ich stimme für Singular.

71
james

Ich bin der festen Überzeugung, dass in einem Entitätsbeziehungsdiagramm die Entität mit einem singulären Namen widergespiegelt werden sollte, ähnlich wie ein Klassenname, der singulär ist. Einmal instanziiert, spiegelt der Name seine Instanz wider. Bei Datenbanken ist die Entität, wenn sie in eine Tabelle umgewandelt wird (eine Sammlung von Entitäten oder Datensätzen), plural. Entity, User wird zur Tabelle Users. Ich stimme anderen zu, die vorgeschlagen haben, dass der Name "Benutzer" für "Mitarbeiter" oder für Ihr Szenario besser geeignet sein könnte.

Dies ist dann in einer SQL-Anweisung sinnvoller, weil Sie aus einer Gruppe von Datensätzen auswählen und der Tabellenname nicht gut lesbar ist, wenn er singulär ist.

60
Adam Carr

Ich halte mich an Singular für Tabellennamen und jede Programmierentität.

Der Grund? Die Tatsache, dass es in Englisch unregelmäßige Pluralformen gibt, wie Maus ⇒ Mäuse und Schafe ⇒ Schafe . Wenn ich dann eine Sammlung brauche, verwende ich einfach Mäuse oder Schafe und weiter.

Es hilft der Pluralität wirklich, sich abzuheben, und ich kann leicht und programmatisch bestimmen, wie die Sammlung von Dingen aussehen würde.

Meine Regel lautet also: Alles ist singulär, jede Sammlung von Dingen ist singulär mit einem angehängten s . Hilft auch bei ORMs.

37
Ash Machine

Singular. Ich kaufe keine Argumentation, die am logischsten ist - jede Person denkt, dass ihre eigene Präferenz am logischsten ist. Egal, was Sie tun, es ist ein Durcheinander, wählen Sie einfach eine Konvention und bleiben Sie dabei. Wir versuchen, eine Sprache mit sehr unregelmäßiger Grammatik und Semantik (normale gesprochene und geschriebene Sprache) einer sehr regulären (SQL) Grammatik mit sehr spezifischer Semantik zuzuordnen.

Mein Hauptargument ist, dass ich die Tabellen nicht als eine Menge, sondern als Relationen betrachte.

Die AppUser -Relation gibt an, welche Entitäten AppUsers sind.

Die AppUserGroup -Relation sagt mir, welche Entitäten AppUserGroups sind

Die AppUser_AppUserGroup -Relation sagt mir, wie die AppUsers und AppUserGroups zusammenhängen.

Die AppUserGroup_AppUserGroup -Relation sagt mir, wie AppUserGroups und AppUserGroups zusammenhängen (d. H. Gruppen, die Mitglied von Gruppen sind).

Mit anderen Worten, wenn ich über Entitäten nachdenke und wie sie zusammenhängen, denke ich an Beziehungen im Singular, aber wenn ich natürlich an Entitäten in Sammlungen oder Mengen denke, sind die Sammlungen oder Mengen plural.

In meinem Code und im Datenbankschema verwende ich Singular. In textuellen Beschreibungen verwende ich zur besseren Lesbarkeit den Plural und dann Schriftarten usw., um den Namen der Tabelle/Relation vom Plural zu unterscheiden.

Ich empfinde es gerne als chaotisch, aber systematisch - und auf diese Weise gibt es immer einen systematisch generierten Namen für die Beziehung, die ich ausdrücken möchte, was für mich sehr wichtig ist.

31
Jacob Lorensen

IMHO sollten Tabellennamen Plural wie Kunden sein.

Klassennamen sollten singulär sein wie Customer , wenn sie einer Zeile in der Tabelle Customers zugeordnet sind.

30
Gulzar Nazim

Ich würde auch mit Plural gehen, und mit dem oben erwähnten Benutzer -Dilemma nehmen wir den Ansatz der eckigen Klammer.

Wir tun dies, um die Einheitlichkeit zwischen der Datenbankarchitektur und der Anwendungsarchitektur zu gewährleisten. Dabei wird davon ausgegangen, dass die Tabelle Users eine Sammlung von User ist. ) Werte bis zu einer Users - Auflistung in einem Code-Artefakt sind eine Auflistung von User -Objekten.

Wenn unser Datenteam und unsere Entwickler dieselbe konzeptionelle Sprache sprechen (obwohl nicht immer dieselben Objektnamen), ist es einfacher, Ideen zwischen ihnen auszutauschen.

28
Joseph Ferris

Ich persönlich bevorzuge die Verwendung von Pluralnamen, um eine Menge darzustellen. Für meinen relationalen Verstand "klingt" das einfach besser.

Genau in diesem Moment benutze ich einzelne Namen, um ein Datenmodell für mein Unternehmen zu definieren, da sich die meisten Menschen bei der Arbeit damit wohler fühlen. Manchmal muss man einfach jedem das Leben leichter machen, anstatt seine persönlichen Vorlieben durchzusetzen. (So ​​bin ich in diesem Thread gelandet, um eine Bestätigung zu erhalten, was die "Best Practice" für das Benennen von Tabellen sein sollte.)

Nachdem ich alle Argumente in diesem Thread gelesen hatte, kam ich zu einem Ergebnis:

Ich mag meine Pfannkuchen mit Honig, egal was jedermanns Lieblingsgeschmack ist. Aber wenn ich für andere Leute koche, werde ich versuchen, ihnen etwas zu servieren, das sie mögen.

20
someone

Singular. Ich würde ein Array mit einer Reihe von Benutzerzeilendarstellungsobjekten als "Benutzer" bezeichnen, aber die Tabelle ist "die Benutzertabelle". Die Tabelle als nichts anderes als die Menge der darin enthaltenen Zeilen zu betrachten, ist falsch, IMO; Die Tabelle ist die Metadaten und die Reihe der Zeilen ist hierarchisch an die Tabelle angehängt, es ist nicht die Tabelle selbst.

Ich benutze natürlich die ganze Zeit ORMs und es hilft, dass ORM-Code, der mit mehreren Tabellennamen geschrieben wurde, dumm aussieht.

16
chaos

Ich mag keine Plural-Tabellennamen, weil einige Substantive in Englisch nicht abzählbar sind (Wasser, Suppe, Bargeld) oder sich die Bedeutung ändert, wenn Sie sie abzählbar machen (Huhn gegen Huhn; Fleisch gegen Vogel). Ich mag es auch nicht, Abkürzungen für Tabellennamen oder Spaltennamen zu verwenden, da dies der bereits steilen Lernkurve eine zusätzliche Steigung hinzufügt.

Ironischerweise könnte ich User zu einer Ausnahme machen und es Users nennen, weil SER (Transac-SQL) , weil auch ich Klammern um Tabellen nicht mag, wenn ich sie nicht benutze muss nicht.

Ich möchte auch alle ID-Spalten mit Id benennen, nicht ChickenId oder ChickensId (was tun Plural-Typen dagegen?).

All dies liegt daran, dass ich die Datenbanksysteme nicht richtig respektiere, sondern nur aus Gewohnheit und Faulheit Ein-Trick-Pony-Kenntnisse aus OO Namenskonventionen wie Java's wieder anwende . Ich wünschte, es gäbe eine bessere IDE Unterstützung für kompliziertes SQL.

15
Eugene Yokota

Wir führen ähnliche Standards durch, wenn wir Skripte für Namen und gegebenenfalls Schemaqualifizierer erstellen - in erster Linie werden Ihre Wetten durch die SQL-Syntax gegen zukünftige Namensgriffe abgesichert.

SELECT [Name] FROM [dbo].[Customer] WHERE [Location] = 'WA'

Dies hat unsere Seele in der Vergangenheit gerettet - einige unserer Datenbanksysteme wurden von SQL 6.0 bis SQL 2005 über 10 Jahre lang ausgeführt - weit über die beabsichtigte Lebensdauer hinaus.

14
stephbu

Ich habe eigentlich immer gedacht, dass es eine beliebte Konvention ist, mehrere Tabellennamen zu verwenden. Bis zu diesem Punkt habe ich immer Plural verwendet.

Ich kann das Argument für einzelne Tabellennamen verstehen, aber für mich ist Plural sinnvoller. Ein Tabellenname beschreibt normalerweise, was die Tabelle enthält. In einer normalisierten Datenbank enthält jede Tabelle bestimmte Datensätze. Jede Zeile ist eine Entität und die Tabelle enthält viele Entitäten. Also die Pluralform für den Tabellennamen.

Eine Autotabelle hätte den Namen cars und jede Reihe ist ein Auto. Ich gebe zu, dass die Angabe der Tabelle zusammen mit dem Feld in einer table.field Weise die beste Vorgehensweise ist und dass singuläre Tabellennamen besser lesbar sind. In den folgenden beiden Beispielen ist jedoch das erstere sinnvoller:

SELECT * FROM cars WHERE color='blue'
SELECT * FROM car WHERE color='blue'

Ehrlich gesagt, werde ich meine Position in dieser Angelegenheit überdenken und mich auf die tatsächlichen Konventionen verlassen, die von der Organisation verwendet werden, für die ich mich entwickle. Ich denke jedoch, dass ich für meine persönlichen Konventionen bei den Plural-Tabellennamen bleiben werde. Für mich macht es mehr Sinn.

13
Randy

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, bekomme ich das Gefühl, dass es nie besonders gut ankommt? Ich persönlich liebe es. Es gibt eine gute Übersicht mit Beispielen, wie lesbar Ihre Modelle sein können, wenn Sie einzelne Tabellennamen verwenden, Ihren Beziehungen Aktionsverben hinzufügen und für jede Beziehung gute Sätze bilden. Für eine Datenbank mit 20 Tabellen ist alles etwas zu viel, aber wenn Sie eine Datenbank mit Hunderten von Tabellen und einem komplexen Design haben, wie werden Ihre Entwickler diese jemals ohne ein gut lesbares Diagramm verstehen?

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

Was das Präfixieren von Tabellen und Ansichten angeht, hasse ich diese Praxis absolut. Geben Sie einer Person überhaupt keine Informationen, bevor Sie ihnen möglicherweise schlechte Informationen geben. Jeder, der in einer Datenbank nach Objekten sucht, kann eine Tabelle leicht anhand einer Ansicht erkennen. Wenn ich jedoch eine Tabelle mit dem Namen tblUsers habe, entscheide ich mich aus irgendeinem Grund, sie in Zukunft in zwei Tabellen umzustrukturieren, um zu verhindern, dass alter Code beschädigt wird Ich habe jetzt eine Ansicht namens tblUsers. An diesem Punkt bleiben mir zwei unattraktive Optionen, eine Ansicht mit dem Präfix tbl, die einige Entwickler verwirren kann, oder eine andere Ebene, entweder die mittlere Ebene oder die Anwendung, die neu geschrieben werden muss, um auf meine neue Struktur oder den neuen Namen viewUsers zu verweisen. Das negiert meiner Meinung nach einen großen Teil des Wertes von Ansichten.

12
Shane Delmore

Tabellen: Plural

In der Benutzertabelle sind mehrere Benutzer aufgeführt.

Modelle: Singular

Ein einzelner Benutzer kann aus der Benutzertabelle ausgewählt werden.

Controller: Plural

http://myapp.com/users würde mehrere Benutzer auflisten.

Das ist sowieso meine Einstellung.

12
Andrew

Das System tables/views des Servers selbst (SYSCAT.TABLES, dbo.sysindexes, ALL_TABLES, information_schema.columns usw.) ist fast immer plural. Ich denke aus Gründen der Beständigkeit würde ich ihrer Führung folgen.

12
Michel

Mögliche Alternativen:

  • Benennen Sie die Tabelle SystemUser um
  • Verwenden Sie Klammern
  • Behalten Sie die Plural-Tabellennamen bei.

IMO mit Klammern ist technisch der sicherste Ansatz, obwohl es ein bisschen umständlich ist. IMO ist es 6 von einem, ein halbes Dutzend von dem anderen, und Ihre Lösung läuft wirklich nur auf persönliche/Team-Vorlieben hinaus.

9
Dave Markle

Dies mag ein bisschen überflüssig sein, aber ich würde vorschlagen, vorsichtig zu sein. Es ist nicht unbedingt eine schlechte Sache, Tabellen umzubenennen, aber Standardisierung ist genau das; Ein Standard - diese Datenbank ist möglicherweise bereits "standardisiert", jedoch sehr schlecht :) - Ich würde Konsistenz als besseres Ziel vorschlagen, da diese Datenbank bereits vorhanden ist und vermutlich aus mehr als nur 2 Tabellen besteht.

Wenn Sie nicht die gesamte Datenbank standardisieren können oder zumindest planen, auf dieses Ziel hinzuarbeiten, sind die Tabellennamen vermutlich nur die Spitze des Eisbergs, und ich konzentriere mich auf die Aufgabe, die den Schmerz von Objekten mit schlechten Namen ertragen kann Ihr bestes Interesse -

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

my2cents ---

9
Borzio

Meine Einstellung ist semantisch, je nachdem, wie Sie Ihren Container definieren. Zum Beispiel ein "Beutel mit Äpfeln" oder einfach "Äpfel" oder ein "Apfelbeutel" 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.

Mein Fazit ist, dass beides in Ordnung ist, aber Sie müssen definieren, wie Sie (oder Personen, die damit interagieren) sich nähern, wenn Sie sich auf die Tabellen beziehen. "a x table" oder eine "table of xs"

9
jleviaguirre

Wenn wir uns MS SQL Server's Systemtabellen ansehen, sind ihre von Microsoft zugewiesenen Namen in plural.

Die Systemtabellen des Oracle sind in singular benannt. Obwohl einige von ihnen Plural sind. Oracle empfiehlt Plural für benutzerdefinierte Tabellennamen. Das macht nicht viel Sinn, dass sie eine Sache empfehlen und einer anderen folgen. Dass die Architekten dieser beiden Software-Giganten ihre Tabellen nach unterschiedlichen Konventionen benannt haben, macht auch nicht viel Sinn ... Was sind denn diese Leute ... Doktoranden?

Ich erinnere mich an die akademische Welt, die Empfehlung war einzigartig.

Zum Beispiel, wenn wir sagen:

select OrderHeader.ID FROM OrderHeader WHERE OrderHeader.Reference = 'ABC123'

vielleicht wird b/c jedes ID aus einer bestimmten einzelnen Zeile ausgewählt ...?

8
Richard

Ich habe immer Singular verwendet, nur weil es mir beigebracht wurde. Als ich kürzlich zum ersten Mal seit langer Zeit ein neues Schema erstellt habe, habe ich mich aktiv dafür entschieden, diese Konvention beizubehalten, nur weil ... sie kürzer ist. Das Hinzufügen eines 's' am Ende jedes Tabellennamens erscheint mir ebenso nutzlos wie das Hinzufügen von 'tbl_' vor jedem.

8
Just Some Guy

Ich denke, die Verwendung des Singulars ist das, was uns an der Universität beigebracht wurde. Gleichzeitig könnten Sie argumentieren , dass eine Tabelle im Gegensatz zur objektorientierten Programmierung keine Instanz ihrer Datensätze ist.

Ich glaube, ich bin im Moment wegen der vielen Unregelmäßigkeiten im Englischen für den Singular. Auf Deutsch ist es noch schlimmer, weil es keine konsistenten Pluralformen gibt - manchmal kann man nicht sagen, ob ein Wort Plural ist oder nicht, ohne den spezifizierenden Artikel davor (der/die/das). Und in chinesischen Sprachen gibt es sowieso keine Pluralformen.

8
helloworlder

Wie bereits erwähnt, sollten Konventionen ein Werkzeug sein, um die Benutzerfreundlichkeit und Lesbarkeit zu verbessern. Nicht als Fessel oder Verein, um Entwickler zu foltern.

Meine persönliche Präferenz ist es jedoch, einzelne Namen sowohl für Tabellen als auch für Spalten zu verwenden. Das kommt wahrscheinlich von meinem Programmierhintergrund. Klassennamen sind im Allgemeinen singulär, sofern es sich nicht um eine Art Sammlung handelt. In meinen Gedanken speichere oder lese ich einzelne Datensätze in der fraglichen Tabelle, daher macht Singular für mich Sinn.

Diese Vorgehensweise ermöglicht es mir auch, mehrere Tabellennamen für diejenigen zu reservieren, in denen viele-zu-viele-Beziehungen zwischen meinen Objekten gespeichert sind.

Ich versuche auch, reservierte Wörter in meinen Tabellen- und Spaltennamen zu vermeiden. In dem hier fraglichen Fall ist es sinnvoller, der singulären Konvention für Benutzer zu widersprechen, um zu vermeiden, dass eine Tabelle gekapselt werden muss, die das reservierte Wort des Benutzers verwendet.

Ich mag es, Präfixe in begrenzter Weise zu verwenden (tbl für Tabellennamen, sp_ für Prozessnamen usw.), obwohl viele glauben, dies füge Unordnung hinzu. Ich bevorzuge auch CamelBack-Namen gegenüber Unterstrichen, weil ich beim Eingeben des Namens immer das + anstelle von _ tippe. Viele andere sind anderer Meinung.

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

Denken Sie daran, dass der wichtigste Faktor in Ihrer Konvention ist, dass es für die Personen, die mit der betreffenden Datenbank interagieren, sinnvoll ist. Wenn es um Namenskonventionen geht, gibt es keinen "One Ring to Rule They All".

8
Chris

Ich dachte immer, das sei eine blöde Konvention. Ich benutze mehrere Tabellennamen.

(Ich glaube, das Grundprinzip dieser Richtlinie ist, dass ORM-Codegeneratoren leichter Objekt- und Auflistungsklassen erstellen können, da es einfacher ist, einen Pluralnamen aus einem einzelnen Namen zu erstellen als umgekehrt.)

7
James Curran

Ich habe einmal "Dude" für die Benutzertabelle verwendet - dieselbe kurze Anzahl von Zeichen, kein Konflikt mit Schlüsselwörtern, immer noch ein Verweis auf einen generischen Menschen. Wenn ich mir keine Sorgen um die verstopften Köpfe gemacht hätte, die den Code sehen könnten, hätte ich es so gehalten.

7
Bruce Patin

Ich verwende nur Substantive für meine Tabellennamen, die gleich geschrieben sind, egal ob Singular oder Plural:

elch Fisch Hirsch Flugzeug Sie Hosen Shorts Brille Schere Spezies Nachwuchs

7
bobby

Richtlinien gibt es wirklich genau so. Es ist nicht "in Stein gemeißelt", deshalb haben Sie die Möglichkeit, sie zu ignorieren.

Ich würde sagen, dass es logisch intuitiver ist, pluralisierte Tabellennamen zu haben. Eine Tabelle ist schließlich eine Sammlung von Entitäten. Zusätzlich zu anderen erwähnten Alternativen sehe ich häufig Präfixe auf Tabellennamen ...

  • tblUser
  • tblThis
  • tblThat
  • tblTheOther

Ich schlage nicht vor, dass dies der richtige Weg ist. Ich sehe auch, dass Leerzeichen in Tabellennamen, die ich verabscheue, VIEL verwendet werden. Ich bin sogar auf Flurnamen mit idiotischen Zeichen gestoßen wie? als ob dieses Feld eine Frage beantworten soll.

5
BenAlabaster

Ich werde nur meine Meinung sagen, warum ich Singular Namen benutze.

Beispielsweise muss ich alle Felder von einem Benutzer abrufen:

-- Select every fields from 'user' table
SELECT * FROM user

Ich benötige den Namen des Benutzers, der 21 Jahre alt ist:

-- Select every fields from 'user' table which have 21 years old
SELECT * FROM user WHERE age = '21'

Natürlich kann der Weg des Pluralismus auf die gleiche Weise benutzt werden, aber für mein Gehirn zum Lesen denke ich wirklich, dass dies der richtige Weg ist.

5
nicruo

Die SQL-Definition einer Tabelle ist in Wirklichkeit die Definition einer potenziellen Zeile der Tabelle, nicht der Auflistung. Daher muss der in dieser Definition verwendete Name den Zeilentyp und nicht den Namen der Sammlung angeben. Menschen, die den Plural bevorzugen, weil er in ihren englischen Aussagen gut lesbar ist, müssen logischer denken und sich den gesamten Logik- und Programmcode ansehen, der mit der tatsächlichen Verwendung einer Tabelle verbunden ist. In diesen Kommentaren werden mehrere sehr gute Gründe genannt, um einzelne Tabellennamen zu verwenden. Dazu gehören sehr gute Gründe, keine Plural-Tabellennamen zu verwenden. "Gut lesen" sollte überhaupt kein Grund sein, zumal manche die Idee vielleicht anders lesen.

5
Bruce Patin

Wenn du gehst, wird es Ärger geben, aber wenn du bleibst, wird es das Doppelte sein.

Ich würde viel lieber gegen eine angebliche nicht-plurale Namenskonvention verstoßen, als meine Tabelle nach etwas zu benennen, das ein reserviertes Wort sein könnte.

4

Ich habe dies in keiner der vorherigen Antworten klar artikuliert gesehen. Viele Programmierer haben keine formale Definition im Sinn, wenn sie mit Tabellen arbeiten. Wir kommunizieren oft intuitiv in Bezug auf "Datensätze" oder "Zeilen". Mit einigen Ausnahmen für denormalisierte Beziehungen werden Tabellen jedoch normalerweise so entworfen, dass die Beziehung zwischen den Nichtschlüsselattributen und dem Schlüssel eine satztheoretische Funktion darstellt.

Eine Funktion kann als Teilmenge eines Kreuzprodukts zwischen zwei Mengen definiert werden, wobei jedes Element der Menge von Schlüsseln höchstens einmal im Mapping vorkommt. Daher ist die Terminologie, die sich aus dieser Perspektive ergibt, in der Regel singulär. Man sieht dieselbe singuläre (oder zumindest nicht pluralische) Konvention in anderen mathematischen und rechnerischen Theorien, die Funktionen beinhalten (zum Beispiel Algebra und Lambda-Kalkül).

4
jerseyboy

Ich benutze immer einzelne Tabellennamen, aber wie bereits erwähnt, ist es das Wichtigste, konsistent zu sein und für alle Namen die gleiche Form zu verwenden.

Was ich an Plural-Tabellennamen nicht mag, ist, dass kombinierte Namen ziemlich seltsam werden können. Wenn Sie beispielsweise eine Tabelle mit dem Namen Users haben und Eigenschaften für den Benutzer speichern möchten, führt dies zu einer Tabelle mit dem Namen UsersProperties...

4
Vinz

Wenn Sie bestimmte Frameworks wie Zend Framework (PHP) verwenden, ist es nur ratsam, für Tabellenklassen den Plural und für Zeilenklassen den Singular zu verwenden.

Angenommen, Sie erstellen ein Tabellenobjekt $ users = new Users () und haben die Zeilenklasse als User deklariert. Sie können dann auch new User () aufrufen.

Wenn Sie nun Singular für Tabellennamen verwenden, müssen Sie so etwas wie new UserTable () ausführen, wobei die Zeile new UserRow () ist. Dies erscheint mir ungeschickter, als nur ein Objekt Users () für die Tabelle und User () -Objekte für die Zeilen zu haben.

3
markus

Es gibt keine "Konvention", nach der Tabellennamen Singular sein müssen.

Zum Beispiel hatten wir eine Tabelle mit dem Namen "REJECTS" in einer Datenbank, die von einem Bewertungsprozess verwendet wurde und die Datensätze enthielt, die von einem Durchlauf des Programms zurückgewiesen wurden, und ich sehe keinen Grund, dafür keinen Plural zu verwenden Tabelle (es "REJECT" zu nennen, wäre einfach lustig oder zu optimistisch gewesen).

Über das andere Problem (Anführungszeichen) kommt es auf den SQL-Dialekt an. Oracle benötigt keine Anführungszeichen um Tabellennamen.

3

Es gibt verschiedene Artikel auf beiden Seiten, ich denke, dass Sie nur Ihre Seite wählen müssen. Persönlich bevorzuge ich Plurar für die Benennung von Tabellen und natürlich Singular für die Benennung von Spalten.

Ich mag, wie Sie das lesen können:

SELECT CustomerName FROM Customers WHERE CustomerID = 100;

Wirklich, wir haben OOP und das ist großartig, aber die meisten Leute verwenden weiterhin relationale Datenbanken, keine Objektdatenbanken. Es ist nicht erforderlich, die Konzepte OOP für relationale Datenbanken zu befolgen.

In einem anderen Beispiel haben Sie eine Tabelle Teams, die TeamID, TeamColor, aber auch PlayerID behalten und für eine bestimmte Menge von PlayerID dieselbe TeamID und TeamColor haben ...

Zu welchem ​​Team gehört der Spieler?

SELECT * FROM Teams WHERE PlayerID = X

Alle Spieler vom X-Team?

SELECT * FROM Players INNER JOIN Teams ON Players.PlayerID = Teams.PlayerID WHERE Teams.TeamID = X

Das klingt alles gut für dich?

Schauen Sie sich auch die von W3Schools verwendeten Namenskonventionen an:

http://www.w3schools.com/sql/sql_join_inner.asp

2
hmartinezd

Ein TABLE-Name ist EINE Definition einer Tabellenstruktur. Ein VIEW- oder QUERY-Name ist EINE Definition einer View oder Abfrage von (einer oder mehreren) Tabellen. Eine TABELLE, eine ANSICHT oder eine ABFRAGE kann eine der folgenden Angaben enthalten:

0 Datensätze 1 Datensatz Viele Datensätze.

Warum um alles in der Welt möchten Sie ein 's' an das Ende eines einzelnen Objektnamens setzen? Was möchten Sie bedeuten, indem Sie das 's' an das Ende eines Objektnamens setzen?

Wenn Sie differenzieren möchten, fügen Sie '_tbl' hinzu. Eine Ansicht ist '_vew' (nicht die alberne '_v'-Konvention).

Mindestens 3-stelliges Suffix - das beendet diese Diskussion.

Eine Tabelle ist ein DB-Objekt - nicht anders als jedes andere.

Das Speichern von 3 Zeichen speichert nichts außer der Klarheit der Bedeutung.

Rot ;-)

2
Red

Auf der Suche nach einer guten Namensdeckung entsteht die folgende Verwirrung, wie ich sie nennen sollte:

1) gem. zu dem was die Tabelle enthält zB: Eine Tabelle von Benutzern. Es wird immer Plural sein. Also, Benutzer

2) gem. zu was ein Datensatz enthält zB: Ein Datensatz in Benutzertabellen wird ein einzelner Benutzer. SO, Benutzer.

Nun ist das Problem für users_roles groß. Fall 1: gem. zur ersten Namenskonvention users_roles Was dieser Name andeutet, Benutzer und ihre Rollen.

fall 2: gem. zur zweiten Namenskonvention user_role Was dieser Name vermuten lässt, user und seine Rollen.

Gute Namenskonvention ist, eine zusätzliche Vorstellung von Entitätsbeziehungen zu geben , insbesondere wenn viele bis viele Beziehungen gespeichert sind.

Hier sollten wir uns gemäß dem Szenario als Informationssätze identifizieren.

In der Benutzertabelle sind alle gebildeten Sätze eindeutige Benutzer. In der Rollentabelle sind alle gebildeten Mengen eindeutige Rollen. In der Benutzer- und Rollenbeziehungstabelle können Gruppen von Benutzern mit unterschiedlichen Rollen gebildet werden, was eine Vorstellung von 1 - viele gespeicherte Beziehungen vermittelt.

I would prefer,
Users table => user
Roles table => role
users role relationship table => user_roles
2
Angelin Nadar

Ich habe das gleiche Problem gelöst, indem ich die Tabelle "Employee" (eigentlich "Employees") benannt habe. Ich versuche, Konflikte mit möglicherweise reservierten Wörtern so weit wie möglich zu vermeiden. Auch "Users" ist mir unangenehm nahe.

1
dkretz