web-dev-qa-db-ja.com

2つのテーブルを一緒にマップするテーブルの名前は何ですか?

2つのテーブルがあるとしましょう:

Table: Color
Columns: Id, ColorName, ColorCode

Table: Shape
Columns: Id, ShapeName, VertexList

色を形状にマッピングするテーブルを何と呼ぶべきですか?

Table: ???
Columns: ColorId, ShapeId
121
devuxer

コンピューターサイエンスには、キャッシュの無効化と命名の2つの困難なものしかありません
- Phil Karlton

many-to-many関係を表すテーブルの適切な名前を考え出すと、関係を読みやすく理解しやすくなります。時々、素晴らしい名前を見つけるのは簡単ではありませんが、通常は考える時間を割く価値があります。

例:ReaderおよびNewspaper

Newspaperには多くのReadersがあり、Readerには多くのNewspapersがあります

リレーションシップNewspaperReaderを呼び出すこともできますが、Subscriptionのような名前は、テーブルの内容をよりよく伝えることができます。

Subscriptionという名前は、後でテーブルをオブジェクトにマップする場合に、より慣用的です。

many-to-manyテーブルの命名規則は、リレーションに関係する両方のテーブルの名前を連結したものです。 ColourShapeは、あなたの場合の賢明なデフォルトです。とはいえ、Nick D 思いついた 2つの素晴らしい提案:StyleTexture

165
tosh

ColorShapeMapまたはStyleまたはTextureについてはどうでしょう。

33

興味深い回答の約半分は、多対多の関係を実装するテーブルの一般的な用語を示しており、残りの半分はこの特定のテーブルの名前を示しています。

これらのテーブルを交差テーブル一般的に呼んでいます。

命名規則の観点から、ほとんどの人は、多対多の関係にある2つのテーブルを組み合わせた名前を付けます。したがって、この場合、「ColorShape」または「ShapeColor」。しかし、これは人為的で厄介に見えます。

Joe Celkoは、彼の著書「SQLプログラミングスタイル」で、これらのテーブルに自然言語で名前を付けることを推奨しています。たとえば、ShapeがColorで色付けされている場合、テーブルにColoredByという名前を付けます。次に、次のように自然に読み取れる図を作成できます。

Shape <-- ColoredBy --> Color

逆に、ColorはShapeに色を付けることができます。

Color <-- Colors --> Shape

しかし、これは中央のテーブルが複数の命名規則を持つColorと同じもののように見えます。わかりにくい。

おそらく、ColoredBy命名規則を使用するのが最も明確です。興味深いことに、受動的な音声を使用すると、命名規則がより明確になります。

22
Bill Karwin

情報を提供する限り、テーブルに好きな名前を付けます。

COLOR_SHAPE_XREF

モデルの観点から、このテーブルは結合/冠詞/相互参照テーブルと呼ばれます。私は_XREF最後に関係を明確にします。

18
OMG Ponies

マッピングテーブルは、これが通常呼ばれるものです。

ColorToShape
ColorToShapeMap
6
user151323

これは 関連エンティティ であり、それ自体が非常に重要です。

たとえば、TRAINSとTIMESの多対多の関係により、TIMETABLEが発生します。

明確な新しいエンティティ(タイムテーブルなど)がない場合、慣例では2つの単語を一緒に実行し、COLOUR_SHAPEなどを指定します。

6
Ed Guiness

私は通常、ジャンクションテーブルと呼ばれるものを聞きます。テーブルに結合する名前を付けるため、ColorShapeまたはShapeColorのいずれかを使用します。 Shapeが色を持つよりもShapeが色を持つ方が理にかなっていると思うので、ShapeColorを使用します。

4
Bill the Lizard

Junction table

