Tabellennamensdilemma: Singular vs. Plural Names [geschlossen]

1466

Laut Academia sollten Tabellennamen der Singular der Entität sein, in der sie Attribute speichern.

Ich mag kein T-SQL, das eckige Klammern um Namen erfordert, aber ich habe eine UsersTabelle in Singular umbenannt und diejenigen, die die Tabelle verwenden, für immer verurteilt, manchmal Klammern verwenden zu müssen.

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

Soll ich bleiben oder gehen?

ProfK
quelle
Dup der früheren Datenbanktabellen mit Namen im Plural oder Singular , aber dieser hat mehr Aufmerksamkeit erhalten.
Outis
7
Ich bin überrascht, dass nicht mehr Leute sagen: Es hängt davon ab, was eine einzelne Zeile darstellt. In einer einzelnen Datenbank habe ich möglicherweise eine Tabelle, deren Zeilen ein einzelnes Widget darstellen, und eine andere, deren Eins-zu-Viele-Beziehung zu dieser Tabelle bedeutet, dass Zeilen viele Widgets darstellen. Wenn Sie dies nicht tun, verlieren Sie an Ausdruckskraft.
Andygavin
1
Ich möchte nur hinzufügen, dass in all diesen Diskussionen eine Tabelle in keiner Weise die gleiche Form wie eine Klasse hat. Eine Tabelle ist eine Sammlung von Elementen eines bestimmten Typs, die nach einzelnen Eigenschaften sortiert, abgefragt usw. werden können. Eine Klasse ist das Framework zur Beschreibung der Eigenschaften und des Verhaltens eines bestimmten Typs. In OO-Codierungsbegriffen ist die geschlossene Darstellung einer Tabelle eine Sammlung von Objekten (unabhängig davon, welches ORM Sie verwenden). Dies ist bei weitem die höchste Google-Antwort zu diesem Thema. Obwohl die Frage geschlossen ist, hat die Seite dennoch einen Wert.
1
Ich würde mich für die gängige Praxis des Ökosystems entscheiden, in dem Sie arbeiten. Zum Beispiel: In Node.js basieren ORMs wie Bookshelf.js oder Objection.js hauptsächlich auf "Knex.js". Und in der Dokumentation "Knex.js" finden Sie Tabellennamen im Plural. Also würde ich mich für den Plural in diesem Bereich entscheiden. Quelle: knexjs.org/#Schema-createTable
Benny Neugebauer
2
Ja, ich stimme zu. Es ist sinnvoll, eine Benutzertabelle zu haben und sie gleichzeitig "AppUser" zu nennen. Es ist auch sinnvoll, eine Regeltabelle für einen bestimmten Benutzertyp zu haben und sie "UserRules" zu nennen
Arindam

Antworten:

242

Andere haben ziemlich gute Antworten gegeben, was "Standards" angeht, aber ich wollte dies nur hinzufügen ... Ist es möglich, dass "Benutzer" (oder "Benutzer") nicht wirklich eine 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 wäre etwas wie "Widget_Users" (wobei "Widget" der Name Ihrer Anwendung oder Website ist) besser geeignet.

Tom H.
quelle
7
Genau. OrgUsers, AppUsers, alles, was Sie vermeiden sollten, ein Schlüsselwort zu verwenden.
MikeW
7
-1. Tabellenbenutzer (und Länder, Sprachen) können in wenigen Anwendungen gleichzeitig verwendet werden.
OZ_
129
Würde das Zuordnen des Schemanamens nicht die ganze Verwirrung beseitigen? AppName1.Users, AppName2.Users?
Zo hat
7
Ich bin mit dem Tabellenpräfix nicht einverstanden - das sollte vielleicht ein Schema sein? - aber ich stimme einem "aussagekräftigeren Namen" zu. Selbst etwas so Einfaches wie "AppUser" würde ausreichen, ohne in die gesamte Namespace-Debatte einzutreten.
7
Diese akzeptierte Antwort ist eher ein Nebenkommentar und beantwortet die Frage nicht.
Viliami
1824

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

Grund 1 (Konzept). Sie können sich eine Tüte mit Äpfeln wie "AppleBag" vorstellen. Es spielt keine Rolle, ob sie 0, 1 oder eine Million Äpfel enthält. Es ist immer dieselbe Tüte. Tabellen sind nur das, Container, der Tabellenname muss beschreiben, was er enthält, nicht wie viele Daten er enthält. Darüber hinaus handelt das Plural-Konzept eher von einer gesprochenen Sprache (tatsächlich, um festzustellen, ob es eine oder mehrere gibt).

Grund 2 . (Bequemlichkeit). Es ist einfacher, mit singulären Namen herauszukommen, als mit mehreren. Objekte können unregelmäßige Pluralformen oder gar keinen Plural haben, haben aber immer einen Singular (mit wenigen Ausnahmen wie Nachrichten).

  • Kunde
  • Auftrag
  • Benutzer
  • Status
  • Nachrichten

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

  • 1.Bestellung
  • 2.OrderDetail

Verglichen mit:

  • 1.OrderDetails
  • 2 Bestellungen

