我有一个包含以下列的表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菜鸟)
答案 0 :(得分: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号,那么您做错了。但这是一个不同的问题。