Ich bin mir nicht ganz sicher, ob es einen Standard in der Branche oder sonst gibt, also frage ich hier.
Ich benenne eine Benutzer -Tabelle und bin mir nicht ganz sicher, wie ich die Mitglieder benennen soll.
user_id
ist offensichtlich, aber ich frage mich, ob ich allen anderen Feldern "user_" voranstellen soll oder nicht.
benutzername user_age
oder nur Name und Alter, etc ...
Präfixe wie diese sind sinnlos, es sei denn, Sie haben etwas etwas Willkürlicheres; wie zwei Adressen. Dann könnten Sie address_1, address_2, address_home usw. verwenden.
Identisch mit Telefonnummern.
Aber für etwas so statisches wie Alter, Geschlecht, Benutzername usw .; Ich würde sie einfach so lassen.
Nur um es Ihnen zu zeigen Wenn Sie alle diese Felder voranstellen möchten, sehen Ihre Abfragen möglicherweise so aus:
%Vor%Wenn es leicht sein könnte
%Vor%Ich stimme den anderen Antworten zu, die vorschlagen, die Attribute mit Ihren Tabellennamen zu versehen.
Ich unterstütze jedoch die Idee, passende Namen für die Fremdschlüssel und den Primärschlüssel zu verwenden, auf den sie verweisen 1 , und dazu müssten Sie normalerweise den id
Attributen in der abhängige Tabelle.
Etwas, das nicht sehr bekannt ist, ist, dass SQL eine prägnante Joinsyntax mit dem Schlüsselwort USING
unterstützt:
Dann die folgende Abfrage:
%Vor%entspricht der ausführlicheren und populäreren Verbindungssyntax:
%Vor% 1 Das ist nicht immer möglich. Ein typisches Beispiel ist ein Feld user_id
in einer Tabelle users
und reported_by
und assigned_to
in der referenzierenden Tabelle, die beide auf die Tabelle users
verweisen. Die Verwendung eines user_id
-Feldes in solchen Situationen ist nicht eindeutig und für eines der Felder nicht möglich.
Wie andere Antworten nahelegen, ist es eine persönliche Vorliebe - nimm ein bestimmtes Namensschema und bleibe dabei.
Vor etwa 10 Jahren habe ich mit Oracle Designer gearbeitet und es verwendet ein Namensschema, das ich seither mag und verwende:
Optional:
Wählen Sie wieder das Namensschema, das Ihnen gefällt, und seien Sie konsistent.
Gehen Sie einfach mit Namen und Alter, die Tabelle sollte den notwendigen Kontext bieten, wenn Sie sich fragen, mit welcher Art von Namen Sie arbeiten.
Betrachte es als eine Entität und nenne die Felder entsprechend
Ich würde eine Tabelle Benutzer mit Feldern wie ID, Name, Alter usw. empfehlen.
Eine Gruppe von Datensätzen ist eine Gruppe von Benutzern, aber die Gruppe der Felder repräsentiert einen Benutzer.
Damit beziehen Sie sich auf user.id
, user.name
, user.age
(obwohl Sie den Tabellennamen abhängig von der Abfrage nicht immer einschließen).
Für die Tabellennamen verwende ich normalerweise plurale Nomen (oder Nominalphrasen) wie Sie.
Bei Spaltennamen würde ich den Tabellennamen nicht als Präfix verwenden. Die Tabelle selbst spezifiziert den Kontext der Spalte.
Es ist persönliche Vorliebe. Der beste Rat, den wir Ihnen geben können, ist Konsistenz, Lesbarkeit und die korrekte Bezeichnung der Beziehungen.
Verwenden Sie Namen, die sinnvoll sind und wenn möglich nicht abgekürzt werden, es sei denn, der Speichermechanismus, den Sie verwenden, funktioniert nicht gut mit ihnen.
In Beziehungen verwende ich gerne Id für den Primärschlüssel und [table_name] _Id für den Fremdschlüssel. z.B. Order.Id und OrderItem.OrderId
Id funktioniert gut, wenn Sie einen Ersatzschlüssel als Primärschlüssel verwenden.
Auch bei Ihrem Speichermechanismus kann die Groß- und Kleinschreibung beachtet werden, achten Sie also darauf.
Edit: Es gibt auch eine Theorie, die darauf hinweist, dass die Tabelle nach dem Namen eines einzelnen Datensatzes in dieser Tabelle benannt werden sollte. Also, Tabellenname "Benutzer" statt "Benutzer" - persönlich macht der Plural mehr Sinn für mich, halten Sie es einfach konsistent.
Zunächst würde ich vorschlagen, das Singular Nomen, d. h. user anstelle von users zu verwenden, obwohl dies eher eine persönliche Präferenz ist.
Zweitens gibt es einige, die es vorziehen, immer die Primärschlüsselspalte id anstatt user_id zu nennen (dh Tabellenname + ID ). und ähnlich mit name anstatt mitarbeitername . Ich halte das aus folgendem Grund für eine schlechte Idee:
%Vor%Ich sage nicht, dass Sie den Tabellennamen in jede Spalte in der Tabelle aufnehmen sollten, aber tun Sie dies für die Schlüssel- (id) -Spalte und andere "generische" Spalten wie Name, Beschreibung, Bemerkungen usw., die wahrscheinlich sind in Abfragen enthalten sein.
Ich habe meine Spalten explizit mit einem Präfix benannt, das sich auf die Tabelle bezieht
%Vor%davor, als ich anfing, JOINS zu verwenden, musste ich den Mist aus den Spaltennamen alias machen, um Konflikte in den Abfrageergebnissen zu vermeiden, und dann, wenn von Vorlagen in einer MVC-Ansicht zugegriffen wurde, wenn der Abfrageergebnisfeldname nicht Wenn Sie mit dem veröffentlichten DB-Schema übereinstimmen, werden die Template-Designer verwirrt und müssen nach SQL VIEW fragen, um den richtigen Feldnamen zu bestimmen.
Es sieht also chaotisch aus, ein Präfix in einem Spaltennamen zu verwenden, aber in der Praxis funktioniert es besser für uns.
Ich bin mir nicht ganz sicher, ob es einen Standard in der Branche gibt
Ja: ISO 11179-5: Benennungs- und Identifikationsprinzipien , verfügbar hier .
Ich denke, Tabellen- und Spaltennamen müssen so sein.
Tabellenname:
Benutzer - & gt; Nutze jedes Wort und nicht Plural.
Spaltennamen:
ID - & gt; Wenn ich "ID" sehe, verstehe ich, dass dies PK-Spalte ist.
Gruppen-ID - & gt; Ich verstehe, dass es eine Tabelle gibt, die Group und diese Spalte die Relationsspalte für die Gruppentabelle nennt.
Name - & gt; Wenn in der Benutzertabelle eine Spalte mit dem Namen "Name" vorhanden ist, bedeutet dies den Namen des Benutzers. Es ist sehr klar.
Besonders wenn Sie Entity Framework verwenden, nehme ich das mehr an.
Hinweis: Entschuldigung für mein schlechtes Englisch. Wenn jemand mein schlechtes Englisch korrigiert, werde ich glücklich sein.
Tags und Links sql