Grund 4 (Einfachheit). Alles zusammen, Tabellennamen, Primärschlüssel, Beziehungen, Entitätsklassen ... ist es besser, nur einen Namen (Singular) anstelle von zwei (Singularklasse, Plural-Tabelle, Singular-Feld, Singular-Plural-Master-Detail) zu kennen. .)

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

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

Grund 5 . (Globalisierung). Die Welt wird immer kleiner, vielleicht haben Sie ein Team verschiedener Nationalitäten, nicht jeder hat Englisch als Muttersprache. Für einen nicht-muttersprachlichen Programmierer in englischer Sprache wäre es einfacher, an "Repository" als an "Repositories" oder "Status" anstelle von "Status" zu denken. Singuläre Namen können zu weniger Fehlern führen, die durch Tippfehler verursacht werden. Sparen Sie Zeit, indem Sie nicht denken müssen, ob es sich um ein Kind oder Kinder handelt, und verbessern Sie so die Produktivität.

Grund 6 . (Warum nicht?). Sie können sogar Schreibzeit sparen, Speicherplatz sparen und sogar die Lebensdauer Ihrer Computertastatur verlängern!

  • 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 durcheinander kommen, wie:

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

Oder benutze die berüchtigten eckigen Klammern [Benutzer]

Nestor
quelle
625
Ich wette, wenn Sie ein Etikett auf eine Sockenschublade kleben, nennen Sie es "Socken".
Chris Ward
73
Auf jeden Fall. Es ist schwierig, einen Standard zu finden, der für alle und für alle funktioniert. Wichtig ist, dass er für Sie funktioniert. Das funktioniert bei mir, und hier habe ich erklärt, warum, aber auch das ist für mich, und ich finde es sehr praktisch.
Nestor
451
Die größere Frage, Chris, ist, warum Sie beim Benennen einer Sockenschublade die Namenskonventionen für Datenbanken befolgen sollten.
Kyle Clegg
83
Diese Antwort braucht mehr Lob. Es werden einige praktische Gründe besprochen, die ich bewerbe, warum ich einzelne Namen bevorzuge. Die alternativen Diskussionen über die richtige Sprache in Bezug auf Mengen sind nur philosophisch und verdunkeln den eigentlichen Punkt. Singular funktioniert einfach besser.
Jason
298
Ich habe zu Hause eine "Socken" -Schublade, keine "Socken" -Schublade. Wenn es eine Datenbank wäre, würde ich sie die "Sock" -Tabelle nennen.
Jlembke
260

Wenn Sie Tools für die objektrelationale Zuordnung verwenden oder dies in Zukunft tun werden, empfehle ich Singular .

Einige Tools wie LLBLGen können mehrere Namen wie Benutzer zu Benutzer automatisch korrigieren, ohne den Tabellennamen selbst zu ändern. Warum ist das wichtig? Denn wenn es zugeordnet ist, soll es wie User.Name anstelle von Users.Name oder noch schlimmer aus einigen meiner alten Datenbanktabellen mit dem Namen tblUsers.strName aussehen, 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 der neuen Benennung passt, die ich verwende, ist UsersInRoles. Aber es wird immer diese wenigen Ausnahmen geben, und selbst in diesem Fall sieht es als UsersInRoles.Username gut aus.

Brian Boatright
quelle
48
Ich habe abgewählt und ich werde dir sagen warum, weil ich nicht einverstanden bin. Bei ORM geht es naturgemäß um Mapping. Jedes ORM-Tool, das ich jemals verwendet habe, unterstützt die Angabe des Tabellennamens, der für eine Entität verwendet werden soll, wenn er sich vom Namen der Entität unterscheidet. Dies ist wichtig, da wir relationale Datenbanken nur deshalb so zuordnen, dass wir problemlos Ad-hoc-Abfragen und Berichte mit anderen Formen als unser Objektmodell erstellen können. Andernfalls würden wir jetzt alle nur Objekt- / Dokumentendatenbanken verwenden.
Joshperry
25
Das ORM sollte nicht die Namen der Objekte vorgeben, denen sie zugeordnet sind. Der Punkt von ORM ist eine Abstraktion des Objekts, die diese Flexibilität gewährt.
Barrypicker
19
In meiner Welt versuche ich, im gesamten Projekt konsistente Namen zu verwenden, um keine Zeit damit zu verschwenden, mich zu fragen, ob diese Instanz am Ende ein s hat oder nicht. Die Tatsache , dass ein ORM kann unabhängig doesnt umbenennen und sein bedeutet , dass damit Ihre anderen Entwicklern helfen , zu tun.
John Nicholas
2
Einige ORM (wie viele Programmiertools) haben ein Standardverhalten, das Implementierungen ohne Konfiguration generiert ... mit dem Verkaufsargument PRODUKTIVITÄT. Das Erstellen einer Employee-Klasse ohne explizite Zuordnung würde also standardmäßig eine Employee-Tabelle generieren
user919426
1
@ Barrypicker. Mehrere Namen sehen im ORM-Code nicht nur dumm aus. Pluralformen sehen auch in SQL schlecht aus, insbesondere wenn auf ein eindeutiges Attribut verwiesen wird. Wer hat noch nie select user.id von Benutzern geschrieben? Oder vielleicht ... von Benutzern, die links sind, auf thingy.user_id = user.id ... beitreten ...?
Samuel Danielson
219

Ich bevorzuge die nicht reflektierte Substantivs, das auf Englisch singulär ist.

