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 回答