2016-07-19 8 views
4

「他の3つのテーブル(B、C、D)のいずれかのレコード」を参照するデータが含まれているテーブルAがあります どうすればそれらの間に関係を作成できますか? 最も簡単な方法は、id(レコードの)とこれらの3つのテーブルの1つを参照し、 "if条件"でターゲットレコードに接続するカラムテーブルを参照するカラム 'reference_id'を定義することです。このような状況に対処するためのより良い方法になります。この複雑な状況でmysqlのテーブル間の関係を作る方法は?

image of tables

+1

ここではテーブルの継承が便利だと思いますが、残念ながらMySQLはそれをサポートしていません。 B、C、Dテーブルの共通テーブルを作成し、外部キーを使用してその共通テーブルにB、C、Dをリンクすることによって、テーブルの継承をシミュレートできます。 –

+0

ありがとう@RomanHocke – pemi

+1

参照:http://stackoverflow.com/questions/922184/why-can-you-not-have-a-foreign-key-in-a-polymorphic-association/922341#922341 –

答えて

1

3つのこの問題の解決策があります。

リファレンスカラムを使用して既に説明したものです。
2番目の解決方法は、ローマの言葉通りにアプリケーションレベルで行うことです。
もう1つは、テーブルAに3つの列があり、それぞれ(B,CD)です。 テーブルBのレコードを参照するときは、b_idの列を入力し、c_idd_idをnullに設定します。このようにして、外部キーも使用できます。

関連する問題