Wie soll ich meine Tabellen beim Erstellen einer neuen Datenbank benennen?
Singular: Client
oder Plural Clients
:?
database-design
naming-convention
John Isaiah Carmona
quelle
quelle
person NAMED 'fred' EARNS 20,000
(wobei die Namen in Großbuchstaben die Tabellen sind). 2) verwenden , den Namen des Unternehmens für die Sets zum BeispielPERSONNEL
,PAYROLL
,ORG_CHART
etc.Antworten:
Wie du willst. Sei aber einfach konsequent.
Persönlich bevorzuge ich Singular basierend auf dem, was in jeder Zeile gespeichert ist: Bestellung, Produkt, Benutzer, Artikel usw.
Dies entspricht meiner Modellierung (über Objektrollenmodellierung), bei der ich singuläre Entitäten / Typen verwende.
Bearbeiten:
Ein Grund dafür ist , dass mehrere schlägt fehl , wenn Sie Link - Tabellen haben:
Orders
,Products
geben würdeOrderProducts
oderOrdersProducts
. Weder klingt richtigOder Verlaufstabellen (natürlich können Sie dafür Schemata verwenden):
Orders
->OrdersHistory
oder (nein!)OrdersHistories
? Wäre nichtOrder
->OrderHistory
besser?quelle
Singular
oderPlural
?TablenameID
oderTablenameCode
odertablename_id
. Bei Plural-Tabellennamen landen Sie beiOrders.OrdersID
(was nicht richtig aussieht) oder dort,Orders.OrderID
wo Sie Plural für Tabellennamen verwenden, bei Spaltenpräfixen jedoch Singular.Bezüglich der Namen von Singular- und Plural-Tabellen scheint das Thema kontrovers zu sein, sollte es aber nicht sein.
Während eine Tabelle eine Sammlung mehrerer Datensätze ist, wird eine Tabelle nach der Definition des einen Datensatztyps benannt, den sie enthält. Wenn eine Tabelle einen anderen Namen als den des darin enthaltenen Datensatztyps haben darf, können Sie der Tabelle einen Pluralnamen geben, sodass Sie beispielsweise eine Employees-Tabelle haben können, die mehrere Employee-Datensätze enthält. Der SQL-Designer hat jedoch keine separaten Namen für Tabellen und Datensatztypen angegeben.
Bei objektorientierten Programmen, die die Daten verwenden, ist es logischer, wenn der Name eines Datensatztyps (und damit der Tabellenname) singulär bleibt, da er dem Namen der Klasse entspricht, die Sie zur Beschreibung eines Datensatzes verwenden würden .
Wenn Sie dann eine Sammlung im Programm identifizieren möchten, können Sie einen Plural oder besser einen geeigneten Modifikator verwenden, z. B. EmployeeList oder EmployeeArray.
Es gibt auch ein Problem mit unregelmäßigen Pluralformen für die automatische Codegenerierung und Programmierer, die unterschiedliche sprachliche Hintergründe oder Vorstellungen zur Bildung von Pluralformen in einem Programm haben.
Die englische Sprache ist keine gute und richtige Programmiersprache, und der Versuch, Datenbank- und Programmanweisungen mit der englischen Sprache in Einklang zu bringen, weil es besser klingt, eine dieser Anweisungen zu lesen, ist ein Fehler.
quelle
Genau wie bei der Antwort von @ gbn denke ich, dass dies eine Frage der Präferenzen ist, und genau wie bei ihm empfehle ich, dass jede Auswahl, die Sie getroffen haben, überall angewendet wird (zumindest in dieser DB). Konsistenz ist es wert.
Ich bevorzuge jedoch, dass ein Plural in
SELECT
Aussagen besser klingt :Ich meine, zumindest in diesem Fall befinden sich mehrere Personen in der Tabelle und einige von ihnen werden an den Kunden zurückgegeben.
quelle
"order" ist ein reserviertes Wort. "Bestellungen" gibt es nicht
"user" ist ein reserviertes Wort. "Benutzer" ist nicht
"session" ist ein reserviertes Wort. "Sessions" gibt es nicht
"result" ist ein reserviertes Wort. "Ergebnisse" gibt es nicht
"relative" ist ein reserviertes Wort. "Verwandte" ist nicht
...
Dies scheinen gebräuchliche Wörter zu sein, die in die Datenbank der Branche aufgenommen werden könnten. Mehrere Wörter scheinen als Schlüsselwörter weniger verbreitet zu sein als einzelne Wörter. Daher kann es hilfreich sein, mehrere Tabellennamen zu verwenden, um Konflikte mit SQL-Schlüsselwörtern zu vermeiden.
quelle
Ich glaube, SQL-Tabelle sollte Pluralnamen haben. Es liest sich einfach viel besser.
Eine Tabelle mit Bucheinträgen sollte als Bücher bezeichnet werden. Der ORM sollte dieselbe Konvention verwenden. Das Books-Objekt ist eine Sammlung und verwaltet alle Datensätze in der Books-Tabelle. Ein Buchobjekt steht über einem einzelnen Datensatz.
Dies macht die Codierung natürlicher.
quelle
table.field
ist soauthor.authorName
vollkommen in Ordnung. Holen Sie sich den authorName aus der author-Tabelle. Wenn es nur einen Autor gibt, sieht der Plural auch schlecht aus.authors.authorName
Wann gibt es nur einen Autor? Das ist imo verwirrender. Das ist natürlich viel besser geworden, jetzt haben wir den Satzstil mysql_ beseitigt und haben bessere Möglichkeiten, auf die Daten zuzugreifen :)Nachdem ich einige Jahre mit dem Programmieren gearbeitet habe, bin ich zu dem Schluss gekommen, dass Pluralisierung eine unnötige Komplikation ist. Meiner Meinung nach sollte ein Programmierer gemäß der KISS-Philosophie aus Zeit- und Effizienzgründen die faulste und einfachste Lösung für alle Probleme anstreben. Mit Singular haben Sie in allen Szenarien weniger Arbeitsaufwand.
quelle
Es ist eine sehr persönliche Sache. Ich benutze seit 30 Jahren die Singularform. Aber ich kann verstehen, warum Menschen Pluralisten mögen. Die Buchautoren sind interessant, da ich denke, dass Buchautoren nicht falsch sind. Ein Buch kann einen oder mehrere Autoren haben. Und Autoren haben möglicherweise ein oder mehrere Bücher geschrieben (z. B. mitgeschrieben). Es hängt auch nur davon ab, wie Sie mit Büchern umgehen, die von mehr als einem Autor geschrieben wurden. Ich stimme anderen Antworten zu. wähle eine und sei konsequent. In Bezug auf reservierte Wörter Fragen. Ich denke, es ist nicht schwer, Workaround-Namen zu finden. user -> app_user, session -> app_session, order -> customer_order
quelle
Wir betrachten die Dinge aus verschiedenen Perspektiven, und ich denke, die beiden Lager sind gekennzeichnet durch:
Singular ("Benutzer")
Die Person, die eine Korrelation zwischen dem Tabellennamen und der Tatsache erstellt, dass es sich um einen Container handelt, der mehrere Zeilen enthalten kann.
"Benutzercontainer" kann also mehrere Zeilen enthalten.
Plural ("Benutzer")
Die Person, die die Korrelation zwischen dem Tabellennamen und der Tatsache, dass es sich um einen Container handelt, nicht herstellt. Natürlich wissen sie, dass es sich um einen Container handelt, aber der Name enthält ihn nicht.
Beispiel:
Ein "Eierkarton" kann mehrere Eier enthalten. Dies ist jedoch offensichtlich, da sich die Behälterreferenz im Namen befindet und das Potenzial für mehrere Eier besteht. Bei dem singulären Tabellennamen "user" ist die Containerreferenz jedoch nicht im Namen enthalten. zB "user_container" wäre wahrscheinlich akzeptabel für Leute, die mehrere Namen bevorzugen.
Ich denke, das liegt auch daran, dass jahrelanger Pluralismus in den meisten Online-Unterrichtsmaterialien gängige Praxis ist.
Trotzdem denke ich, dass der Singular technisch genauer ist, da wir einen einzelnen Container benennen und Container mehrere (oder einzelne) Zeilen enthalten können.
Es erscheint den Leuten falsch, wenn sie den Tabellennamen mental mit dem Inhalt verknüpfen (mehrere Zeilen benötigen einen Pluralnamen), anstatt den benannten Container mental mit dem Inhalt zu verknüpfen (ein Container ermöglicht mehrere).
Wie immer, obwohl es oft kein Richtig und Falsch gibt, und es geht eher darum, was zum Szenario passt, und es ist wichtig, mit dem, was Sie wählen, im Einklang zu stehen.
Wenn Sie das Projekt ausschließlich durchführen und es keinen wirklichen Grund gibt, in eine der beiden Richtungen zu gehen, tun Sie, was Sie für am besten halten oder nur bevorzugen. Wenden Sie dasselbe in einem Entwicklerteam an und treffen Sie eine einstimmige Entscheidung.
quelle