Das Beugen der Nummer des Tabellennamens führt zu orthografischen Problemen (wie viele der anderen Antworten zeigen), aber dies zu wählen, da Tabellen normalerweise mehrere Zeilen enthalten, ist auch semantisch voller Löcher. Dies ist offensichtlicher, wenn wir eine Sprache betrachten, die Substantive nach 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 lesen, warum nicht den Namen in einen 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 Substantiv ohne einen genauen und absoluten semantischen Grund zu beugen, plappert.

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

Ian Mackinnon
quelle
37
Wahrscheinlich das logischste Argument zu diesem Thema, das ich je gesehen habe, und macht mich froh, dass ich diese Zeit mit Latein verbracht habe. +1 sicher.
52
Nun, ich muss meinen Wortschatz eindeutig verbessern.
TJ Biddle
19
+1 Sehen Sie, das sind die Antworten, von denen das Internet mehr braucht. Tadellose Beweise mit reichem Vokabular zur Ausführung perfekter Logik.
OCDev
8
Ich werde dies beim nächsten Programmieren in Latein zur Kenntnis nehmen. In der Zwischenzeit gehen Benutzer in die Benutzertabelle und Kunden in die Kundentabelle.
Caltor
8
Überzeugt - unbeeinflusst ist es. Interessant zu sehen, dass nach all dieser Zeit die populären Entscheidungen von "Singular" und "Plural" beide falsch sind!
Stuart
126

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

Ein Benutzer wird zur Benutzertabelle hinzugefügt.

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

Diese Seite ist anderer Meinung (aber ich bin damit nicht einverstanden):
http://justinsomnia.org/writings/naming_conventions.html


Wie andere bereits erwähnt haben: Dies sind nur Richtlinien. Wählen Sie eine Konvention, die für Sie und Ihr Unternehmen / Projekt funktioniert, und bleiben Sie dabei. Das Umschalten zwischen Singular und Plural oder manchmal abkürzende Wörter und manchmal nicht ist viel erschwerender.

Michael Haren
quelle
46
Wenn Sie die Mengenlehre auf Tabellen anwenden, ist jede Instanz in der Menge repräsentativ für die Menge. Apple ist also eine Apple-Menge. Es ist unabhängig davon, wie viele Äpfel sich in der Menge befinden - es ist ein Apple mit vielen Instanzen. Eine "Tüte" Äpfel wird nicht zu einer "Tüte", wenn sie viele Äpfel enthält.
ProfK
89
Was ist, wenn Sie eine Tasche mit 5 Äpfeln haben? Nennen Sie es eine Tüte Apfel? oder eine Tüte Äpfel?
Christopher Mahan
26
Ich denke, die Theorie wäre, dass das Set Äpfel heißt. Ein einzelner Apfel ist immer noch "ein Satz Äpfel" - wenn auch ein Satz mit einer einzelnen Instanz. Mehrere Äpfel sind auch ein "Satz von Äpfeln".
Mark Brackett
26
@Christopher, wenn die Existenzberechtigung des Beutels darin besteht, Äpfel und nur Äpfel zu halten, dann ist es ein "Apfelbeutel", unabhängig davon, ob er 1 Apfel, 100 Äpfel oder keine Äpfel enthält.
Ian Mackinnon
14
@ Ian: Das liegt daran, dass ein Tisch generisch ist und mit einem Versandbehälter verglichen werden kann (kann fast alles enthalten, von Apfelkisten bis zu Kisten mit Harley Davidson-Motorrädern). Sie sagen: ein Frachtcontainer mit Orangen, kein orangefarbener Frachtcontainer. Sie sagen: ein Frachtcontainer mit Autoteilen, kein Frachtcontainer für Autoteile. Wenn Sie eine benutzerdefinierte Datenstruktur erstellt haben, die nur einen bestimmten Datentyp enthält, z. B. die Namen von Äpfeln, und diese als "Kungabogo" bezeichnet haben, können Sie einen Apfel-Kungaboko verwenden. Ich weiß, was Sie denken, aber denken Sie zuerst an einen Beutel mit Bällen und verstehen Sie den Unterschied in der Bedeutung.
Christopher Mahan
79

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"

Das SQL in letzterem klingt seltsamer als das erstere.

Ich stimme für Singular .

James
quelle
50
In diesem Beispiel ja, aber in praktischem SQL würde es niemals so geschrieben werden. Sie hätten einen Tabellenalias, also wäre es eher soSELECT C.Name, C.Address FROM Customers WHERE Customers.Name > 'def'
Michael Haren
+1, (ein Jahr später) Sie haben ein schreckliches Beispiel dafür angeführt, wie der Singular Sinn macht. Dies ist eine religiöse Debatte. Ich wurde vor einigen Jahren von einem Datenarchitekten, der viele Jahre älter als ich war, auf den Singular umgestellt, und es hat sich für mich richtig angefühlt (nachdem ich viel Überzeugungsarbeit für den Wechsel benötigt hatte).
Chris Adragna
24
Ich denke, die SQL klingt besser Plural. Sie würden nicht für jede Spalte Tabellennamen haben, warum tippen Sie so gerne? SELECT Name, Adresse FROM Customers WHERE Name> "def" Sie wählen aus dem Kundenpool aus, wobei der Name größer als def ist.
Jamiegs
6
Wie wäre es mit einem Alias ​​/ AS, um dieses eine Problem zu umgehen? SELECT Customer.Name, Customer.Address FROM Kunden als Kunden WHERE Customer.Name> "def"
James Hughes
1
Der zweite klingt viel besser, Singular klingt wie jemand, der kein Englisch spricht.
HLGEM
61