[〜#〜] or [〜#〜]Bridge Table

[〜#〜] or [〜#〜]Join Table

[〜#〜] or [〜#〜]Map Table

[〜#〜] or [〜#〜]Link Table

[〜#〜] or [〜#〜]Cross-Reference Table

これは、両方のテーブルのキーがジャンクションテーブルの複合主キーを形成する多対多のリレーションシップを使用するときに使用されます。

4
priyanka.sarkar

join tableと呼ばれるDBAと協力しました。

Colour_Shapeはかなり典型的です-関係に明示的なドメイン固有の名前がない限り。

4
Dafydd Rees

中間テーブルまたは結合テーブル

好みに応じて「ColorShapes」または「ColorShape」と名前を付けます

3
Neil N

エンティティの名前を組み合わせて使用​​し、複数形にすることをお勧めします。したがって、テーブルの名前は「多対多」の接続を表します。

あなたの場合:

色+形状= ColorsShapes

3
Palindromer

一般に、ほとんどのデータベースには、インデックス、主キーなどの命名規則があります。 PostgreSQLでは、次の命名が提案されています。

  • 主キー:tablename_columnname _pkey
  • 一意の制約:tablename_columnname _key
  • 排他的制約:tablename_columnname _excl
  • 他の目的のためのインデックス:tablename_columnname _idx
  • 外部キー:tablename_columnname _fkey
  • シーケンス:tablename_columnname _seq
  • トリガー:tablename_actionname_after | before _trig

あなたのテーブルは私にリンクされたテーブルです。上記の命名規則に準拠するために、以下を選択します。

  • リンクされたテーブル:tablename1_tablename2 _lnk

テーブルオブジェクトのリストでは、リンクテーブルはtablename1の後になります。これは視覚的に魅力的かもしれません。ただし、他の人が提案したようなリンクの目的を説明する名前を選択することもできます。これにより、id列の名前を短くすることができます(リンクに独自の名前付きidが必要で、他のテーブルで参照されている場合)。

  • または「いいね!」テーブル:purposename _lnk
2
Frankenstein

また、用語Associative table usedを聞いたことがあります。

テーブルの名前はColorShapeAssociationsになる場合があります。これは、各行がその色と形状の間の関連付けを表すことを意味します。行の存在は、色がその形状になり、形状がその色になったことを意味します。特定の色を持つすべての行は、色が関連付けられているすべての形状のセットになり、特定の形状の行は、その形状が入ってくるすべての色のセットになります...

2
Charles Bretana

これほどarbitrary意的な何かに答えるのは難しいですが、私は基になる関係の一般的な説明ではなく、実際のドメインで何かにちなんで命名するというトッシュのアイデアを好む傾向があります。

多くの場合、この種のテーブルは、ドメインモデルにとってより豊かなものに進化し、リンクされた外部キーを超えて追加の属性を取ります。

たとえば、色に加えてテクスチャを保存する必要がある場合はどうなりますか? SHAPE_COLORテーブルを拡張してそのテクスチャを保持するのは少しファンキーに思えるかもしれません。

一方、現在の要件に基づいて十分な情報に基づいた決定を下し、後で追加の要件が導入された場合にリファクタリングする準備を整えるために、何か言うこともあります。

とはいえ、後で表面のような追加のプロパティが導入されるという洞察があれば、SURFACEと呼びます。そうでない場合は、SHAPE_COLORまたはそのようなものを呼び出して、より差し迫った設計上の問題に進むことに問題はありません。

1
Joe Holloway

「多対多」テーブル。私はそれを「ColourShape」またはその逆と呼びます。

1
gbn

私は常に「ハンバーガーテーブル」という用語に偏っていました。理由がわからない-それはただいいですね。

ああ、私はどちらがより一般的に使用されるテーブルであるかによって、テーブルShapeColorまたはColorShapeを呼び出します。

1
rein

たぶんColoredShape

質問があるかどうかわかりません。これはこの特定のケースに関するものですか、それとも一般的なガイドラインをお探しですか?

1
mafu

私は個人的にはアンダースコアを付けてColour_Shapeに行きます。というのも、この規則がかなり盛り上がったからです。 [しかし、これを行うにはもっと「詩的な」方法がおそらくあるという、ここの他の投稿に同意する]。

また、この結合テーブルで外部キーを構築する必要があります。このテーブルは、色と形状の両方のテーブルを参照し、関係の識別にも役立ちます。

0
monojohnny

私が個人的に好きなテーブルに参加するためによく見かける慣習は、「Colour_v_Shape」です。

テーブルが多対多の関係を表していることが一目で非常に明確になり、複合単語を形成する可能性のある2つの単語(たとえば、「バター」)を連結しようとすると(まれではありますが) 「ミルク」は「バターミルク」になるかもしれませんが、「バターミルク」と呼ばれるエンティティを表す必要がある場合はどうでしょうか?

このようにすると、「Butter_v_Milk」と「Buttermilk」が得られます。混乱はありません。

また、元の質問にFoo Fightersの参照があると思います。

0
Breeno

結合されるテーブルの正確な名前= ColorShapeを使用して名前を付けます。

0
DOK

Developer Artが関連しているものに依存して、

ColorShape

通常の命名規則になります。 ER図では、関係になります。

0
j.a.estevan

私の投票は、テーブルを最もよく説明する名前に対するものです。この場合、それはShapeColorかもしれませんが、多くの場合、連結とは異なる名前の方が適しています。私は読みやすさが好きで、meの場合、接尾辞、下線、接頭辞がありません。

0
magnus

意味に応じて、r_shape_colorsまたはr_shape_colorを使用します。
r_は、この場合xref_の代わりになります。

0
Marius Burz

それを相互参照表と呼びます。

XREF_COLOR_SHAPE
(
     XCS_ID INTEGER
     C_ID   INTEGER
     S_ID   INTEGER
)
0
EvilTeach