Help us understand the problem. What is going on with this article?

交差テーブルには関連の意味を表す名前をつけよう

問題

多対多の関連を作るときの交差テーブル(中間テーブル、関連テーブルなどとも呼ばれる)にどのような名前をつけていますか?

2つのテーブル名を単純につなげた users_magazines のような命名を見かけますが、これはあまり良い名前ではありません。

実体関連モデル - Wikipedia

実体 (entity) は名詞に対応すると考えることができる。例えば、コンピュータ、従業員、楽曲、数学的定理といった名詞である。

関連 (relationship) は2つの実体間の関係を捉えたものである。関連は2つ以上の名詞句を結び付ける動詞に対応すると考えることができる。例えば、企業とコンピュータの間の「所有する」(owns) という関連、従業員と部門の間の「監督する」(supervises) という関連、アーティストと楽曲の間の「演奏する」(performs) という関連、数学者と定理の間の「証明した」(proved) という関連などである。

交差テーブルは関連(relationship)から生まれているものなので、関連の意味を表す命名をしましょう。

考え方

AとBというテーブルの交差テーブルの場合

A [動詞] B (AがBを○○する、した、している)
人 [動詞] A B (AにBを○○する、した、している)

となる動詞を考える。その動詞を「○○すること」と名詞の形に変えたものが必要な名前。これをCとする。

動詞の名詞形は、辞書を引くこと。場合によっては動詞語尾を変えた形よりも適切な単語がある場合もある。動詞と同形の場合もある。
見つからない場合は、動名詞(-ing)を使う。

Cが決まったら、ABCと連結した名前を作り、冗長なものや明らかなものを削る。

例:userとmagazineの場合

userがmagazineを購読する
購読する=subscribe
subscribeの名詞形はsubscription
連結してuser_magazine_subscription
このDBの中でsubscriptionがuserとmagazineの関係であることが明らかなら、userとmagazineを省略しsubscriptionとする。

単数形にするか複数形にするかは別途規約で定めましょう。

ちなみに複数形を採用する場合、Cは抽象的な名詞や動名詞なので不可算名詞になることがありますが、気にせず複数形にするのがよいと思います。なぜなら「レコード」や「行」は数えられるものだからです。(“Two coffees”と言えるのと同じ理由)

名前の例

  • subscription (user <=> magazine)
  • belonging, membership (user <=> group)
  • friendship, relationship (user <=> user)
  • tagging (thing <=> tag)
  • categorization (thing <=> category)
  • enrollment (user <=> course)
  • affiliation
  • ownership
  • assignment (user <=> task)
  • offer (school <=> course)
  • employment (employee <=> company)
  • participation
  • like, favorite

自己結合の場合のそれぞれの呼び方

  • source, target
  • origin, destination
  • follower, followee
  • object, subject

もっと例を集めて共有すれば、それだけでかなりの部分で適切な命名ができるようになるはず!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした