Namenskonventionen für Datenbanken, Tabellen und Spalten?
Immer wenn ich eine Datenbank entwerfen, Frage ich mich immer, wenn es einen besten Weg für die Benennung ein Element in meiner Datenbank. Ganz oft Stelle ich mir die folgenden Fragen:
- Sollte Tabellennamen werden im plural?
- Sollten die Spaltennamen werden im singular?
- Sollte ich die Präfix-Tabellen oder Spalten?
- Sollte ich jedem Fall bei der Benennung von Objekten?
Gibt es irgendwelche empfohlenen Richtlinien gibt für die Benennung von Elementen in einer Datenbank?
InformationsquelleAutor der Frage GateKiller | 2008-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich empfehlen, Check-out von Microsoft SQL Server-Beispieldatenbanken:
https://github.com/Microsoft/sql-server-samples/releases/tag/adventureworks
Die AdventureWorks-Beispieldatenbank verwendet eine sehr klare und konsistente Namenskonvention, anhand der schema-Namen, die für die Organisation der Datenbank-Objekte.
InformationsquelleAutor der Antwort urini
Spät Antwort hier, aber in kurz:
Ausarbeitung:
(1) Was Sie tun müssen. Es gibt sehr wenige Dinge, die Sie muss eine bestimmte Weise, jedes mal, aber es gibt ein paar.
(2) Was sollte man wohl tun.
(3) Was man beachten sollte.
Präfix Spalten.
InformationsquelleAutor der Antwort Patrick Karcher
Ok, da sind wir bei einem Gewicht mit der Meinung:
Ich glaube, dass die Tabellennamen werden sollte, plural. Tabellen sind eine Sammlung (eine Tabelle) von Entitäten. Jede Zeile eine Einheit darstellt, und die Tabelle stellt die Sammlung. So würde ich eine Tabelle von Person Personen Personen (oder Personen, was immer Ihr Lust und Laune).
Für diejenigen, die gerne sehen, singular "entity names" in Abfragen, das ist, was ich verwenden würde-Tabelle aliases:
Etwas wie LINQ "von der person im Menschen, die person auswählen.Namen".
Als für 2, 3 und 4, Stimme ich mit @Lars.
InformationsquelleAutor der Antwort Matt Hamilton
Ich arbeite in einer Datenbank-support-team mit drei DBAs und unsere als Optionen sind:
Verwenden wir einzigartige Namen für Tabellen. - Tische neigen dazu, ein Präfix mit dem Namen des system (oder dessen Abkürzung). Dies ist nützlich, wenn das system Komplex ist wie können Sie das Präfix ändern, um die Gruppierung der Tabellen logisch miteinander (dh. reg_customer, reg_booking und regadmin_limits).
Für Felder, die wir erwarten würden, die Feld-Namen werden das Präfix/acryonm der Tabelle (d.h. cust_address1) und auch wir bevorzugen die Verwendung von einem standard-set von Suffixen ( _id für die PK, _cd für "code", _nm für "name", _nb für "Zahl" _dt "Datum").
Den Namen der Foreign-key-Feld soll die gleiche sein, wie die Primary key-Feld.
d.h.
Bei der Entwicklung eines neuen Projekts, würd ich dir empfehlen zu schreiben, die bevorzugt alle entity-Namen, Vorsilben und Abkürzungen, und geben Sie dieses Dokument an Ihre Entwickler. Dann, wenn Sie entscheiden, eine neue Tabelle zu erstellen, können Sie verweisen auf das Dokument statt "erraten", was die Tabelle und Felder aufgerufen werden soll.
InformationsquelleAutor der Antwort Guy
Person, keine Personen, wie Sie finden würde, wen man von den Datensätzen repräsentiert werden.
Ok. Das ist meine $0,02
InformationsquelleAutor der Antwort Lars Mæhlum
Ich bin auch für eine ISO/IEC 11179 Stil Namenskonvention, beachten Sie diese Richtlinien eher als präskriptive.
Sehen Datenelement-Namen auf Wikipedia:
"Tabellen sind Auflistungen von Entitäten, und Folgen Sie der Sammlung naming-Richtlinien. Ideal ist eine Sammelbezeichnung verwendet wird: zB., Personal. Plural ist auch richtig: die Mitarbeiter. Falsche Namen sind: Mitarbeiter, tblEmployee, und employeetable-Tabelle."
Wie immer gibt es Ausnahmen zu Regeln, z.B. eine Tabelle, die hat immer genau eine Zeile kann besser sein, mit einem einzigartigen Namen z.B. eine config-Tabelle. Und die Konsistenz ist von größter Bedeutung: prüfen Sie, ob Ihr shop hat eine Konvention und wenn ja, gehen Sie; wenn Sie es nicht mögen, dann tun Sie einen business-case haben Sie es geändert, eher als der lone ranger.
InformationsquelleAutor der Antwort onedaywhen
unsere Präferenz:
Sollte Tabellennamen werden im plural?
Nie. Die Argumente, die für Sie eine Sammlung sinnvoll, aber man weiß ja nie, was die Tabelle ist enthalten (0,1 oder viele Artikel). Plural-Regeln machen die Benennung unnötig kompliziert. 1 Haus, 2 Häuser, Maus, gegen Mäuse, person, gegen Leute, und wir haben noch nicht einmal angeschaut, alle anderen Sprachen.
Update person set property = 'value'
wirkt auf jede person in der Tabelle.Select * from person where person.name = 'Greg'
gibt eine Sammlung/rowset person Zeilen.Sollten die Spaltennamen werden im singular?
Normalerweise ja, es sei denn, Sie brechen Normalisierung Regeln.
Sollte ich die Präfix-Tabellen oder Spalten?
Meist ein Plattform-Präferenz. Wir bevorzugen Präfix Spalten mit dem Tabellennamen. Wir nicht-Präfix-Tabellen, aber wir tun Präfix Ansichten (v_) und stored_procedures (sp_ oder f_ (function)). Das hilft Menschen, die versuchen möchten, upday v_person.Alter, das ist tatsächlich ein berechnetes Feld in einer Ansicht (die kann nicht Aktualisiert werden, sowieso).
Es ist auch ein guter Weg, um zu vermeiden, keyword-Kollision (die Lieferung.aus Pausen, aber delivery_from nicht).
Es macht den code Ausführlicher ist, aber oft aids in der Lesbarkeit.
bob = new person()
bob.person_name = 'Bob'
bob.person_dob = '1958-12-21'
... ist sehr gut lesbar und explizit. Dies kann aus der hand, obwohl:
customer.customer_customer_type_id
zeigt eine Beziehung zwischen dem Kunden und der customer_type Tabelle zeigt die Primärschlüssel der customer_type Tabelle (customer_type_id) und wenn Sie jemals 'customer_customer_type_id' während dem Debuggen einer Abfrage, die Sie sofort wissen, wo es ist aus dem (Kunden-Tabelle).
oder wo haben Sie die M-M Beziehung zwischen customer_type und customer_category (nur bestimmte Typen sind erhältlich, um bestimmte Kategorien)
customer_category_customer_type_id
... ist ein wenig (!) auf der langen Seite.
Sollte ich jedem Fall bei der Benennung von Objekten?
Ja - Kleinschreibung :), mit Unterstrichen. Diese sind sehr gut lesbar und cross-Plattform. Zusammen mit den 3 oben genannten ist es auch sinnvoll.
Meistens sind diese Vorlieben aber. - So lange wie Sie konsistent sind, sollte es vorhersehbar für jeden, es zu Lesen.
InformationsquelleAutor der Antwort Albert
Werfen Sie einen Blick auf ISO 11179-5: Naming and identification principles
Sie können es hier erhalten: http://metadata-standards.org/11179/#11179-5
Ich darüber gebloggt, es eine Weile wieder hier: ISO-11179-Namenskonventionen
InformationsquelleAutor der Antwort SQLMenace
Höre ich das argument die ganze Zeit, ob oder nicht eine Tabelle ist pluralisiert ist alles eine Frage des persönlichen Geschmacks, und es gibt keine best-practice. Ich glaube nicht, das ist wahr, vor allem als Programmierer, im Gegensatz zu einem DBA. Soweit ich informiert bin, gibt es keine legitimen Gründe, in den Plural eine Tabelle anderen Namen als "Es macht einfach Sinn für mich, weil es eine Sammlung von Objekten," während es legitim Gewinne im code durch einzigartige Tabellennamen. Zum Beispiel:
Vermeidet es bugs und Fehler, verursacht durch plural zu Unklarheiten. Programmierer sind nicht gerade bekannt für Ihre Rechtschreib-know-how und pluralizing einige Wörter sind verwirrend. Zum Beispiel, ist die plural-Wort-Ende 'es' oder nur 's'? Ist es Personen oder Menschen? Wenn Sie an einem Projekt arbeiten mit großen teams, dies kann zu einem Problem werden. Zum Beispiel, eine Instanz, wo ein team-Mitglied nutzt die falsche Methode, um den Plural einer Tabelle, die er schafft. Durch die Zeit, die ich interagieren mit dieser Tabelle, es ist verwendet überall im code, den ich keinen Zugriff habe oder würde zu lange dauern zu beheben. Das Ergebnis ist, ich habe zu erinnern, um Zauber die Tabelle falsch, jedes mal ich es verwenden. Etwas sehr ähnliches passiert mir das. Je einfacher Sie es machen können, für jedes Mitglied des Teams, konsequent und leicht zu verwenden, um die genauen, richtigen Tabellennamen ohne Fehler oder mit look-up-Tabelle Namen, desto besser. Die singular-version ist viel einfacher zu handhaben in einer team-Umgebung.
Wenn Sie die singular-version den Namen einer Tabelle UND stellen Sie den primär-Schlüssel (mit dem Namen der Tabelle, haben Sie jetzt den Vorteil, leicht zu bestimmen, eine Tabelle aus einer primary key-oder Umgekehrt über den code alleine. Sie können gegeben werden, eine variable mit einer Tabelle Namen, verketten, "Id" am Ende, und Sie haben jetzt den Primärschlüssel von der Tabelle per code, ohne eine zusätzliche Abfrage. Oder Sie können schneiden Sie "Id" aus dem Ende des einen primary key zu bestimmen, den Namen einer Tabelle per code. Wenn Sie "id", ohne den Namen einer Tabelle für den Primärschlüssel, dann kann man nicht per code bestimmen Sie den Namen der Tabelle aus der Primärschlüssel. Außerdem, die meisten Leute, die den Plural für Tabellennamen und Präfix PK Spalten mit dem Tabellennamen verwenden Sie die singular-version der name der Tabelle in der PK (z.B. Status und statusId), macht es unmöglich, das zu tun.
Wenn Sie den Tabellennamen in der Einzahl, Sie können Sie haben, entsprechen die Namen der Klassen, die Sie vertreten. Noch einmal, dies vereinfacht den code und erlauben Ihnen zu tun, wirklich nette Dinge, wie z.B. die Instanziierung einer Klasse, die nichts, aber der name der Tabelle. Es auch, nur lässt sich der code mehr konsistent, was führt zu...
Wenn Sie den Tabellennamen in der Einzahl, es macht Ihr Namensschema konsequent, organisiert und leicht zu pflegen in jeder Lage. Sie wissen, dass in jedem Fall in deinem code, ob es in eine Spalte name, als der name einer Klasse, oder wie der name der Tabelle, es ist die gleiche genaue Bezeichnung. Dies ermöglicht Ihnen die Globale Suche zu sehen, überall, wo Daten verwendet werden. Wenn Sie den Plural von Namen einer Tabelle, es wird Fälle geben, wo Sie die singular-version, die Tabellennamen (die Klasse verwandelt sich in, in den primär-Schlüssel). Es macht einfach Sinn, um nicht einige Fälle, in denen Ihre Daten bezeichnet man als plural und einige Instanzen singular.
Um es zusammenzufassen, wenn Sie in den Plural Ihrer Tabelle die Namen, die Sie verlieren alle Arten von Vorteile, um Ihren code intelligenter und einfacher zu handhaben. Es kann sogar Fälle geben, wo Sie haben, um lookup-Tabellen/arrays zu konvertieren Sie Ihre Tabelle von Namen zu Objekt-oder lokalen code-Namen, die Sie hätten vermeiden können. Singular Tabelle Namen, obwohl Sie vielleicht das Gefühl ein wenig seltsam auf den ersten, bieten erhebliche Vorteile gegenüber pluralisiert Namen und, glaube ich, sind best practice.
InformationsquelleAutor der Antwort dallin
Ich weiß, das ist spät, um das Spiel, und die Frage wurde beantwortet, sehr gut schon, aber ich möchte meine Meinung auf #3 in Bezug auf das Präfix für Spaltennamen.
Alle Spalten sollte den Namen mit einem Präfix, das ist eindeutig in der Tabelle, die in definiert sind.
E. g. Tabellen "Kunde" und "Adresse" ist, gehen wir mit Präfix "cust" und "addr", respectively. "Kunde" hätte "cust_id", "cust_name", etc. ". Adresse mit" hätte "addr_id", "addr_cust_id" (FK zurück zum Kunden), "addr_street", etc. .
Als ich das erste präsentiert mit dieser Norm, ich war tot-gegen ihn eingestellt; ich hasste die Idee. Ich konnte es nicht ertragen, die Idee von allen, die zusätzliche Eingabe und Redundanz. Nun, ich habe genug Erfahrung damit, ich würde nie wieder gehen.
Das Ergebnis dabei ist, dass alle Spalten in Ihrer Datenbank-schema eindeutig sind. Es ist ein großer Vorteil für diese, die Trümpfe alle Argumente gegen Sie (meiner Meinung nach natürlich):
Können Sie durchsuchen Sie Ihre gesamte code-Basis und zuverlässig finden, jede Zeile code, die berührt, die einer bestimmten Spalte.
Den nutzen von #1 ist unglaublich riesig. Ich kann verbitten sich eine Spalte und genau wissen, welche Dateien aktualisiert werden müssen, bevor die Spalte kann sicher entfernt werden, aus dem schema. Ändern kann ich die Bedeutung einer Spalte und wissen genau, was der code refaktorisiert werden. Oder kann ich einfach sagen, wenn Daten aus einer Spalte ist sogar in einem bestimmten Teil des Systems. Ich kann nicht zählen die Anzahl der Zeiten hat sich eine potenziell riesige Projekt in eine einfache eine, noch die Menge der Stunden, die wir gespeichert haben, die in der Entwicklung arbeiten.
Anderen, relativ geringen Vorteil ist es, dass Sie nur die Verwendung von Tabellen-Aliasnamen, wenn Sie eine self-join:
InformationsquelleAutor der Antwort Granger
Meine Meinungen über diese sind:
1) Nein, die Tabelle, sollten die Namen der singular.
Während es scheint Sinn zu machen für die einfache Auswahl (
select * from Orders
), es macht weniger Sinn für die OO-äquivalent (Orders x = new Orders
).Einer Tabelle in einer DB ist wirklich der Satz, die Person, macht es mehr Sinn, wenn Sie erst einmal mit set-Logik:
Letzten Zeile, die eigentliche Logik der Verknüpfung, sieht verwirrend mit plural für Tabellennamen.
Ich bin mir nicht sicher über immer über einen alias (wie Matt schon sagt) löscht.
2) Sie sollten einzigartig, da Sie nur 1 Eigenschaft
3) Niemals, wenn die Spalte name nicht eindeutig ist (wie oben, wo Sie beide haben eine Spalte mit der Bezeichnung [Taste]) der name der Tabelle (oder dessen alias) unterscheiden kann Sie gut genug. Sie wollen Abfragen schnell eingeben und einfach - Präfixe hinzufügen unnötige Komplexität.
4) Was immer du willst, würde ich vorschlagen, CapitalCase
Ich glaube nicht, dass es eine Reihe von absoluten Richtlinien auf diesen.
Solange alles, was Sie wählen ist konsistent über die Anwendung oder DB ich glaube nicht, dass es wirklich wichtig ist.
InformationsquelleAutor der Antwort Keith
Meiner Meinung nach:
Jedoch, wie es bereits erwähnt wurde, jede Konvention ist besser als keine Konvention. Egal wie Sie sich entscheiden, es zu tun, es zu dokumentieren, so dass künftige änderungen Folgen den gleichen Konventionen.
InformationsquelleAutor der Antwort Thomas Owens
InformationsquelleAutor der Antwort Bell
Ich denke, die beste Antwort auf jede dieser Fragen würde gegeben sein durch Sie und Ihr team. Es ist viel mehr wichtig, um eine Namenskonvention, die dann, wie genau die Namenskonvention ist.
Da gibt es keine richtige Antwort, Sie sollten sich etwas Zeit nehmen (aber nicht zu viel) und wählen Sie Ihre eigenen Konventionen und - hier der wichtige Teil - stick, um es.
Natürlich ist es gut, zu suchen einige Informationen über Normen auf das, was ist, was Sie fordern, aber nicht ängstlich oder besorgt über die Anzahl der unterschiedlichen Antworten, die Sie bekommen könnten: die eine, die scheint besser für Sie.
Nur für den Fall, hier sind meine Antworten:
InformationsquelleAutor der Antwort Mario Marinato
Namenskonventionen erlauben, die Entwicklungs-team zu entwerfen discovereability und Wartungsfreundlichkeit im Mittelpunkt des Projekts.
Eine gute Namenskonvention braucht Zeit sich zu entwickeln, aber wenn Sie einmal im Ort, es ermöglicht dem team, um vorwärts zu bewegen mit einer gemeinsamen Sprache. Eine gute Namenskonvention wächst organisch mit dem Projekt. Eine gute Namenskonvention leicht zurecht mit den Veränderungen in der längsten und wichtigsten phase des software-Lifecycles - service management in der Produktion.
Hier sind meine Antworten:
Benennen ist schwer, aber in jeder organisation gibt es jemanden, der die Dinge zu nennen und in jedem software-team es sollte jemand sein, der die Verantwortung für die Bezeichnungen standards und gewährleistet, dass die Benennung Probleme wie sec_idsec_value und security_id Holen Sie sich frühzeitig geklärt werden bevor Sie sich fest in das Projekt.
Also, was sind die Grundsätze einer guten Namenskonventionen und standards: -
Ihre Lösung-domain
klar sind alle
Spaltennamen
InformationsquelleAutor der Antwort winsql
Hier ist ein link, der bietet ein paar Möglichkeiten. Ich war auf der Suche für eine einfache spec konnte ich Folgen, anstatt verlassen sich auf eine teilweise definiert.
http://justinsomnia.org/writings/naming_conventions.html
InformationsquelleAutor der Antwort Chris
Tabellennamen sollten immer in der Einzahl, denn Sie stellen eine Menge von Objekten. Wie Sie sagen, die Herde zu bezeichnen eine Gruppe von Schafen oder Herde tun, bezeichnen eine Gruppe von Vögeln. Keine Notwendigkeit für plural. Wenn ein table-name ist die Zusammensetzung aus zwei Namen und die Namensgebung steht im plural wird es schwer zu wissen, ob der plural-name sollte das erste Wort oder das zweite Wort oder beides.
Es ist die Logik – Objekt.Instanz, nicht Objekte.Instanz. Oder TableName.Spalte TableNames nicht.Spalte(N).
Microsoft SQL ist nicht case sensitive, es ist leichter zu Lesen Tabellennamen, wenn Großbuchstaben verwendet, um separate Tabellen-oder Spaltennamen, wenn Sie aus zwei oder mehr Namen.
InformationsquelleAutor der Antwort Annie
Tabelle-Name: Es sollte einzigartig, als es eine singuläre Entität repräsentiert ein reales Objekt und nicht Objekte, die singlular.
Spalte-Name: sollte Es im singular nur dann vermittelt, dass es einen atomaren Wert und bestätigen, um die Normalisierung der Theorie. Wenn doch, es gibt n die Anzahl der gleichen Art von Eigenschaften, dann sollten Sie auch Suffix mit 1, 2, ..., n, etc.
Voranstellen Tabellen /Spalten: Es ist ein großes Thema, wird später besprechen.
Gehäuse: Es sollte Camel-case
Mein Freund, Patrick Karcherbitte ich Sie, bitte schreiben Sie nicht alles, was beleidigend für jemand, der, wie Sie schrieb, "•Weiter, Fremdschlüssel muss den Namen konsequent in verschiedenen Tabellen. Es sollte legal sein, schlagen Sie jemanden, der dies nicht tut.". Ich habe noch nie getan, diese Fehler, mein Freund Patrick, aber ich Schreibe in der Regel. Was ist, wenn Sie zusammen planen, Sie zu schlagen? 🙂
InformationsquelleAutor der Antwort vishesh marwah
Sehr spät zur party, aber ich wollte noch hinzufügen meine zwei Cent über spaltenpräfixe
Scheint es zwei wichtigsten Argumente für die Verwendung der table_column (oder tableColumn) Benennung standard für Spalten, die beide auf der Grundlage der Tatsache, dass die Spalte name selbst ist einzigartig in der gesamten Datenbank:
1), die Sie nicht haben, um geben Sie den Tabellennamen und/oder Spalten-Aliase in Abfragen die ganze Zeit
2) können Sie ganz einfach durchsuchen Sie Ihr gesamtes code für die Spalte name
Ich denke, beide Argumente sind falsch. Die Lösung für beide Probleme ohne Verwendung von Präfixen ist einfach. Hier mein Vorschlag:
Verwenden Sie immer den Namen der Tabelle in der SQL. E. g., verwenden Sie immer die Tabelle.Spalte anstelle der Spalte.
Es offensichtlich löst 2) wie können Sie jetzt nur die Suche für die Tabelle.Spalte statt table_column.
Aber ich kann hören, wie Sie Schreien, wie Sie zu lösen bedeutet es 1)? Es war genau um dies zu vermeiden. Ja, es war, aber die Lösung war schrecklich entstellt. Warum? Gut, die Präfix-Lösung hinausläuft:
Um zu vermeiden, geben Sie Tabelle.Spalte, wenn es die Zweideutigkeit, die Sie Namen alle Ihre Spalten table_column!
Aber das bedeutet, dass Sie von nun an IMMER haben, schreiben Sie den Namen der Spalte jedes mal, wenn Sie eine Spalte angeben. Aber wenn Sie das tun, egal, was ist der Vorteil gegenüber immer ausdrücklich schreiben Tabelle.Spalte? Genau, es ist kein Vorteil, es ist die exakt gleiche Anzahl an Zeichen zu geben.
edit: ja, ich bin mir bewusst, dass die Benennung der Spalten mit dem Präfix erzwingt die korrekte Verwendung in der Erwägung, dass mein Ansatz stützt sich auf die Programmierer
InformationsquelleAutor der Antwort janb
Wesentlichen Datenbank-Konventionen (und Stil) (hier klicken für ausführliche Beschreibung)
Tabelle Namen
wählen Sie kurze, eindeutige Namen, wobei nicht mehr als ein oder zwei Wörter
unterscheiden Tabellen leicht
ermöglicht die Benennung von eindeutigen Feldnamen sowie-lookup und verknüpfen von Tabellen
geben Tabellen einzigartigen Namen, nie im plural (update: ich habe noch einverstanden mit den Gründen, die für dieses übereinkommen, aber die meisten Leute wirklich wie plural für Tabellennamen, also habe ich aufgeweicht mein Standpunkt)... Folgen Sie dem link oben bitte
InformationsquelleAutor der Antwort AZ_
InformationsquelleAutor der Antwort Ian Boyd
Tabellennamen im singular. Lassen Sie uns sagen, Sie wurden die Modellierung eine realtionship zwischen jemandem und Ihre Adresse.
Zum Beispiel, wenn Sie beim Lesen ein datamodel würden Sie bevorzugen
"jede person kann live bei 0,1 oder viele-Adresse." oder
"jedes Menschen Leben können, bei 0,1 oder viele Adressen.'
Ich denke, es ist einfacher zu pluralise-Adresse, anstatt zu formulieren, die Menschen als person. Plus kollektive Substantive sind Recht Häufig dissimlar der singular-version.
InformationsquelleAutor der Antwort paul444
Diese sind die Konventionen, die ich gelehrt wurde, aber Sie sollte sich an alles, was Sie developement Schlauch verwendet.
InformationsquelleAutor der Antwort Lord Future