きっかけ
RDBにおいて、変異と患者、変異とメタデータ等、多対多の関係で複数のテーブルを紐づける際に必要なのが(厳密に言うと定義すべきなのが)、交差テーブルです。
(参照:SQLアンチパターン - ジェイウォーク)
この命名法として、variants_patients
みたいに結合するテーブル同士を_
でつなげただけのテーブル名で定義していた。
reference_id_table
とか、id_table
とかで定義している時もあった。これだと交差テーブルが複数使われる場合に対応できない。reference_id_table_2
とか、id_table_2
が出てくるのかと。
不安があった。 なんとなくこれじゃない感がしてた。
やっぱ違うらしい
2つのテーブル名を単純につなげた users_magazines のような命名を見かけますが、これはあまり良い名前ではありません。
参照:交差テーブルには関連の意味を表す名前をつけよう
あまり良い名前じゃないらしい。。
交差テーブルは関連(relationship)から生まれているものなので、関連の意味を表す命名をしましょう。
参照:交差テーブルには関連の意味を表す名前をつけよう
動詞を使うといいらしい。。
AとBというテーブルの交差テーブルの場合 A [動詞] B (AがBを○○する、した、している) 人 [動詞] A B (AにBを○○する、した、している) となる動詞を考える。その動詞を「○○すること」と名詞の形に変えたものが必要な名前。これをCとする。 動詞の名詞形は、辞書を引くこと。場合によっては動詞語尾を変えた形よりも適切な単語がある場合もある。動詞と同形の場合もある。 見つからない場合は、動名詞(-ing)を使う。 Cが決まったら、ABCと連結した名前を作り、冗長なものや明らかなものを削る。
参照:交差テーブルには関連の意味を表す名前をつけよう
納得。
SQLアンチパターンでも
Accounts
テーブルと Products
テーブルを結合する際に Contracts
テーブルを使用している。
わかりやすいかは微妙だがかっこいい。
変異と患者の関係とは
have
な気がする。
→ patient_have_mutation
とか?
誰かもっとセンスあるテーブル名下さい。
交差テーブルの主キー
交差テーブルは必要だったら付けましょう。
必要だったらの判断が難しいところですが、IDの対応によって検索したい場合に入れるでいい気がします。
主キーの名前は結合する各テーブルの主キーをカンマ区切りでつなげたモノ(例えば (product_id, account_id)
)が良いでしょう。
参考

- 作者: Bill Karwin,和田卓人,和田省二,児島修
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/01/26
- メディア: 大型本
- 購入: 9人 クリック: 698回
- この商品を含むブログ (46件) を見る