Sql benennt die beste Vorgehensweise

8

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 ...

    
KdgDev 25.07.2010, 05:30
quelle

12 Antworten

9

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%     
dockeryZ 25.07.2010, 05:36
quelle
6

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:

%Vor%

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.

    
Daniel Vassallo 25.07.2010 06:22
quelle
3

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:

  • Tabellennamen sind Plural - USERS
  • Ersatz-Primärschlüssel wird als Singular des Tabellennamens plus '_id' benannt - Primärschlüssel für Tabelle USERS wäre "USER_ID". Auf diese Weise haben Sie konsistente Namen, wenn Sie das Feld "USER_ID" als Fremdschlüssel in einer anderen Tabelle verwenden
  • Spaltennamen haben keinen Tabellennamen als Präfix.

Optional:

  • in Datenbanken mit einer großen Anzahl von Tabellen (interpretieren Sie "groß", wie Sie es für richtig halten), verwenden Sie 2-3 Zeichen Tabelle Präfixe, so dass Sie Tabellen in Bereichen logisch teilen können. Beispiel: Alle Tabellen, die Verkaufsdaten enthalten (Rechnungen, Rechnungspositionen, Artikel), haben das Präfix "INV_", alle Tabellen, die Personaldaten enthalten, haben das Präfix "HR_". Auf diese Weise ist es einfacher, Tabellen zu finden und zu sortieren, die zugehörige Daten enthalten (dies könnte auch dadurch geschehen, dass Tabellen in verschiedenen Schemata platziert und entsprechende Zugriffsrechte festgelegt werden, aber es wird kompliziert, wenn Sie mehr als eine Datenbank auf einem Server erstellen müssen) / li>

Wählen Sie wieder das Namensschema, das Ihnen gefällt, und seien Sie konsistent.

    
zendar 25.07.2010 10:18
quelle
2

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.

    
Kenny Rasschaert 25.07.2010 05:35
quelle
2

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).

    
George Marian 25.07.2010 05:36
quelle
2

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.

    
Florian Reischl 25.07.2010 05:37
quelle
1

Tischbenutzer (Plural):

  • ID
  • Name
  • Alter

einfach und einfach.

    
cherouvim 25.07.2010 10:21
quelle
0

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.

    
Jason 25.07.2010 05:45
quelle
0

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.

    
ObiWanKenobi 25.07.2010 07:28
quelle
0

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.

    
Steve Wasiura 25.10.2011 18:03
quelle
0
  

Ich bin mir nicht ganz sicher, ob es einen Standard in der Branche gibt

Ja: ISO 11179-5: Benennungs- und Identifikationsprinzipien , verfügbar hier .

    
onedaywhen 26.10.2011 08:27
quelle
0

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.

    
dermanyon 07.12.2011 11:50
quelle

Tags und Links