Angenommen, ich habe zwei Tabellen:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
Wie soll ich die Tabelle nennen, die Farbe und Form abbildet?
Table: ???
Columns: ColorId, ShapeId
Angenommen, ich habe zwei Tabellen:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
Wie soll ich die Tabelle nennen, die Farbe und Form abbildet?
Table: ???
Columns: ColorId, ShapeId
Shape2Color
,ShapeXColor
,ShapeColorLink
.Antworten:
Wenn Sie einen guten Namen für eine Tabelle finden, die eine
many-to-many
Beziehung darstellt, ist die Beziehung leichter zu lesen und zu verstehen. Manchmal ist es nicht trivial, einen guten Namen zu finden, aber normalerweise lohnt es sich, etwas Zeit damit zu verbringen, darüber nachzudenken.Ein Beispiel:
Reader
undNewspaper
.A
Newspaper
hat vieleReaders
und aReader
hat vieleNewspapers
Sie könnten die Beziehung nennen,
NewspaperReader
aber ein Name wieSubscription
könnte besser vermitteln, worum es in der Tabelle geht.Der Name
Subscription
ist auch idiomatischer, wenn Sie die Tabelle später Objekten zuordnen möchten.Die Konvention zum Benennen von
many-to-many
Tabellen ist eine Verkettung der Namen beider Tabellen, die an der Beziehung beteiligt sind.ColourShape
wäre in Ihrem Fall ein vernünftiger Standard. Das sei gesagt, ich glaube , Nick D kam mit zwei großen Vorschläge:Style
undTexture
.quelle
Wie wäre es mit ColorShapeMap oder Style oder Texture .
quelle
Interessanterweise gibt etwa die Hälfte der Antworten einen allgemeinen Begriff für jede Tabelle an, die eine Viele-zu-Viele-Beziehung implementiert, und die andere Hälfte der Antworten schlägt einen Namen für diese bestimmte Tabelle vor.
Ich habe diese Tabellen allgemein als Schnittpunkttabellen bezeichnet .
In Bezug auf Namenskonventionen geben die meisten Menschen einen Namen an, der ein Amalgam der beiden Tabellen in der Viele-zu-Viele-Beziehung ist. Also in diesem Fall "
ColorShape
" oder "ShapeColor
." Aber ich finde das sieht künstlich und umständlich aus.Joe Celko empfiehlt in seinem Buch "SQL Programming Style", diese Tabellen in natürlicher Sprache zu benennen. Wenn eine Form beispielsweise durch eine Farbe gefärbt ist, benennen Sie die Tabelle
ColoredBy
. Dann könnten Sie ein Diagramm haben, das mehr oder weniger natürlich so lautet:Umgekehrt könnte man sagen, eine Farbe färbt eine Form:
Dies sieht jedoch so aus, als ob die mittlere Tabelle dasselbe ist wie
Color
bei einer Namenskonvention im Plural. Zu verwirrend.Wahrscheinlich am klarsten, die
ColoredBy
Namenskonvention zu verwenden. Interessant, dass die Verwendung der passiven Sprache die Namenskonvention klarer macht.quelle
HasColor
könnte ein anderer möglicher Name für die Schnittpunkttabelle sein, die natürliche Sprache verwendet.hasColour
/ColouredBy
wofür? Es macht den Zweck der Benennung zunichteDESCRIBE
, um die Beziehungen herauszufinden.ShapeHasColor
undTextHasColor
?Benennen Sie die Tabelle nach Belieben, solange sie informativ ist:
Aus Modellsicht wird die Tabelle als Join- / Corrollary- / Querverweistabelle bezeichnet. Ich habe es mir zur Gewohnheit gemacht,
_XREF
am Ende die Beziehung offensichtlich zu machen.quelle
Dies ist eine assoziative Einheit und für sich genommen oft von Bedeutung.
Zum Beispiel führt eine viele zu viele Beziehung zwischen ZÜGEN und ZEITEN zu einer ZEITPLAN.
Wenn es keine offensichtliche neue Entität gibt (wie z. B. einen Zeitplan), besteht die Konvention darin, die beiden Wörter zusammen auszuführen und COLOUR_SHAPE oder ähnliches zu geben.
quelle
Eine Zuordnungstabelle wird normalerweise so genannt.
quelle
To
im Namen zu verwenden. Was ist, wenn Sie Form mit HighlightColor haben? Wenn Sie es nennenShapeHighlightColor
, ist es ein wenig mehrdeutig, ob es sich um ein ShapeHighlight handelt, das einer Farbe zugeordnet ist, oder um eine Form, die einer Highlight-Farbe zugeordnet ist. SoShapeToHighlightColor
könnte klarer sein.Ich habe mit DBAs gearbeitet, die es eine Join-Tabelle nennen .
Colour_Shape ist ziemlich typisch - es sei denn, die Beziehung hat einen expliziten domänenspezifischen Namen.
quelle
Colour_Shape_Colour
und erhaltenColour_Shape_Shape
.Normalerweise höre ich das als Junction Table bezeichnet. Ich benenne die Tabelle nach dem, was sie verbindet, also in Ihrem Fall entweder ColorShape oder ShapeColor. Ich denke, es ist sinnvoller, wenn eine Form eine Farbe hat, als wenn eine Farbe eine Form hat, also würde ich mitmachen
ShapeColor
.quelle
Junction table
ODER
Bridge Table
ODER
Join Table
ODER
Map Table
ODER
Link Table
ODER
Cross-Reference Table
Dies kommt zum Einsatz, wenn wir viele-zu-viele-Beziehungen anstreben, bei denen die Schlüssel aus beiden Tabellen den zusammengesetzten Primärschlüssel der Junction-Tabelle bilden.
quelle
Ich empfehle, eine Kombination der Namen von Entitäten zu verwenden und sie in den Plural zu setzen. Somit drückt der Name der Tabelle die Verbindung "viele zu viele" aus.
In deinem Fall:
quelle
Zwischentabelle oder Join-Tabelle
Ich würde es "ColorShapes" oder "ColorShape" nennen, je nach Ihren Vorlieben
quelle
Ich habe auch den Begriff Assoziative Tabelle gehört.
Ein Name für Ihre Tabelle kann
ColorShapeAssociations
bedeuten, dass jede Zeile eine Zuordnung zwischen dieser Farbe und dieser Form darstellt. Die Existenz einer Reihe impliziert, dass die Farbe in dieser Form vorliegt und dass die Form in dieser Farbe vorliegt. 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 denen die Form eingegangen ist ...quelle
Im Allgemeinen haben die meisten Datenbanken eine Art Namenskonvention für Indizes, Primärschlüssel usw. In PostgreSQL wurde die folgende Benennung vorgeschlagen:
Ihr Tisch ist ein mit mir verknüpfter Tisch. Um mit der obigen Benennung in Einklang zu bleiben, würde ich Folgendes wählen:
In einer Liste von Tabellenobjekten steht die verknüpfte Tabelle nach Tabellenname1. Dies könnte optisch ansprechender sein. Sie können aber auch einen Namen wählen, der den Zweck des Links beschreibt, wie andere vorgeschlagen haben. 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).
quelle
Ich habe mich immer für den Begriff "Hamburger Tisch" interessiert. Ich weiß nicht warum - es klingt einfach gut.
Oh, und ich würde die Tabelle ShapeColor oder ColorShape nennen, je nachdem, welche Tabelle am häufigsten verwendet wird.
quelle
"Viele-Viele" -Tisch. Ich würde es "ColourShape" nennen oder umgekehrt.
quelle
Es ist schwer, etwas so Willkürliches wie dieses zu beantworten, aber ich bevorzuge eher Toshs Idee, es nach etwas in der tatsächlichen Domäne zu benennen, als eine allgemeine Beschreibung der zugrunde liegenden Beziehungen.
Sehr oft entwickelt sich diese Art von Tabelle zu etwas Reichhaltigerem für das Domänenmodell und nimmt über die verknüpften Fremdschlüssel hinaus zusätzliche Attribute an.
Was ist zum Beispiel, wenn Sie zusätzlich zur Farbe eine Textur speichern müssen? Es mag etwas funky erscheinen, die Tabelle SHAPE_COLOR zu erweitern, um ihre Textur beizubehalten.
Auf der anderen Seite gibt es auch etwas zu sagen, um eine fundierte Entscheidung zu treffen, die auf Ihren heutigen Anforderungen basiert, und um bereit zu sein, eine Umgestaltung vorzunehmen, wenn später zusätzliche Anforderungen eingeführt werden.
Alles in allem würde ich es OBERFLÄCHE nennen, wenn ich die Einsicht hätte, dass später zusätzliche oberflächenähnliche Eigenschaften eingeführt werden. Wenn nicht, hätte ich keine Probleme damit, es SHAPE_COLOR oder ähnliches zu nennen und zu dringlicheren Designproblemen überzugehen.
quelle
Vielleicht nur
ColoredShape
?Ich bin mir nicht sicher, ob ich die Frage bekomme. Geht es um diesen speziellen Fall oder suchen Sie nach allgemeinen Richtlinien?
quelle
Ich würde es mit den genauen Namen der Tabellen benennen, die verbunden werden = ColorShape.
quelle
In Anlehnung an das, was Developer Art erzählt hat,
wäre eine übliche Namenskonvention. Im ER-Diagramm wäre es eine Beziehung.
quelle
Nennen Sie es eine Querverweistabelle.
quelle
Ich würde verwenden
r_shape_colors
oderr_shape_color
abhängig von seiner Bedeutung.r_
wäre ein Ersatz fürxref_
in diesem Fall.quelle
Ich stimme für einen Namen, der die Tabelle am besten beschreibt. In diesem Fall kann es sein,
ShapeColor
aber in vielen Fällen ist ein anderer Name als eine Verkettung besser. Ich mag Lesbarkeit und für mich bedeutet das keine Suffixe, keine Unterstriche und keine Präfixe.quelle
Ich persönlich würde mich für Colour_Shape mit dem Unterstrich entscheiden: Nur weil ich gesehen habe, dass diese Konvention ziemlich oft auftaucht. [aber stimme den anderen Beiträgen hier zu, dass es wahrscheinlich "poetischere" Wege gibt, dies zu tun].
Beachten Sie, dass die Fremdschlüssel auch auf dieser Verknüpfungstabelle erstellt werden sollten, die sowohl auf die Farb- als auch auf die Formtabellen verweist, die auch bei der Identifizierung der Beziehung hilfreich sind.
quelle
Eine Konvention, die ich häufig für das Verbinden von Tabellen sehe, die ich persönlich mag, ist 'Colour_v_Shape', die ich umgangssprachlich als 'versus Tabellen' bezeichnet habe.
Auf einen Blick wird deutlich, dass die Tabelle eine Viele-zu-Viele-Beziehung darstellt, und es hilft, diese (wenn auch seltene) verwirrende Situation zu vermeiden, wenn Sie versuchen, zwei Wörter zu verketten, die andernfalls ein zusammengesetztes Wort bilden könnten, z. B. "Butter". und "Milch" wird möglicherweise zu "Buttermilch", aber was wäre, wenn Sie auch eine Entität namens "Buttermilch" repräsentieren müssten?
Wenn Sie es so machen, haben Sie 'Butter_v_Milk' und 'Buttermilk' - keine Verwirrung.
Außerdem denke ich gerne, dass die ursprüngliche Frage eine Foo Fighters-Referenz enthält.
quelle