Ich bin der festen Überzeugung, dass in einem Entitätsbeziehungsdiagramm die Entität mit einem singulären Namen reflektiert werden sollte, ähnlich einem Klassennamen, der singulär ist. Einmal instanziiert, spiegelt der Name seine Instanz wider. Bei Datenbanken ist die Entität, wenn sie in eine Tabelle (eine Sammlung von Entitäten oder Datensätzen) umgewandelt wird, Plural. Entität, Benutzer wird zur Tabelle Benutzer gemacht. Ich würde anderen zustimmen, die vorgeschlagen haben, den Namen Benutzer möglicherweise auf Mitarbeiter zu verbessern oder etwas, das für Ihr Szenario besser geeignet ist.

Dies ist dann in einer SQL-Anweisung sinnvoller, da Sie aus einer Gruppe von Datensätzen auswählen und der Tabellenname singulär ist und nicht gut gelesen werden kann.

Adam Carr
quelle
3
Besonders gut gefällt mir der Kommentar zur SQL-Anweisung. Die Verwendung von Singular fühlt sich für den Leser nicht intuitiv an.
hochl
2
Hervorragender Punkt über die ERD. Ich vermute deshalb, dass für jemanden, der die Welt mit DBA-Augen sieht, eine singuläre Benennung Sinn macht. Ich vermute, sie verstehen nicht, wie Sie betonen, den Unterschied zwischen einer Entität und einer Sammlung von ihnen.
William T. Mallard
1
Eine Tabelle ist keine Sammlung von Datensätzen. Eine Tabelle definiert, wie ein Datensatz aussieht. Das ist die Trennung, die alle Leute im Plural / Singular zu haben scheinen.
Rich Remer
Ich bin mit dem Kommentar der SQL-Anweisung nicht einverstanden. Was ist, wenn Sie gegen die Users.Id
Hashtable
1
Eine old_lady hat viele Katzen ODER old_ladies haben Katzen. Ich denke, ERDs lesen sich besser als Plural. Und Tabelle von Entitäten, Tabellen haben viele Entitäten, also denke ich wieder, dass Plural gut klingt.
user3121518
39

Ich bleibe bei Singular für Tabellennamen und jede Programmiereinheit.

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

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

Meine Regel lautet also: Alles ist einzigartig, jede Sammlung von Dingen ist einzigartig, an die ein s angehängt ist. Hilft auch bei ORMs.

Paulo Freitas
quelle
7
Was ist mit einem Wort, das mit einem 's' endet? Wenn Sie eine Tabelle mit dem Namen "Nachrichten" haben (nur als Beispiel), wie würden Sie die Nachrichtensammlung nennen? Nachrichten? Oder würden Sie die Tabelle "Neu" nennen?
Anthony
18
Ich würde die Tabelle NewsItem und eine Sammlung NewsItems nennen.
Aschemaschine
5
Was ist, wenn Sie den gesamten Code überprüfen müssen, sonst wird er nicht kompiliert;)?
Hamish Grubijan
2
Das ORM sollte nicht die Namen der Objekte vorgeben, denen sie zugeordnet sind. Der Punkt von ORM ist eine Abstraktion des Objekts, die diese Flexibilität gewährt.
Barrypicker
16
@ HamishGrubijan dann hör auf, Word zu verwenden, um deinen Code zu schreiben! ;)
Valentino Vranken
36

IMHO sollten Tabellennamen wie Kunden Plural sein .

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

Gulzar Nazim
quelle
33

Singular. Ich kaufe kein Argument, das am logischsten ist - jeder hält seine eigene Präferenz für am logischsten. Egal was Sie tun, es ist ein Chaos, wählen Sie einfach eine Konvention und halten Sie sich daran. 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 Menge, sondern als Beziehungen betrachte.

Die AppUserBeziehung sagt also, welche Entitäten sind AppUsers.

Die AppUserGroupBeziehung sagt mir, welche Entitäten sindAppUserGroups

Die AppUser_AppUserGroupBeziehung sagt mir, wie die AppUsersund AppUserGroupszusammenhängen.

Das AppUserGroup_AppUserGroup Beziehung sagt mir, wie AppUserGroupsundAppUserGroups verwandt sind (dh Gruppenmitglieder von Gruppen).

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

In meinem Code und im Datenbankschema verwende ich Singular. In Textbeschreibungen verwende ich zur besseren Lesbarkeit den Plural - dann verwende ich Schriftarten usw., um den Tabellen- / Beziehungsnamen vom Plural zu unterscheiden.

Ich betrachte 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.

