0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

外部キーを複数設定したい場合のテーブル設計

Last updated at Posted at 2020-03-10

概要

以下のようなテーブルを想定する。

userテーブル

id name pet
user1 太郎
user2 花子

dogテーブル

id name
dog1 ポチ

catテーブル

id name
cat1 タマ

userテーブルのpetカラムに外部キーをdogテーブルのidとcatテーブルのidと2つ設定したいが、
外部キーは1つだけしか設定できない。

解決法1:参照先の親テーブルを作成する

userテーブル

id name pet
user1 太郎 pet1
user2 花子 pet2

petテーブル

id
pet1
pet2

dogテーブル

id name
pet1 ポチ

catテーブル

id name
pet2 タマ

petテーブルという親テーブルを作成し
userテーブルのpetカラムの外部キーを1つにする。

解決法2:子テーブルを作成する

userテーブル

id name
user1 太郎
user2 花子

user_dogテーブル

id dog
user1 dog1

user_catテーブル

1 2
user2 cat2

dogテーブル

id name
dog1 ポチ

catテーブル

id name
cat1 タマ

user_dogテーブルとuser_catテーブルをというように外部キーによって異なるテーブルを作成する。
ちなみにテーブル情報を取得する際はuser_dogとuser_catをUNIONで和集合を作成しuserテーブルにJOINする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?