So mache ich das:
- Tabellennamen sind niedriger Fall verwendet Unterstrichen um Worte zu trennen, und sind Einzahl (zB
foo
,foo_bar
usw. - Ich habe im Allgemeinen (nicht immer) eine Auto-Inkrement-PK. Ich verwende die folgende Konvention:
tablename_id
(zBfoo_id
,foo_bar_id
usw.). - Wenn eine Tabelle eine Spalte enthält, die ein Fremdschlüssel ist, kopiere ich einfach den Spaltennamen dieses Schlüssels aus der Tabelle, aus der er stammt. Angenommen, die Tabelle
foo_bar
hat die FKfoo_id
(wofoo_id
ist die PK vonfoo
). - Bei der Definition von FKs zur Durchsetzung der referenziellen Integrität verwende ich Folgendes:
tablename_fk_columnname
(z. B. Beispiel 3foo_bar_foo_id
). Da es sich um eine Kombination aus Tabellenname und Spaltenname handelt, ist garantiert, dass sie innerhalb der Datenbank eindeutig ist. - Ich ordne die Spalten wie folgt: PKs, FKs, dann den Rest der Spalten alphabetisch
Gibt es einen besseren, standardisierteren Weg, dies zu tun?
mysql
naming-conventions
mysql-workbench
StackOverflowNewbie
quelle
quelle
id_tableB
=> oh keine anders benannte Spalte zu habenid
, sieht die Konsistenz vonid_tableB
=>id_tableB
einfach ordentlicher aus ... oder wie OP es tut:foo_id
=>foo_id
stattfoo_id
=>id
Antworten:
Ich würde das in erster Linie sagen: Seien Sie konsequent.
Ich denke, Sie sind mit den Konventionen, die Sie in Ihrer Frage skizziert haben, fast da. Ein paar Kommentare:
Die Punkte 1 und 2 sind meiner Meinung nach gut.
Punkt 3 - leider ist dies nicht immer möglich. Überlegen Sie , wie Sie mit einer einzigen Tabelle zu bewältigen wäre ,
foo_bar
die Spaltenfoo_id
und dieanother_foo_id
beide die Referenztabellenspalte.foo
foo_id
Vielleicht möchten Sie überlegen, wie Sie damit umgehen sollen. Dies ist allerdings ein bisschen wie ein Eckfall!Punkt 4 - Ähnlich wie Punkt 3. Möglicherweise möchten Sie am Ende des Fremdschlüsselnamens eine Zahl einfügen, um mehr als eine Referenzierungsspalte zu erhalten.
Punkt 5 - Ich würde dies vermeiden. Es bietet Ihnen wenig und wird zu Kopfschmerzen, wenn Sie zu einem späteren Zeitpunkt Spalten zu einer Tabelle hinzufügen oder daraus entfernen möchten.
Einige andere Punkte sind:
Konventionen zur Indexbenennung
Möglicherweise möchten Sie eine Namenskonvention für Indizes einführen. Dies ist eine große Hilfe für alle Datenbankmetadaten, die Sie möglicherweise ausführen möchten. Zum Beispiel möchten Sie vielleicht nur einen Index aufrufen
foo_bar_idx1
oderfoo_idx1
- ganz nach Ihren Wünschen, aber eine Überlegung wert.Singular vs Plural Spaltennamen
Es könnte eine gute Idee sein, das heikle Problem von Plural vs Single in Ihren Spaltennamen sowie in Ihren Tabellennamen anzusprechen. Dieses Thema führt häufig zu großen Debatten in der DB-Community. Ich würde mich an singuläre Formen sowohl für Tabellennamen als auch für Spalten halten. Dort. Ich habe es gesagt.
Die Hauptsache hier ist natürlich Konsistenz!
quelle
documenttype
oderdocument_type
. Ich würde das letztere bevorzugen, aber die meiste Zeit habe ich eine Beziehung von vielen zu vielen und ich brauche einen Tisch, der aussieht wiedocument_document_type
. Irgendwelche Vorschläge, wie man damit umgeht?Konsistenz ist der Schlüssel zu jedem Namensstandard. Solange es logisch und konsistent ist, sind Sie zu 99% da.
Der Standard selbst ist eine sehr persönliche Präferenz. Wenn Ihnen Ihr Standard gefällt, können Sie ihn ausführen.
Um Ihre Frage direkt zu beantworten - nein, MySQL hat keine bevorzugte Namenskonvention / Standard, daher ist es in Ordnung, Ihre eigenen zu rollen (und Ihre scheint logisch).
quelle
MySQL hat eine kurze Beschreibung ihrer mehr oder weniger strengen Regeln:
https://dev.mysql.com/doc/internals/en/coding-style.html
Häufigster Codierungsstil für MySQL von Simon Holywell:
http://www.sqlstyle.guide/
Siehe auch diese Frage: Gibt es veröffentlichte Richtlinien für den Codierungsstil für SQL?
quelle
Zum Glück sind PHP-Entwickler keine "Camel Case Bigots" wie einige mir bekannte Entwicklungsgemeinschaften.
Ihre Konventionen klingen gut.
Nur solange sie a) einfach und b) konsistent sind - ich sehe keine Probleme :)
PS: Ich persönlich denke 5) ist übertrieben ...
quelle
Einfache Antwort: NEIN
Nun, zumindest eine Namenskonvention als solche, die von Oracle oder der Community empfohlen wird. Nein, im Grunde müssen Sie sich jedoch der Einhaltung der Regeln und Grenzwerte für Bezeichner bewusst sein, wie in der MySQL-Dokumentation angegeben: https://dev.mysql.com /doc/refman/8.0/de/identifiers.html
In Bezug auf die Namenskonvention, die Sie befolgen, halte ich es für in Ordnung, nur die Nummer 5 ist ein wenig unnötig. Ich denke, die meisten visuellen Tools zum Verwalten von Datenbanken bieten eine Option zum Sortieren von Spaltennamen (ich verwende DBeaver und es hat es) Wenn der Zweck eine schöne visuelle Darstellung Ihres Tisches hat, können Sie diese Option verwenden, die ich erwähne.
Aus persönlicher Erfahrung würde ich Folgendes empfehlen:
lower_case_table_names
ist das nicht richtig konfiguriert und Ihr Server wirft Fehler aus, indem er einfach Ihren camelCase- oder PascalCase-Standard nicht erkennt (Groß- / Kleinschreibung beachten).Und was ist mit der Benennung "Plural vs Singular"? Nun, dies ist meistens eine Situation persönlicher Vorlieben. In meinem Fall versuche ich, Pluralnamen für Tabellen zu verwenden, da ich denke, dass eine Tabelle eine Sammlung von Elementen oder ein Paket ist, das Elemente enthält. Daher ist ein Pluralname für mich sinnvoll. und singuläre Namen für Spalten, weil ich Spalten als Attribute sehe, die diese Tabellenelemente singulär beschreiben.
quelle