Jacob Lorensen
quelle
1
genau. Die Hauptsache, die vielen Menschen hier nicht bewusst ist, ist, was sie benennen ... Sie geben einer Beziehung (einem einzelnen Datensatz in der Tabelle) einen Namen, nicht der Satz von Datensätzen in der Tabelle.
Alexandre Martini
3
Könnte nicht mehr widersprechen. 'Wählen Sie * unter Benutzer, bei denen der Name' J% 'ist, da ich alle Benutzer auswähle, bei denen der Name mit' J 'beginnt. Wenn Sie argumentieren, dass Sie '... where User.Name like ...' schreiben möchten, verwenden Sie einfach einen Alias. Aus demselben Grund sage ich: "Gib mir ein Paar von allen verfügbaren Socken."
Mark A. Donohoe
Wenn ich so wäre, wäre mein Tabellenname sock_pair
Manuel Hernandez
@AlexandreMartini Genau. Wie einige Leute, die einen einzelnen Datensatz in der Tabelle "Beziehung" nennen.
Nuno André
31

Ich würde mich auch für Pluralformen entscheiden , und mit dem oben genannten Benutzerdilemma verfolgen wir den Ansatz der eckigen Klammerung.

Wir tun dies, um eine Einheitlichkeit zwischen Datenbankarchitektur und Anwendungsarchitektur zu gewährleisten, mit dem zugrunde liegenden Verständnis, dass die Users- Tabelle eine Sammlung von Benutzerwerten ist , ebenso wie eine Users- Sammlung in einem Code-Artefakt eine Sammlung von User ist Objekten ist.

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

Paulo Freitas
quelle
8
Ich stimme zu .. warum die Inkonsistenz zwischen Code und Speicher? Ich würde niemals eine Sammlung von Benutzerobjekten im Code "Benutzer" nennen. Warum sollte ich eine Tabelle so nennen? Das macht keinen Sinn. Wenn ich die obigen Argumente darüber lese, konzentrieren sie sich auf die Entität, nicht auf die Tabelle ... es gibt einen Unterschied zwischen dem, was in der Tabelle ist, und der Tabelle selbst in meinem Kopf.
Jason
Wie gehen Sie mit einem Tabellennamen um, companiesbei dem in anderen Tabellen ein Referenzierungsfeld aufgerufen wird company_id? Während es richtig geschrieben ist, scheint es für diejenigen inkonsistent zu sein, die wählerisch in Bezug auf Tabellenbenennungskonventionen sind.
Jake Wilson
1
Indem Sie sich daran erinnern, dass der Singular von companiesist companyund dass diese ID eine Referenz auf einen singulären Gegenstand ist. Es sollte uns im Code nicht mehr stören als es uns auf Englisch stört.
David
22

Ich persönlich bevorzuge es, mehrere Namen zu verwenden, um eine Menge darzustellen. Für meinen relationalen Verstand "klingt" das einfach besser.

Genau in diesem Moment verwende ich einzelne Namen, um ein Datenmodell für mein Unternehmen zu definieren, da sich die meisten Mitarbeiter 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 die Benennung von Tabellen sein sollte.)

Nachdem ich alle Argumente in diesem Thread gelesen hatte, kam ich zu einer Schlussfolgerung:

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.

jemand
quelle
Es ist nicht ratsam, eine solche Konvention in der relationalen Modellwelt zu verwenden, insbesondere wenn Sie die Beziehung zwischen Objekten beschreiben, z. B. "Jedes Team darf nur einen Haupttrainer und viele sekundäre Trainer haben", die beschrieben wird: Team-> Hauptcoach, Team - >> SecondaryCoach
Noonex
16

Singular. Ich würde ein Array mit einer Reihe von Benutzerzeilendarstellungsobjekten "Benutzer" nennen, 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 besteht aus den Metadaten, und der Satz von Zeilen ist hierarchisch an die Tabelle angehängt. Es handelt sich nicht um 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.

Chaos
quelle
Jedem sein eigenes, denke ich. Eine relationale Datenbanktabelle ist per Definition eine Überschrift (dh Metadaten, die die Attribute benennen) und eine Reihe von Tupeln, die mit der Überschrift übereinstimmen. Sie können sich auf die Metadaten konzentrieren, während sich andere Leute auf die Tupel konzentrieren. :-)
Bill Karwin
Hey, User_Table ist ein Name, den ich mag! :)
Camilo Martin
3
Das ORM sollte nicht die Namen der Objekte vorgeben, denen sie zugeordnet sind. Der Punkt von ORM ist eine Abstraktion des Objekts, die diese Flexibilität gewährt.
Barrypicker
1
Ich sehe das so. Wenn Sie ein Array / eine Liste / ein Wörterbuch mit irgendetwas im Code erstellen, ist meine Wette, dass Sie es mit dem Pluralnamen dessen benennen, was es enthält. Wenn Sie ein ORM zum Abstrahieren Ihrer Datenbank verwenden, werden Tabellen mit einer Art Sammlung dargestellt. Warum sollten Sie sie also anders behandeln? Singuläre Namen zu verwenden mag gut klingen, aber Sie bekämpfen immer Ihren Instinkt, dass eine Tabelle viele der gleichen Dinge enthält, genau wie eine Sammlung im Code. Warum die Inkonsistenz?
Jason
@ Jason: Bitte vergleichen und kontrastieren Sie die Art und Weise, wie diese Dinge lauten: 1) $db->user->row(27), $db->product->rows->where(something) 2) $db->users->row(27), $db->products->rows->where(something).
Chaos
16

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 Tabelle mit Autos hätte den Namen Autos und jede Reihe ist ein Auto. Ich gebe zu, dass table.fieldes die beste Vorgehensweise ist , die Tabelle zusammen mit dem Feld so anzugeben , dass singuläre Tabellennamen besser lesbar sind. In den folgenden beiden Beispielen ist das erstere jedoch 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 entwickle. Ich denke jedoch, dass ich mich für meine persönlichen Konventionen an mehrere Tabellennamen halten werde. Für mich macht es mehr Sinn.

