92

Sagen wir, ich habe zwei Tabellen:Was soll ich eine Tabelle nennen, die zwei Tabellen zusammenstellt?

Table: Color 
Columns: Id, ColorName, ColorCode 

Table: Shape 
Columns: Id, ShapeName, VertexList 

Was soll ich den Tisch aufrufen, die Farbe zu formen abbildet?

Table: ??? 
Columns: ColorId, ShapeId 
+0

color und ShapeColor alias für Symmetrie. – LukLed

+2

Ich bin gerade auf eine ähnliche Frage gestoßen, die ich vorher nicht gesehen habe: http://StackOverflow.com/Questions/1764483/SQL-Join-Table-Naming-Convention. Einige andere Ideen aus diesem Thread: 'Shape2Color',' ShapeXColor', 'ShapeColorLink'. – devuxer

+0

Wenn es einen Standard für die Benennung von Junction-Tabellen gäbe, dann wäre dies nicht optionsbasiert. Dann wäre das die Antwort auf die Frage gewesen. Indem Sie die Frage schließen, schalten Sie die Möglichkeit für jemanden wie mich aus, zu wissen, ob es Standardmethoden gibt, Ihre Junction-Tabellen zu benennen oder nicht. Bitte überdenken Sie - diejenigen, die es geschlossen haben ... – Lealo

Antwort

136

Es gibt nur zwei harte Dinge in Informatik: Cache-Annullierungs und Namensgebung Dinge
-Phil Karlton

mit einem guten Namen für eine Tabelle Coming up, die eine many-to-many Beziehung darstellt, macht die Beziehung leichter zu lesen und zu verstehen. Manchmal ist es nicht trivial, einen großen Namen zu finden, aber normalerweise lohnt es sich, darüber nachzudenken. Ein Beispiel: Reader und Newspaper.

A Newspaper hat viele Readers und ein Reader hat viele Newspapers

Sie konnten die Beziehung nennen NewspaperReader aber ein Name wie Subscription könnte vermitteln besser, was der Tabelle geht.

Der Name Subscription ist auch mehr idiomatisch, wenn Sie die Tabelle später Objekten zuordnen möchten.

Die Konvention zur Benennung von many-to-many Tabellen ist eine Verkettung der Namen beider Tabellen, die an der Relation beteiligt sind. ColourShape wäre in Ihrem Fall ein vernünftiger Standard. Das heißt, ich denke, Nick D came up with zwei tolle Vorschläge: Style und Texture.

+8

+1: Gut gesagt - ein sorgfältig ausgewählter Name wird die Wartbarkeit in Zukunft erheblich vereinfachen. –

+68

"Es gibt nur zwei harte Dinge in der Informatik: Cache-Invalidation, Benennung von Dingen und off-by-one-Fehler" –

+0

sagen wir, wenn es eine Kategorie für Produkte und eine andere Kategorie für Rezept gibt. Für beide Tabellen haben wir rezeptkategorien und produktkategorien, und da wir nicht nur tabellennamen für beide tabellen verwenden können, um den konflikt zu vermeiden, sind die übergabetabellen für produkt und rezept "rezept_rezepte_kategorien" und "produktproduktkategorien" – c9s

4

Eine Mapping-Tabelle ist, wie dies normalerweise genannt wird.

ColorToShape 
ColorToShapeMap 
+0

Eigentlich wird der Begriff Mapping allgemein verwendet, wenn die Beziehung unidirektional ist (eins zu eins oder viele). Ist das die Caswe? Wenn ja, brauchen Sie in der Regel keine andere Tabelle. Wenn die Farbe immer die Form bestimmt, fügen Sie der Farbtabelle eine Formspalte hinzu oder umgekehrt. Eine zusätzliche Tabelle wird im Allgemeinen nur benötigt, wenn die Beziehung viele zu viele ist. Und in diesem Fall ist der Begriff Zuordnung nicht geeignet. –

+0

In diesem Fall könnte jede Form an jede Farbe angepasst werden, also ist es viele-zu-viele. – devuxer

+2

