无法在2个表之间设置外键

时间:2015-06-07 02:24:49

标签: sql-server foreign-keys unique primary-key entity-relationship

我有两张桌子:

Clients
-------
(PK)id
family
name
...
(PK)idprovincia
(PK)idsesion


Brothers
--------
(PK)id
(PK)idclient
name

我想在兄弟和客户之间设置一个外键。我的意思是,客户可以有几个兄弟,但SQL Server不允许我这样做。

然而,我可以为PROVINCIAS和SESIONES设置idprovincia和idsesion(我没有指定的其他表,因为它们没有问题)

此外,我尝试将idclient设置为UNIQUE,但是,再一次,SQL Server Management Studio不允许我创建外键。

我该如何管理?

由于

2 个答案:

答案 0 :(得分:1)

您问题的简短回答:

客户

(PK)id - identity field, auto-incremented
family
name
...
idprovincia (could have unique constraints or not - doesn't matter in this case)
idsesion (could have unique constraints or not - doesn't matter in this case)

兄弟

(PK)id - identity field, auto-incremented
(FK)idclient (not unique as it participates in One-to-Many relationship)
name

还要确保PK / FK使用相同的数据类型。

希望这可能会有所帮助。

答案 1 :(得分:0)

外键约束是创建零到多基数,以确保其中具有第一个表的主键的第二个表具有每个主键的数据。 对于Ex:电子商务数据库中的客户ID充当客户表中的主键,并在订单表中称为外键。客户在订单表中可以有0到n个订单。在这里,外键确保客户与他所做的每个订单相关联。

关于你的表: -

客户端:

(PK)client_Id - autogen   姓   .. 兄弟:

(PK)brother_Id - autogen  (FK)client_Id   姓氏