Oh! Yummy!!

プログラミングとか投資のこととかご飯のこととかを書きます。

DBのテーブルは分けよう(いや分けてくれ)という話

タイトルだけだと何を言っているのかまったくわからないだろうからちょっと具体的に書く.

例えば,人の情報を保持するテーブルを作るとして,以下のような項目を持たせたい.

個人情報テーブル

  • 個人ID
  • 個人名
  • 年齢
  • 所属グループ


こんなの簡単じゃんと思って普通に一つのテーブルにまとめる設計を見たわけなんだが,
所属が複数あったらどうする??

カンマ区切り??
所属1, 所属2.... とカラムを追加する??

それでいいと思った人はマシュマロでも食べて,お風呂入ってきてくれ.

テーブルの持ち方なんだけど,こんな感じにしたらメンテナンスが楽になりそうだと思わない??

個人情報テーブル

  • 個人ID
  • 個人名
  • 年齢

グループテーブル

  • グループID
  • グループ名

対応表テーブル

  • 個人ID
  • グループID


対応表があればSQL発行時にもテーブル結合するだけでいいし
もっといい方法があったらぜひ教えてください.