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?

2258voto

Nestor Punkte 1921

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 Tasche mit Äpfeln als "AppleBag" vorstellen, es spielt keine Rolle, ob sie 0, 1 oder eine Million Äpfel enthält, es ist immer die gleiche Tasche. Tabellen sind genau das, Container, der Tabellenname muss beschreiben, was er enthält, nicht wie viele Daten er enthält. Außerdem handelt es sich bei dem Plural-Konzept eher um ein Konzept der gesprochenen Sprache (um festzustellen, ob es einen oder mehrere gibt).

Grund 2 . (Bequemlichkeit). Es ist einfacher, mit Singularnamen auszukommen, als mit Pluralnamen. Objekte können einen unregelmäßigen Plural oder gar keinen Plural haben, haben aber immer einen Singular (mit wenigen Ausnahmen wie Nachrichten).

  • Kunde
  • Bestellung
  • Benutzer
  • Status
  • Nachrichten

Grund 3 . (Ästhetik und Ordnung). Vor allem in Master-Detail-Szenarien liest sich dies besser, ist besser nach Namen geordnet und hat eine logischere Reihenfolge (Master zuerst, Detail als zweites):

  • 1.Bestellung
  • 2.orderDetail

Verglichen mit:

  • 1.orderDetails
  • 2.Aufträge

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

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

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

Grund 5 . (Globalisierung). Die Welt wird kleiner, Sie haben vielleicht ein Team mit verschiedenen Nationalitäten, nicht jeder hat Englisch als Muttersprache. Für einen Programmierer, dessen Muttersprache nicht Englisch ist, wäre es einfacher, an "Repository" statt an "Repositories" zu denken, oder an "Status" statt an "Statuses". Singuläre Namen können zu weniger Fehlern durch Tippfehler führen, Zeit sparen, weil man nicht überlegen muss, ob es "Child" oder "Children" heißt, und somit die Produktivität steigern.

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

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

Sie haben 3 Buchstaben, 3 Bytes und 3 zusätzliche Tastaturanschläge eingespart :)

Und schließlich können Sie denjenigen, die mit reservierten Namen durcheinander kommen, Namen wie:

  • Benutzer > LoginBenutzer, AppBenutzer, SystemBenutzer, CMSBenutzer,...

Oder verwenden Sie die berüchtigten eckigen Klammern [User]

325voto

Ian Mackinnon Punkte 12432

Ich ziehe es vor, die unflektiert Substantiv, das im Englischen zufällig Singular ist.

Die Beugung der Nummer des Tabellennamens führt zu orthografischen Problemen (wie viele der anderen Antworten zeigen), aber die Entscheidung, dies zu tun, weil Tabellen normalerweise mehrere Zeilen enthalten, ist auch semantisch löchrig. Dies wird noch deutlicher, wenn wir eine Sprache betrachten, die Substantive nach der Groß- und Kleinschreibung flektiert (wie die meisten Sprachen):

Da wir normalerweise etwas mit den Zeilen machen, warum setzen wir den Namen nicht in den Akkusativ? Wenn wir eine Tabelle haben, in die wir mehr schreiben als lesen, warum schreiben wir den Namen nicht im Dativ? Es ist eine Tabelle von etwas, warum nicht den Genitiv verwenden? Wir würden das nicht tun, weil der Tisch als abstrakter Behälter definiert ist, der unabhängig von seinem Zustand oder seiner Verwendung existiert. Die Beugung des Substantivs ohne einen präzisen und absoluten semantischen Grund ist Schwätzerei.

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

284voto

Brian Boatright Punkte 35158

Wenn Sie Object Relational Mapping Tools verwenden oder in Zukunft verwenden werden, empfehle ich Einzigartig .

Einige Tools wie LLBLGen können automatisch Pluralnamen wie Users zu User korrigieren, ohne den Tabellennamen selbst zu ändern. Warum ist das wichtig? Weil Sie wollen, dass es bei der Zuordnung wie User.Name aussieht und nicht wie Users.Name oder noch schlimmer, wie bei einigen meiner alten Datenbanken, die tblUsers.strName heißen, was im Code einfach nur verwirrend ist.

Meine neue Faustregel besagt, dass ich beurteilen muss, wie es aussehen wird, wenn es in ein Objekt umgewandelt wurde.

Eine Tabelle, die ich gefunden habe, die nicht zu der von mir verwendeten neuen Benennung passt, ist UsersInRoles. Aber es wird immer diese wenigen Ausnahmen geben, und selbst in diesem Fall sieht sie als UsersInRoles.Username gut aus.

266voto

Tom H Punkte 45699

Andere haben ziemlich gute Antworten gegeben, was die "Standards" angeht, aber ich wollte nur noch Folgendes 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 es mit Tabellennamen und Spezifität übertreiben sollten, aber vielleicht wäre etwas wie "Widget_Users" (wobei "Widget" der Name Ihrer Anwendung oder Website ist) angemessener.

146voto

Michael Haren Punkte 101002

Welche Konvention schreibt vor, dass Tabellen Singularnamen haben müssen? Ich dachte immer, es wären Pluralnamen.

Ein Benutzer wird zur Tabelle Benutzer hinzugefügt.

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

Diese Website ist anderer Meinung (aber ich stimme ihr nicht zu):
http://justinsomnia.org/writings/naming_conventions.html


Wie bereits von anderen erwähnt: Dies sind nur Richtlinien. Wählen Sie eine Konvention, die für Sie und Ihr Unternehmen/Projekt geeignet ist, und bleiben Sie dabei. Der Wechsel zwischen Singular und Plural oder die Abkürzung von Wörtern, die manchmal verwendet werden und manchmal nicht, ist viel ärgerlicher.

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