BTW, ob es eine Mapping-Tabelle ist oder nicht, mag ich die Idee, 'To' im Namen zu verwenden. Was ist, wenn Sie Shape mit HighlightColor haben? Wenn Sie es 'ShapeHighlightColor' nennen, ist es etwas mehrdeutig, ob es sich um ein ShapeHighlight handelt, das einer Farbe zugeordnet ist, oder um eine ShapeHighlightColor, die einer Highlight-Farbe zugeordnet ist. Also, 'ShapeToHighlightColor' könnte klarer sein. – devuxer

3

Intermediate Tabelle oder ein Join-Tabelle

würde ich es nennen "ColorShapes" oder "color", je nach Vorliebe

4

ich in der Regel hören, dass eine Junction Tabelle genannt. Ich benenne die Tabelle nach dem, was sie verbindet, also in Ihrem Fall entweder ColorShape oder ShapeColor. Ich denke, es macht mehr Sinn, wenn eine Form eine Farbe hat als eine Farbe, um eine Form zu haben, also würde ich mit ShapeColor gehen.

0

Ich würde es mit den genauen Namen der Tabellen, die zusammengefügt werden = ColorShape.

0

In adiction Art in welchem ​​Entwickler hat im Zusammenhang

ColorShape 

wäre eine übliche Namenskonvention sein. Im ER-Diagramm wäre das eine Relation.

2

Ich habe auch den Begriff Assoziative Tabelle verwendet gehört.

Ein Name für Ihre Tabelle könnte ColorShapeAssociations sein, was bedeutet, dass jede Zeile eine Zuordnung zwischen dieser Farbe und dieser Form darstellt. Die Existenz einer Reihe impliziert, dass die Farbe in dieser Form kommt und dass die Form in dieser Farbe kommt. Alle Zeilen mit einer bestimmten Farbe sind die Menge aller Formen, denen die Farbe zugeordnet ist, und die Zeilen für eine bestimmte Form sind die Menge aller Farben, in die die Form kam ...

+0

Aber was würdest du den tatsächlichen Tisch nennen? – devuxer

+0

Oder 'Assoziationstabelle'. –

+0

Es hängt davon ab, was die Tabelle beschreibt. Wenn es heißt "alles Orange muss ein Rhombus sein", "alles Lila muss ein Kreis sein" usw., dann könnte man es als etwas bezeichnen (Colour_of_Shape, vielleicht). Wenn es eine lockerere Definition ist - bekannte Farben für Formen, so dass eine einzelne Form mehrmals vorkommen kann - dann vielleicht 'Shape_Colour_Map'. –

18

Benennen Sie die Tabelle, was immer Sie möchten , solange es informativ ist:

COLOR_SHAPE_XREF 

aus einem Modell Perspektive wird die Tabelle einer Join/corrollary/Querverweistabelle genannt. Ich habe es mir angewöhnt, am Ende _XREF zu verwenden, um die Beziehung offensichtlich zu machen.

+1

Ich benutze auch _XREF ... es hat immer Sinn für mich gemacht. – Tenner

+0

Ich grabe die Idee, aber als AutoCAD-Benutzer muss ich ein anderes Suffix als _XREF finden ... – Mike

1

Ich war schon immer Teil der Begriff "Hamburger Tisch". Ich weiß nicht warum - es klingt einfach gut.

Oh, und ich würde die Tabelle ShapeColor oder ColorShape je nachdem, was die am häufigsten verwendete Tabelle ist nennen.

5

Dies ist ein Associative Entity und ist oft sehr wichtig für sich.

Zum Beispiel, eine viel zu viele Beziehung zwischen TRAINS und TIMES führt zu einem Zeitplan.

Wenn es keine offensichtliche neue Entität gibt (z. B. Stundenplan), besteht die Konvention darin, die beiden Wörter zusammen auszuführen, was COLOUR_SHAPE oder ähnliches ergibt.

26

Wie wäre es ColorShapeMap oder Stil oder Textur.

+3

+1 für etwas eleganter als nur die Namen der Tabellen Beitritt – tosh

14

Interessant über die Hälfte der Antworten geben einen allgemeinen Begriff für jede Tabelle, die eine Viele-zu-viele-Beziehung implementiert, und die andere Hälfte der Antworten schlägt einen Namen für diese Tabelle vor.

