Ist die Präfixierung jedes Feldnamens in einer Tabelle mit abgekürztem Tabellennamen eine gute Übung?

7

Fügen Sie jedem Feld in einer Tabelle einen abgekürzten Tabellennamen voran?

Beispiel:

%Vor%

Oder nennen Sie Ihre Felder minimal?

%Vor%

Wenn Sie beides verwendet haben, welches Format hat Ihnen auf lange Sicht am meisten geholfen?

Bearbeiten: Diese Frage scheint keine eindeutige Antwort zu haben und beide Seiten haben gute Punkte. Aber ich habe die Frage zu lange offen gehalten und vielleicht ist es an der Zeit, eine Antwort als akzeptiert zu markieren. Ich markiere daher die höchste Stimme als akzeptiert.

    
CDR 21.01.2009, 12:43
quelle

14 Antworten

27

Tu das nicht. Es ist überflüssig und führt auf lange Sicht zu Frustration.

Das einzige Feld, in dem Sie anwenden könnte, könnte id sein, weil user_id offensichtlich die ID des Benutzers wäre und das Schreiben von Joins in SQL vereinfachen würde. Aber ich würde das nicht mal machen.

    
Joachim Sauer 21.01.2009, 12:45
quelle
17

Wenn Sie es tun, schreiben Sie am Ende Fragen wie:

%Vor%

statt

%Vor%

Also IMO die Antwort auf Ihre Frage ist ziemlich klar.

    
markus 21.01.2009 12:50
quelle
9

Sie müssen es nicht mehr tun, und Sie sollten es wirklich nicht tun. Die einzige Ausnahme als saua darauf hingewiesen könnte das ID-Feld für die Suche nach Klarheit von Joins sein.

Das Konzept der Präfixierung von Feldnamen mit dem Tabellennamen stammt aus der alten Zeit von Legacy-Systemen, wenn jedes Feld in der gesamten Datenbank eindeutig sein muss.

Wenn Sie also nicht mit Legacy-Systemen arbeiten, die erfordern, dass jedes Feld in der gesamten Datenbank einen eindeutigen Namen hat; mach es nicht.

    
kristof 21.01.2009 12:51
quelle
7

Ich würde es nicht tun. Wenn Sie wissen wollen, zu welcher Tabelle ein Feld gehört, können Sie Ihre Abfragen immer als

schreiben %Vor%

Aber stellen Sie sich vor, Sie entscheiden sich aus irgendeinem Grund, eine Ihrer Tabellen umzubenennen (vielleicht von "Benutzer" zu "Kunde"). Sie müssten auch alle Felder umbenennen, um konsistent zu bleiben.

Meine Meinung: Es gibt keinen guten Grund, warum Sie es tun sollten, und mehrere gute Gründe, es nicht zu tun.

    
Treb 21.01.2009 12:54
quelle
3

Wir verwenden auch keine abgekürzten Tabellenpräfixe und ich würde es auch nicht empfehlen.

Es gibt jedoch eine Situation, in der wir Folgendes tun: Felder reservieren .

%Vor%

Kurzer Hintergrund: Unsere Datenbank hat mehr als 250 Tabellen und wir setzen die meisten davon in Reservespalten ein, um sie für zukünftige Feature-Implementierungen zu verwenden. Wie Sie sich vorstellen können, würden Sie ohne Präfixe 50 Reserve_Field_Alpha3 mit völlig anderer Bedeutung, aber demselben Namen in Ihrem Code haben. Es ist schon schwer wie es jetzt ist, aber ohne Präfixe wäre es schlimmer.

    
MicSim 21.01.2009 13:03
quelle
3

Das Präfix für Spaltennamen kann eine gute Übung sein. Wenn Sie an einer formellen (und wahrscheinlich großen) Datenbank arbeiten und sich auf ISO 11179 (insbesondere das Konzept der Datenelementnamen) konzentrieren, sollten Sie den vollen drei (oder vier) Teilnamen eingeben: Objekt - Eigenschaft - Repräsentationsbegriff. (Der vierte optionale Teil ist ein Qualifikationsmerkmal.) Zum Beispiel "user_first_name". Auf diese Weise haben Sie Konsistenz zwischen Ihrem Data Dictionary und dem Datenbankschema. Ich würde dies aus den bereits genannten Gründen nicht für kleinere Datenbanken tun, aber in einem komplexen Schema reduziert dies ein gewisses Fehlerrisiko.

    
jalbert 21.01.2009 14:49
quelle
2

Wenn ich das Feld "ordinal" zu einer Tabelle hinzufüge, möchte ich ein Präfix hinzufügen, so dass ich keine ordinalen Felder von anderen Tabellen in JOINS aliasieren muss. Es ist manchmal nützlich für JOINS ... nicht sicher, ob ich andere Vorteile gesehen habe.

