2つのテーブルがあるとしましょう:
Table: Color
Columns: Id, ColorName, ColorCode
Table: Shape
Columns: Id, ShapeName, VertexList
色を形状にマッピングするテーブルを何と呼ぶべきですか?
Table: ???
Columns: ColorId, ShapeId
コンピューターサイエンスには、キャッシュの無効化と命名の2つの困難なものしかありません
- Phil Karlton
many-to-many
関係を表すテーブルの適切な名前を考え出すと、関係を読みやすく理解しやすくなります。時々、素晴らしい名前を見つけるのは簡単ではありませんが、通常は考える時間を割く価値があります。
例:Reader
およびNewspaper
。
Newspaper
には多くのReaders
があり、Reader
には多くのNewspapers
があります
リレーションシップNewspaperReader
を呼び出すこともできますが、Subscription
のような名前は、テーブルの内容をよりよく伝えることができます。
Subscription
という名前は、後でテーブルをオブジェクトにマップする場合に、より慣用的です。
many-to-many
テーブルの命名規則は、リレーションに関係する両方のテーブルの名前を連結したものです。 ColourShape
は、あなたの場合の賢明なデフォルトです。とはいえ、Nick D 思いついた 2つの素晴らしい提案:Style
とTexture
。
ColorShapeMapまたはStyleまたはTextureについてはどうでしょう。
興味深い回答の約半分は、多対多の関係を実装するテーブルの一般的な用語を示しており、残りの半分はこの特定のテーブルの名前を示しています。
これらのテーブルを交差テーブル一般的に呼んでいます。
命名規則の観点から、ほとんどの人は、多対多の関係にある2つのテーブルを組み合わせた名前を付けます。したがって、この場合、「ColorShape
」または「ShapeColor
」。しかし、これは人為的で厄介に見えます。
Joe Celkoは、彼の著書「SQLプログラミングスタイル」で、これらのテーブルに自然言語で名前を付けることを推奨しています。たとえば、ShapeがColorで色付けされている場合、テーブルにColoredBy
という名前を付けます。次に、次のように自然に読み取れる図を作成できます。
Shape <-- ColoredBy --> Color
逆に、ColorはShapeに色を付けることができます。
Color <-- Colors --> Shape
しかし、これは中央のテーブルが複数の命名規則を持つColor
と同じもののように見えます。わかりにくい。
おそらく、ColoredBy
命名規則を使用するのが最も明確です。興味深いことに、受動的な音声を使用すると、命名規則がより明確になります。
情報を提供する限り、テーブルに好きな名前を付けます。
COLOR_SHAPE_XREF
モデルの観点から、このテーブルは結合/冠詞/相互参照テーブルと呼ばれます。私は_XREF
最後に関係を明確にします。
マッピングテーブルは、これが通常呼ばれるものです。
ColorToShape
ColorToShapeMap
これは 関連エンティティ であり、それ自体が非常に重要です。
たとえば、TRAINSとTIMESの多対多の関係により、TIMETABLEが発生します。
明確な新しいエンティティ(タイムテーブルなど)がない場合、慣例では2つの単語を一緒に実行し、COLOUR_SHAPEなどを指定します。
私は通常、ジャンクションテーブルと呼ばれるものを聞きます。テーブルに結合する名前を付けるため、ColorShapeまたはShapeColorのいずれかを使用します。 Shapeが色を持つよりもShapeが色を持つ方が理にかなっていると思うので、ShapeColor
を使用します。
[〜#〜] or [〜#〜]Bridge Table
[〜#〜] or [〜#〜]Join Table
[〜#〜] or [〜#〜]Map Table
[〜#〜] or [〜#〜]Link Table
[〜#〜] or [〜#〜]Cross-Reference Table
これは、両方のテーブルのキーがジャンクションテーブルの複合主キーを形成する多対多のリレーションシップを使用するときに使用されます。
join tableと呼ばれるDBAと協力しました。
Colour_Shapeはかなり典型的です-関係に明示的なドメイン固有の名前がない限り。
中間テーブルまたは結合テーブル
好みに応じて「ColorShapes」または「ColorShape」と名前を付けます
エンティティの名前を組み合わせて使用し、複数形にすることをお勧めします。したがって、テーブルの名前は「多対多」の接続を表します。
あなたの場合:
色+形状= ColorsShapes
一般に、ほとんどのデータベースには、インデックス、主キーなどの命名規則があります。 PostgreSQLでは、次の命名が提案されています。
あなたのテーブルは私にリンクされたテーブルです。上記の命名規則に準拠するために、以下を選択します。
テーブルオブジェクトのリストでは、リンクテーブルはtablename1の後になります。これは視覚的に魅力的かもしれません。ただし、他の人が提案したようなリンクの目的を説明する名前を選択することもできます。これにより、id列の名前を短くすることができます(リンクに独自の名前付きidが必要で、他のテーブルで参照されている場合)。
また、用語Associative table usedを聞いたことがあります。
テーブルの名前はColorShapeAssociations
になる場合があります。これは、各行がその色と形状の間の関連付けを表すことを意味します。行の存在は、色がその形状になり、形状がその色になったことを意味します。特定の色を持つすべての行は、色が関連付けられているすべての形状のセットになり、特定の形状の行は、その形状が入ってくるすべての色のセットになります...
これほどarbitrary意的な何かに答えるのは難しいですが、私は基になる関係の一般的な説明ではなく、実際のドメインで何かにちなんで命名するというトッシュのアイデアを好む傾向があります。
多くの場合、この種のテーブルは、ドメインモデルにとってより豊かなものに進化し、リンクされた外部キーを超えて追加の属性を取ります。
たとえば、色に加えてテクスチャを保存する必要がある場合はどうなりますか? SHAPE_COLORテーブルを拡張してそのテクスチャを保持するのは少しファンキーに思えるかもしれません。
一方、現在の要件に基づいて十分な情報に基づいた決定を下し、後で追加の要件が導入された場合にリファクタリングする準備を整えるために、何か言うこともあります。
とはいえ、後で表面のような追加のプロパティが導入されるという洞察があれば、SURFACEと呼びます。そうでない場合は、SHAPE_COLORまたはそのようなものを呼び出して、より差し迫った設計上の問題に進むことに問題はありません。
「多対多」テーブル。私はそれを「ColourShape」またはその逆と呼びます。
私は常に「ハンバーガーテーブル」という用語に偏っていました。理由がわからない-それはただいいですね。
ああ、私はどちらがより一般的に使用されるテーブルであるかによって、テーブルShapeColorまたはColorShapeを呼び出します。
たぶんColoredShape
?
質問があるかどうかわかりません。これはこの特定のケースに関するものですか、それとも一般的なガイドラインをお探しですか?
私は個人的にはアンダースコアを付けてColour_Shapeに行きます。というのも、この規則がかなり盛り上がったからです。 [しかし、これを行うにはもっと「詩的な」方法がおそらくあるという、ここの他の投稿に同意する]。
また、この結合テーブルで外部キーを構築する必要があります。このテーブルは、色と形状の両方のテーブルを参照し、関係の識別にも役立ちます。
私が個人的に好きなテーブルに参加するためによく見かける慣習は、「Colour_v_Shape」です。
テーブルが多対多の関係を表していることが一目で非常に明確になり、複合単語を形成する可能性のある2つの単語(たとえば、「バター」)を連結しようとすると(まれではありますが) 「ミルク」は「バターミルク」になるかもしれませんが、「バターミルク」と呼ばれるエンティティを表す必要がある場合はどうでしょうか?
このようにすると、「Butter_v_Milk」と「Buttermilk」が得られます。混乱はありません。
また、元の質問にFoo Fightersの参照があると思います。
結合されるテーブルの正確な名前= ColorShapeを使用して名前を付けます。
Developer Artが関連しているものに依存して、
ColorShape
通常の命名規則になります。 ER図では、関係になります。
私の投票は、テーブルを最もよく説明する名前に対するものです。この場合、それはShapeColor
かもしれませんが、多くの場合、連結とは異なる名前の方が適しています。私は読みやすさが好きで、meの場合、接尾辞、下線、接頭辞がありません。
意味に応じて、r_shape_colors
またはr_shape_color
を使用します。r_
は、この場合xref_
の代わりになります。
それを相互参照表と呼びます。
XREF_COLOR_SHAPE
(
XCS_ID INTEGER
C_ID INTEGER
S_ID INTEGER
)