Ich nannte diese Tabellen Schnittpunkte Tabellen allgemein.

In Bezug auf die Namenskonventionen geben die meisten Leute einen Namen, der ein Amalgam der beiden Tabellen in der Viele-zu-Viele-Beziehung ist. Also in diesem Fall "" oder "ShapeColor." Aber ich finde das sieht künstlich und peinlich aus.

Joe Celko empfiehlt in seinem Buch "SQL Programming Style", diese Tabellen in einer natürlichen Sprache zu benennen. Wenn beispielsweise eine Form durch eine Farbe gekennzeichnet ist, benennen Sie die Tabelle ColoredBy. Dann könnten Sie ein Diagramm, das mehr oder weniger natürlich wie folgt lautet:

Shape <-- ColoredBy --> Color 

Umgekehrt Sie eine Farbe Farben eine Form könnte sagen:

Color <-- Colors --> Shape 

Aber das sieht aus wie die mittlere Tabelle ist die gleiche Sache wie Color mit einer Plural Namenskonvention. Zu verwirrend.

Wahrscheinlich am klarsten, die ColoredBy Namenskonvention zu verwenden. Interessant, dass die Verwendung der passiven Stimme die Namenskonvention klarer macht.

+0

Bill, danke. Sehr interessante Antwort. – devuxer

+0

@Bill: Alles über die Synonyme, und die Synonympräferenz wirkt sich auf die Namenskonvention aus. –

+2

Ich nehme an, 'HasColor' könnte ein anderer möglicher Name für die Schnittmenge Tabelle sein, die natürliche Sprache verwendet. –

0

Nennen Sie es eine Querverweistabelle.

XREF_COLOR_SHAPE 
(
    XCS_ID INTEGER 
    C_ID INTEGER 
    S_ID INTEGER 
) 
4

Ich habe mit DBAs gearbeitet, die nennen es eine Tisch beitreten.

Colour_Shape ist ziemlich typisch - es sei denn, die Beziehung hat einen expliziten domänenspezifischen Namen.

+0

Ich mag keine Unterstriche, weil sie mit den Konventionen für Fremdschlüsselkonventionen kollidieren, so dass Sie böse Namen wie "Colour_Shape_Colour" und "Colour_Shape_Shape" erhalten. – Dan

1

"Many-Many" -Tabelle. Ich würde es "ColourShape" nennen oder umgekehrt.

1

Es ist schwer, etwas so Willkürliches wie dieses zu beantworten, aber ich tendiere eher zu Toshs Idee, es nach etwas in der tatsächlichen Domäne zu benennen anstatt nach einer allgemeinen Beschreibung der zugrunde liegenden Beziehungen.

Sehr oft wird sich diese Art von Tabelle zu etwas reicherem für das Domänenmodell entwickeln und zusätzliche Attribute über die verknüpften Fremdschlüssel hinaus übernehmen.

Zum Beispiel, was ist, wenn Sie eine Textur zusätzlich zur Farbe speichern müssen? Es mag ein wenig funky erscheinen, die SHAPE_COLOR-Tabelle zu erweitern, um ihre Textur zu erhalten.

Auf der anderen Seite gibt es auch etwas zu sagen, um eine fundierte Entscheidung zu treffen, basierend auf welchen Anforderungen Sie heute haben und bereit zu refaktorisieren, wenn später zusätzliche Anforderungen eingeführt werden.

Alles, was ich gesagt habe, würde ich es OBERFLÄCHE nennen, wenn ich die Einsicht hätte, dass später weitere oberflächenähnliche Eigenschaften eingeführt werden. Wenn nicht, hätte ich keine Probleme damit, es SHAPE_COLOR oder etwas Ähnliches zu nennen und zu drängenden Designproblemen überzugehen.

3

Junction table

ORBridge Table

ORJoin Table

ORMap Table

ORLink Table

ODERCross-Reference Table

Dies kommt zum Einsatz, wenn wir für viele-zu-viele-Beziehungen gehen, wo die Schlüssel aus dem beiden Tabellen bilden den Verbundprimärschlüssel der Verknüpfungstabelle.

0