MediaWiki (die Wikipedia-Software) verwendet diese Konvention. Laden Sie die Quelle herunter. Sie beschränken sich auf ein zweistelliges Präfix.

Ich empfehle die Praxis jedoch nicht. Für die meisten Datenbanken ist es nicht notwendig.

    
BuddyJoe 21.01.2009 13:28
quelle
2

Ich würde empfehlen, bei Tabellenaliasen zu bleiben, wie:

%Vor%

Die Vorteile:

  • Sie erhalten eine leicht verständliche Liste von Feldern, die Sie auswählen, und welche Tabellen Sie aus

  • nehmen
  • Vermeiden Sie lange oder schwer zu verstehende Tabellennamen und ersetzen Sie sie durch einen kurzen und verständlichen Namen (den Sie beim Erstellen der Tabelle hätten verwenden sollen)

  • führt Joins aus, die lesbar sind (Ihr Beispiel würde lesen:

LEFT JOIN table_with_the_avatars.user_id ON user.user_id = table_with_the_avatars.avatars_user_i

  • Erstellen Sie noch kürzere Aliase, in meinem Beispiel würde das "du" anstelle von "Benutzer" bedeuten, und "anstelle von Avatar" würde Ihre Suchanfrage verkürzt
kontur 20.06.2012 13:39
quelle
1

Aus all den angegebenen Gründen halte ich das nicht für eine gute Idee. Außerdem werden nicht alle Methoden in Ihren Klassen den Klassennamen vorangestellt, oder? Warum also für Datenbankobjekte?

    
Tundey 21.01.2009 13:21
quelle
1

Persönlich wäre meine Spalte in der Tabelle 'user' einfach 'id'.

Aber beliebige Schlüsselspalten in verschiedenen Tabellen, die auf diese Spalte verweisen, würde ich die Spalte 'user_id' nennen.

Sie könnten also etwas wie folgt haben:

%Vor%     
John MacIntyre 21.01.2009 14:50
quelle
1

Es ist in Ordnung, Felder so zu benennen (minimal), aber für Primärschlüssel und Untertitel / Namen. Wenn Sie den gesamten Primärschlüssel konsistent als ID benennen und als Name benennen, degeneriert die Konstruktion der Abfrage in überflüssige Aliase:

%Vor%

Da das Verbinden von Tabellen und Anzeigen der Beschriftung / des Namens der Entität eher die Norm als die Ausnahme ist, benenne ich meinen Primärschlüssel in voller Form und für das Feld caption / name den gleichen Namen wie den Tabellennamen.

%Vor%

Ihre Abfrage enthält also keine überflüssigen Aliase:

%Vor%     
Michael Buen 21.01.2009 13:54
quelle
0

Die Präfix-Variante dauert nur länger und macht das Lesen von SQL-Anweisungen mit vielen Feldern schwieriger.

Selbst wenn Sie aus mehreren Tabellen auswählen, haben Sie nur den Vorteil, dass Sie nicht mehrdeutige Felder mit dem Tabellennamen versehen müssen. Aber

%Vor%

unterscheidet sich nicht sehr von

%Vor%

Der Vorteil von vielen nicht eindeutigen Feldern in Ihren Abfragen wird schnell durch den Aufwand aufgezehrt, dass Sie den Tabellennamen jedes Mal eingeben müssen, wenn Sie einen Spaltennamen verwenden.

    
Sebastian Dietz 21.01.2009 12:55
quelle
0

Es ist eine geniale Praxis:

  1. Sie sehen, was jedes Feld bedeutet am wenigsten in welcher Domäne es ist. Sie kann nicht herausfinden, was amount bedeutet ( transactions , incomes ) - außer sie sind xac_amount und %Code%. Die meisten Abfrage-Tools tun dies Ausgabealias nicht zusammen mit dem Feldname.
  2. Sie können Tabellen Aliase verwenden, z sicher. Aber SQL benötigt sie nicht, und nach Murphys Gesetz, wenn nicht erforderlich, wird es nicht verwendet. Es gibt kein Standard, also ein Entwickler Verwenden Sie inc_amount als Alias ​​für x , ein anderer wird verwendet transaction und so weiter.

Tatsächlich sind Präfixe nur erzwungene Tabellenaliasnamen, so dass Sie leicht sehen können, welches Feld zu welcher Tabelle gehört.

    
Quassnoi 21.01.2009 13:00
quelle
0

Wenn Sie eine UNIQUE PREFIX für jede Tabelle verwenden,

  • Sie müssen keinen Alias ​​für Joins verwenden (außer Self-Join)
  • Alle Spalten in der Datenbank sollten in Name
  • eindeutig sein
  • Sie können die Tabelle leicht aus dem Spaltennamen selbst (von a Ausgabe oder Auswahl Abfrage)
Abdul Rasheed 03.05.2016 05:01
quelle

Tags und Links