Ich habe ein paar Fragen / Antworten auf StackOverflow gelesen, um die 'besten' zu finden, oder sollte ich sagen, muss akzeptiert werden, um Tabellen in einer Datenbank zu benennen.
Die meisten Entwickler neigen dazu, die Tabellen abhängig von der Sprache zu benennen, für die die Datenbank erforderlich ist (JAVA, .NET, PHP usw.). Ich habe jedoch das Gefühl, dass dies nicht richtig ist.
Die Art und Weise, wie ich bisher Tabellen benannt habe, ist wie folgt:
doctorsMain
doctorsProfiles
doctorsPatients
patientsMain
patientsProfiles
patientsAntecedents
Die Dinge, die mich betreffen, sind:
- Lesbarkeit
- Schnelle Identifizierung des Moduls, von dem die Tabelle stammt (Ärzte || Patienten)
- Leicht zu verstehen, um Verwirrungen zu vermeiden.
Ich würde gerne Meinungen zu Namenskonventionen lesen. Danke dir.
database
database-design
MarioRicalde
quelle
quelle
Ich benutze normalerweise PascalCase und die Entitäten sind singulär:
Es ahmt die Namenskonventionen für Klassen in meiner Anwendung nach und hält alles ziemlich ordentlich, sauber, konsistent und für alle leicht verständlich.
quelle
Bei SQL-Unterstützungen wird die Groß- und Kleinschreibung nicht berücksichtigt
Underscores_Scheme
. Moderne Software unterstützt jedoch jede Art von Namensschema. Manchmal können jedoch einige böse Fehler, Irrtümer oder menschliche Faktoren dazu führen,UPPERCASINGEVERYTHING
dass diejenigen, die beidePascal_Case
und dasUnderscore_Case
Schema ausgewählt haben , mit all ihren Nerven an einem guten Ort leben.quelle
Eine Zusammenfassung der meisten der oben genannten:
Dann können Sie Namen einfach (sogar automatisch) zwischen Umgebungen übersetzen.
Aber ich möchte noch eine weitere Überlegung hinzufügen: Möglicherweise stellen Sie fest, dass es andere Faktoren gibt, wenn Sie von einer Klasse in Ihrer App zu einer Tabelle in Ihrer Datenbank wechseln: Das Datenbankobjekt verfügt über Ansichten, Trigger, gespeicherte Prozesse, Indizes, Einschränkungen usw. - das brauche auch Namen. So können Sie beispielsweise nur über Ansichten auf Tabellen zugreifen, bei denen es sich normalerweise nur um ein einfaches "select * from foo" handelt. Diese können als Tabellenname mit nur dem Suffix '_v' identifiziert werden, oder Sie können sie in ein anderes Schema einfügen. Der Zweck einer solchen einfachen Abstraktionsschicht besteht darin, dass sie bei Bedarf erweitert werden kann, um Änderungen in einer Umgebung zuzulassen, um Auswirkungen auf die andere zu vermeiden. Dies würde die obigen Namensvorschläge nicht brechen - nur ein paar weitere Dinge, die berücksichtigt werden müssen.
quelle
Ich benutze Unterstriche. Ich habe vor einigen Jahren ein Oracle-Projekt durchgeführt, und es schien, als hätte Oracle alle meine Objektnamen in Großbuchstaben geschrieben, was jedes Gehäuseschema in die Luft jagt. Ich bin nicht wirklich ein Oracle-Typ, also gab es vielleicht einen Weg, den ich nicht kannte, aber ich habe Unterstriche verwendet und bin nie zurückgegangen.
quelle
Da die Frage nicht spezifisch für eine bestimmte Plattform oder DB-Engine ist, muss ich für maximale Portabilität sagen, dass Sie immer Tabellennamen in Kleinbuchstaben verwenden sollten.
/ [a-z _] [a-z0-9 _] * / ist wirklich das einzige Muster von Namen, das nahtlos zwischen verschiedenen Plattformen übersetzt wird. Kleinbuchstaben alphanumerisch + Unterstrich funktionieren immer konsistent.
Wie an anderer Stelle erwähnt, sollten Beziehungs- (Tabellen-) Namen singulär sein: http://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html
quelle
Ich stimme eher den Leuten zu, die sagen, dass dies von den Konventionen der von Ihnen verwendeten Sprache abhängt (z. B. PascalCase für C # und snake_case für Ruby).
Niemals camelCase.
quelle
Nachdem ich viele andere Meinungen gelesen habe, denke ich, dass es sehr wichtig ist, die Namenskonventionen der Sprache zu verwenden. Konsistenz ist wichtiger als Namenskonventionen nur, wenn Sie der einzige Entwickler der Anwendung sind (und sein werden). Wenn Sie Lesbarkeit wünschen (was von großer Bedeutung ist), verwenden Sie besser die Namenskonventionen für jede Sprache. In MySQL zum Beispiel empfehle ich nicht, CamelCase zu verwenden, da nicht alle Plattformen zwischen Groß- und Kleinschreibung unterscheiden. Hier geht der Unterstrich also besser.
quelle
camelCase
biscamelcase
. Schlangenkoffer zu haben ist also viel besser. Auch überModern software however supports any kind of naming scheme
Sie haben keine Garantien, dass yop Code für die letzte Version soft schreibt. Insbesondere für Datenbankversionen ist die Aktualisierung der Version nicht trivial, wenn Sie an Regressionskosten denken.Das sind meine fünf Cent. Ich bin zu dem Schluss gekommen, dass es zwei beste Möglichkeiten gibt, wenn DBs von verschiedenen Anbietern für ein Projekt verwendet werden:
Der Grund ist, dass einige Datenbanken alle Zeichen in Großbuchstaben und andere in Kleinbuchstaben konvertieren. Also, wenn Sie es haben
myTable
, wirdMYTABLE
odermytable
wann Sie mit DB arbeiten werden.quelle
Leider gibt es keine "beste" Antwort auf diese Frage. Wie @David feststellte, ist Konsistenz weitaus wichtiger als die Namenskonvention.
quelle
Die Trennung von Wörtern ist sehr unterschiedlich. Sie müssen also auswählen, was Ihnen besser gefällt. Gleichzeitig scheint es nahezu Konsens zu geben, dass der Tabellenname singulär sein sollte.
quelle
Namenskonventionen existieren im Rahmen einer Sprache, und verschiedene Sprachen haben unterschiedliche Namenskonventionen.
SQL unterscheidet standardmäßig nicht zwischen Groß- und Kleinschreibung. Daher ist snake_case eine weit verbreitete Konvention. SQL unterstützt auch begrenzte Bezeichner. Also gemischter Fall in einer Option wie camelCase (Java, wo Felder == Spalten) oder PascalCase (C #, wo Tabellen == Klassen und Spalten == Felder). Wenn Ihre DB-Engine den SQL-Standard nicht unterstützen kann, ist dies das Problem. Sie können sich dafür entscheiden, damit zu leben oder einen anderen Motor zu wählen. (Und warum C # einfach anders sein musste, ist ein Punkt der Erschwerung für diejenigen von uns, die in beiden codieren.)
Wenn Sie beabsichtigen, in Ihren Diensten und Anwendungen immer nur eine Sprache zu verwenden, verwenden Sie die Konventionen dieser Sprache auf allen Ebenen. Verwenden Sie andernfalls die am häufigsten verwendeten Konventionen der Sprache in dem Bereich, in dem diese Sprache verwendet wird.
quelle