Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
134
Help us understand the problem. What is going on with this article?
@tkawa

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

More than 1 year has passed since last update.

問題

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

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

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

134
Help us understand the problem. What is going on with this article?
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
sonicgarden
「お客様に無駄遣いをさせない受託開発」と「習慣を変えるソフトウェアのサービス」に取り組んでいるソフトウェア企業

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
134
Help us understand the problem. What is going on with this article?