Randy
quelle
9
Ist das nicht auch die Konvention in RoR? Mehrere Namen für Tabellen und Singular für ORM-Klassen? Das macht für mich sehr viel Sinn. Die Tabelle heißt "Autos", weil sie viele Instanzen von "Auto" enthält, und die Klasse heißt "Auto", weil sie eine Instanz eines Autos enthält !!
Sap
@Sap Eine geringfügige Korrektur des letzten Teils Ihres Satzes - Die Klasse "Auto" ist ein abstrakter Datentyp, der ein reales Auto darstellt. Ob es eine Instanz oder mehrere enthält, hängt davon ab, wie es verwendet wird.
Asgs
Seien wir ehrlich, Tabelle carist eine Definition der Struktur eines einzelnen Autos. Wenn Sie sich die Struktur der Tabelle ansehen, wird im Grunde "id int, color string etc" ausgespuckt: Angenommen, Sie haben eine Tabelle car_vendor(oder für Ihre Pluralversion wäre es cars_vendor) mit dem Fremdschlüssel cars_id?! Was ist das für eine blöde Scheiße? es ist car_id nicht notwendig , ich denken zu lassen. Singular wird von mir stark bevorzugt
Toskan
4
Diese Antwort gefällt mir sehr gut! Lassen Sie mich erklären. Wenn die Sammlung ist carund Sie alles von dem wollen car, sollte bluedas Ergebnis so etwas wie sein tire, mirror, engine. Und dann wird es verwirrend, weil alle Ergebnisse partsvon a stammen car. So ist der Tabellenname sein sollte carparts(oder car_parts, CarPartswas auch immer Sie mögen)
arnoudhgz
Jeder Datenbankdesigner, der einzelne Tabellennamen erzwingt, erklärt grundsätzlich den Krieg gegen alle Ruby on Rails-App-Entwickler, die möglicherweise in Zukunft mit dieser Datenbank in Kontakt kommen. Das strikte Beharren von Rail auf einzelnen Wörtern für Klassen und pluralisierten Namen für Tabellen ermöglicht eine Menge mächtiges Verhalten in vielen Edelsteinen in Rubys Ökosystem. Selbst wenn Sie der Meinung sind, dass Singular besser klingt, sollten Sie sich aus Gründen der Kompatibilität an den Plural halten. Ich kann mir vorstellen, dass dies auch für viele andere objektrelationale Mapper gilt.
Kelsey Hannan
15

Ich mag keine Plural-Tabellennamen, weil einige Substantive im Englischen nicht zählbar sind (Wasser, Suppe, Bargeld) oder sich die Bedeutung ändert, wenn Sie sie zä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 Usereine Ausnahme machen und sie Userswegen USER (Transac-SQL) aufrufen , weil ich es auch nicht mag, Klammern um Tabellen zu verwenden, wenn ich nicht muss.

Ich benenne auch gerne alle ID-Spalten als Id, nicht ChickenIdoder ChickensId(was machen Plural-Leute dagegen?).

All dies liegt daran, dass ich die Datenbanksysteme nicht richtig respektiere. Ich wende nur das One-Trick-Pony-Wissen aus OO-Namenskonventionen wie Java aus Gewohnheit und Faulheit an. Ich wünschte, es gäbe eine bessere IDE-Unterstützung für kompliziertes SQL.

Eugene Yokota
quelle
8
Wir Plural-Typen nennen entweder die 'id'-Spalte' id 'wie Sie oder' singular_id '. Ich glaube, Tabellen sollten plural sein (denken Sie an sie wie Arrays), aber Spaltennamen sollten singulär sein (Attribute eines einzelnen Elements).
Mpen
plu_ral / PluRal für Tabellennamen, singular_id / singularId für Primärschlüssel.
hochl
14

Wir verwenden ähnliche Standards, wenn wir bei der Skripterstellung [] um Namen und gegebenenfalls Schemaqualifizierer fordern - in erster Linie werden Ihre Wetten durch die SQL-Syntax gegen zukünftige Namensübernahmen abgesichert.

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

Dies hat unsere Seelen in der Vergangenheit gerettet - einige unserer Datenbanksysteme haben mehr als 10 Jahre von SQL 6.0 bis SQL 2005 gearbeitet - weit über ihre beabsichtigte Lebensdauer hinaus.

stephbu
quelle
Scheint wie rituelle Selbstgeißelung. Hat es schon solche Namensgewinne gegeben?
Kjetil S.
13

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 dazu.