Ich würde r_shape_colors oder r_shape_color abhängig von seiner Bedeutung verwenden.
r_ wäre in diesem Fall ein Ersatz für xref_.

0

Meine Stimme ist für einen Namen, der die Tabelle am besten beschreibt.In diesem Fall könnte es ShapeColor sein, aber in vielen Fällen ist ein anderer Name als eine Verkettung besser. Ich mag Lesbarkeit und für mich, das bedeutet keine Suffixe, keine Unterstriche und keine Präfixe.

0

Ich persönlich würde mich für Colour_Shape entscheiden, mit der Unterstreichung: nur weil ich diese Konvention gesehen habe, kommt sie ziemlich oft auf. [Aber stimme den anderen Beiträgen zu, dass es wahrscheinlich mehr "poetische" Wege gibt, dies zu tun].

Bedenken Sie, dass die Fremdschlüssel auch auf dieser Join-Tabelle erstellt werden sollten, die sowohl auf die Shape-Tabellen der Farbe & verweisen, die auch beim Identifizieren der Beziehung helfen.

1

Vielleicht nur ColoredShape?

Ich bin mir nicht sicher, ob ich die Frage bekomme. Geht es um diesen speziellen Fall oder suchen Sie allgemeine Richtlinien?

+0

Allgemeine Richtlinien. – devuxer

1

Im Allgemeinen haben die meisten Datenbanken eine Art Namenskonvention für Indizes, Primärschlüssel und so weiter. In PostgreSQL hat die folgende Benennung vorgeschlagen:

  • Primärschlüssel: tablename_columnname_ pTaste
  • eindeutige Einschränkung: tablename_columnname_ Schlüssel
  • exklusive Einschränkung: tablename_columnname_ exkl
  • Index für andere Zwecke: tablename_columnname_ idx
  • Fremdschlüssel: tablename_columnname_ fkey
  • Sequenz: tablename_columnname_ seq
  • löst: tablename_actionname_after | before_

Ihr Tisch trig ist mir verknüpfte Tabelle. im Einklang mit der Namensgebung bleiben oben ich folgenden wählen würde:

  • verknüpfte Tabelle: tablename1_tablename2_ lnk

In einer Liste von Tabellenobjekten der verknüpfte Tabelle nach tablename1 sein wird. Dies könnte visuell ansprechender sein. Sie können aber auch einen Namen wählen, der den Zweck des Links beschreibt, wie es von anderen vorgeschlagen wurde. Dies kann dazu beitragen, den Namen der ID-Spalte kurz zu halten (wenn Ihr Link eine eigene benannte ID haben muss und in anderen Tabellen referenziert wird).

  • oder mochte Tabelle: purposename_ lnk
+1

Gute alte ungarische Notation, wir treffen uns wieder. – Dan

0

Eine Konvention ich zum Verbinden von Tabellen viel zu sehen, die ich persönlich mag, ist ‚Colour_v_Shape‘, die ich gehört habe, Folk umgangssprachlich als ‚im Vergleich zu verweisen Tabellen ".

Es wird auf einen Blick klar, dass die Tabelle eine Viele-zu-Viele-Beziehung darstellt und hilft, die (wenn auch seltene) verwirrende Situation zu vermeiden, wenn Sie versuchen, zwei Wörter zu verketten, die sonst ein zusammengesetztes Wort bilden Beispiel "Butter" und "Milch" könnten "Buttermilk" werden, aber was wäre, wenn Sie auch eine Entität namens "Buttermilk" repräsentieren müssten?

Auf diese Weise hättest du 'Butter_v_Milk' und 'Buttermilk' - keine Verwirrung.

Auch ich denke gerne, es gibt eine Foo Fighters Referenz in der ursprünglichen Frage.

2

Ich empfehle, eine Kombination der Namen von Entitäten zu verwenden und sie in den Plural zu setzen. Daher wird der Name der Tabelle die Verbindung "viele-zu-viele" ausdrücken.

In Ihrem Fall:

Farbe + Form = ColorsShapes

+0

Wenn Sie die Route "Namen von Tabellen" gehen, ist dies besser, da die Singular-Version "normalerweise" eine Namespace-Tabelle sein würde. –

Verwandte Themen