0

次の列を含むテーブル A があります

ID(PK)  id_1   
1         4
2         10
3         15
4         4

今、次のような列を持つテーブル B を作成しようとしています。

ID(PK) Description   id_1_a_id (composite foreign key(ID,id_1))  
1        Apple         (1,4)
2        Orange         (2,10)
3        Banana         (3,15)
4        dog             (4,4)
5        

このデザインは意味がありますか?または、これを行うより良い方法はありますか?(SQL新人)

4

1 に答える 1

1

複合外部キーは一般的で便利ですが、持っていません。もしそうなら、それはこのようになります。

ID(PK) Description     A_id     id_1
--
1        Apple         1        4
2        Orange        2        10
3        Banana        3        15
4        dog           4        4

しかし、あなたも通常はそうしないでしょう。通常、テーブル A の一意の列セットを参照します。一意の列セットは、単一の列 A.ID です。したがって、通常、テーブルは次のようになります。

ID(PK) Description     A_id
--
1        Apple         1   
2        Orange        2   
3        Banana        3   
4        dog           4   

通常、テーブル B で A.id_1 の値を複製することはありません。A.id_1の値が必要な場合は、JOIN を使用してクエリを記述します。

select B.ID, B.Description, A.ID, A.id_1
from B
inner join A on A.ID = B.A_id;

テーブルにある唯一の一意の制約が ID 番号にある場合は、間違っています。しかし、それは別の質問です。

于 2013-08-08T21:00:50.253 に答える