Andrew
quelle
1
Näher an meiner Einstellung, aber meine ist, dass die Speicherung mehrerer Benutzer in der Tabelle tatsächlich zufällig ist und dass jeder einzelne Benutzer durch die Tabelle dargestellt wird, oder vielmehr die Beziehung, die eine Menge von Tupeln ist, die eine Benutzerentität darstellen.
ProfK
Ich glaube, ich stimme dem eher zu. Das einzige, was mich verwirrt, ist, warum Modelle einzigartig sein sollten. Nur wenn das Modell nur einen einzelnen Benutzer betrifft. Wenn ich die Datenbank abfragen würde, um alle Benutzer zu erhalten, müsste ich dann auf das Modell zugreifen? Es ist nicht sinnvoll, dass eine einzelne Instanz alle Datensätze abruft. Beispiel: $ user-> get_all () // macht keinen Sinn
PM7Temp
12

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 sie sich nie sehr gut durchgesetzt haben? Ich persönlich liebe es. Es gibt eine gute Übersicht mit Beispielen dafür, 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. Es ist alles ein bisschen übertrieben für eine Datenbank mit 20 Tabellen, aber wenn Sie eine Datenbank mit Hunderten von Tabellen und einem komplexen Design haben, wie werden Ihre Entwickler sie jemals ohne ein gut lesbares Diagramm verstehen?

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

Was das Präfixieren von Tabellen und Ansichten betrifft, hasse ich diese Praxis absolut. Geben Sie einer Person überhaupt keine Informationen, bevor Sie ihnen möglicherweise schlechte Informationen geben. Jeder, der eine Datenbank nach Objekten durchsucht, kann eine Tabelle ganz einfach von einer Ansicht unterscheiden. Wenn ich jedoch eine Tabelle mit dem Namen tblUsers habe, entscheide ich mich aus irgendeinem Grund, sie in Zukunft in zwei Tabellen umzustrukturieren, um sie so zu vereinheitlichen, dass kein alter Code beschädigt wird Ich habe jetzt eine Ansicht namens tblUsers. An diesem Punkt bleiben mir zwei unattraktive Optionen, eine Ansicht mit einem tbl-Präfix, die einige Entwickler verwirren kann, oder das Umschreiben einer anderen Ebene, entweder der mittleren Ebene oder der Anwendung, um auf meine neue Struktur oder den Namen viewUsers zu verweisen. Das negiert meiner Meinung nach einen großen Teil des Wertes von Ansichten.

Shane Delmore
quelle
1
Gutes Beispiel für die Gefahr, Objektnamen ein 'Typ'-Qualifikationsmerkmal voranzustellen!
Kenny Evitt
12

Das System tables/viewsdes Servers selbst ( SYSCAT.TABLES, dbo.sysindexes, ALL_TABLES, information_schema.columns, etc.) ist fast immer im Plural. Ich denke, aus Gründen der Konsistenz würde ich ihrem Beispiel folgen.

Michel
quelle
Microsoft ist das, was sie zuerst aus geschäftlichen Gründen sind (und oft aus unethischen Gründen), logische Gründe zuletzt. Mein einziger Grund, ihnen zu folgen, wäre, dass sie der große Gorilla sind und alle anderen diesen Weg gehen. Wenn ich die Wahl habe, wähle ich den anderen Weg.
Bruce Patin
1
Es ist zu beachten, dass dies information_schemaTeil von ISO / IEC 9075-11, dem SQL-Standard, ist. Und ja, es werden mehrere Tabellen- / Ansichtsnamen verwendet.
Paulo Freitas
10

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

Die Systemtabellen von Oracle sind in benannt singular. 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 wenig Sinn ... Was sind diese Leute ... Doktoranden?

Ich erinnere mich an die Wissenschaft, die Empfehlung war einzigartig.

Zum Beispiel, wenn wir sagen:

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

vielleicht wird b / c jeweils IDaus einer bestimmten Zeile ausgewählt ...?

Richard
quelle
1
Microsoft ist das, was sie zuerst aus geschäftlichen Gründen sind (und oft aus unethischen Gründen), logische Gründe zuletzt. Mein einziger Grund, ihnen zu folgen, wäre, dass sie der große Gorilla sind und alle anderen diesen Weg gehen. Wenn ich die Wahl habe, wähle ich den anderen Weg.
Bruce Patin
Zwei Dinge. Erstens würden Sie normalerweise die Tabellennamen nicht verwenden und 'select ID FROM OrderHeaders WHERE Reference =' ABC123 'schreiben, weil Sie' Alle IDs von OrderHeaders auswählen, bei denen etwas wahr ist ', aber wenn Sie Tabellennamen wegen a verwenden müssten Join oder was auch immer, Sie würden einen Alias ​​wie diesen verwenden ... 'Wählen Sie OrderHeader.ID FROM OrderHeaders als OrderHeader WHERE OrderHeader.Reference =' ABC123 '
Mark A. Donohoe
9

Dies mag etwas überflüssig sein, aber ich würde vorschlagen, vorsichtig zu sein. Nicht unbedingt, dass es schlecht ist, Tabellen umzubenennen, aber Standardisierung ist genau das; ein Standard - diese Datenbank ist möglicherweise bereits "standardisiert", jedoch 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, vermute ich, dass Tabellennamen nur die Spitze des Eisbergs sind und sich möglicherweise auf die jeweilige Aufgabe konzentrieren, um den Schmerz schlecht benannter Objekte zu ertragen Ihr bestes Interesse -

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

my2cents ---

Borzio
quelle
9

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, wenn auch etwas umständlich. 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.

Dave Markle
quelle
2
Ich mag Ihre 'Präfix'-Idee, würde sie aber SystemUser nennen.
ProfK
9

Mein Ansatz ist die Semantik, je nachdem, 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 von "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 entweder in Ordnung ist, aber Sie müssen definieren, wie Sie (oder die Personen, die damit interagieren) vorgehen, wenn Sie sich auf die Tabellen beziehen. "Axttabelle" oder eine "Tabelle von xs"

jleviaguirre
quelle
8

Wie andere hier erwähnt haben, 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, singuläre Namen sowohl für Tabellen als auch für Spalten zu verwenden. Dies kommt wahrscheinlich von meinem Programmierhintergrund. Klassennamen sind im Allgemeinen singulär, es sei denn, es handelt sich um eine Art Sammlung. 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, reservierte Wörter in meinen Tabellen- und Spaltennamen zu vermeiden. In dem hier fraglichen Fall ist es sinnvoller, gegen die singuläre Konvention für Benutzer zu verstoßen, 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 Proc-Namen usw.), obwohl viele glauben, dass dies Unordnung hinzufügt. Ich bevorzuge auch CamelBack-Namen gegenüber Unterstrichen, da ich beim Eingeben des Namens immer das + anstelle von _ drücke. Viele andere sind anderer Meinung.

Hier ist ein weiterer guter Link für Richtlinien für Namenskonventionen: 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 darin besteht, dass es für die Personen, die mit der betreffenden Datenbank interagieren, sinnvoll ist. Es gibt keinen "Einen Ring, um sie alle zu regieren", wenn es um Namenskonventionen geht.

Chris
quelle
18
Die Schrecken der ungarischen Notation ignorieren. Verwenden Sie sp_ niemals, niemals vor gespeicherten Prozeduren, da MS-SQL dies für gespeicherte Systemprozeduren verwendet und diese speziell behandelt. Da sp_ in der Mastertabelle gespeichert sind, sieht MS-SQL immer zuerst so aus, auch wenn Sie den Speicherort qualifizieren.
Will Dieterich
8

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

Ich glaube, ich tippe im Moment wegen mehrerer Unregelmäßigkeiten im Englischen zugunsten des Singulars. Auf Deutsch ist es sogar 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.

helloworlder
quelle
In der Universität wird mir Plural für Tabellen beigebracht, ich habe auch hier ein Buch, DB Management dritte Ausgabe aus den 90er Jahren, Tabellen sind Singular; Ich habe auch eine aktualisierte Kopie, 11e, Singular und einige abgekürzte Namen, während der XML-Abschnitt Plural verwendet. \ n Wenn Sie jedoch den tatsächlichen Inhalt der RDBMS-Abschnitte überprüfen, handelt es sich buchstäblich immer noch um denselben Text, wobei einige Bilder ein Facelifting erhalten haben. \ n Die "Checkliste für die Datenmodellierung" gibt nichts über Plural oder Singular an, nur dass Entitäten nur einem einzelnen Objekt zugeordnet werden sollten. Wahrscheinlich haben sie versucht, dies in den Büchern durchzusetzen.
Marco
8

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 stickigen Köpfe gemacht hätte, die den Code sehen könnten, hätte ich das so gehalten.

Bruce Patin
quelle
8

Ich habe immer Singular verwendet, nur weil mir das 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, einfach 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.

Just Some Guy
quelle
7

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

(Ich glaube, der Grund für diese Richtlinie ist, dass sie ORM-Codegeneratoren das Erstellen von Objekt- und Sammlungsklassen erleichtert, da es einfacher ist, einen Pluralnamen aus einem Singularnamen zu erstellen als umgekehrt.)

James Curran
quelle
11
Diese Konvention war lange, lange bevor ORM überhaupt existierte, Teil der relationalen Theorie.
ProfK
1
Das ORM sollte nicht die Namen der Objekte vorgeben, denen sie zugeordnet sind. Der Punkt von ORM ist eine Abstraktion des Objekts, die diese Flexibilität gewährt.
Barrypicker
7

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

Elch Fisch Hirsch Flugzeug Sie Hosen Shorts Brille Schere Spezies Nachkommen

Bobby
quelle
6

Ich habe dies in keiner der vorherigen Antworten klar zum Ausdruck gebracht. Viele Programmierer haben beim Arbeiten mit Tabellen keine formale Definition im Sinn. Wir kommunizieren oft intuitiv in Form von "Datensätzen" oder "Zeilen". Mit einigen Ausnahmen für denormalisierte Beziehungen werden Tabellen normalerweise so entworfen, dass die Beziehung zwischen den Nichtschlüsselattributen und dem Schlüssel eine festgelegte theoretische Funktion darstellt.

Eine Funktion kann als Teilmenge eines Kreuzprodukts zwischen zwei Mengen definiert werden, wobei jedes Element der Tastenmenge höchstens einmal in der Zuordnung vorkommt. Daher ist die aus dieser Perspektive resultierende Terminologie eher singulär. Man sieht die gleiche singuläre (oder zumindest nicht plurale) Konvention in anderen mathematischen und rechnerischen Theorien, die Funktionen beinhalten (z. B. Algebra- und Lambda-Kalkül).

Jerseyboy
quelle