多个引用外键的问题

时间:2010-12-02 15:02:14

标签: nhibernate foreign-keys

我有4张桌子:

1 - tbl_cars

id (PK)
car_name
model
year

2 - tbl_carOwner

id (PK)
carId (FK - reference to tbl_cars)
ownerId (FK - reference to tbl_ownerPersnoal or tbl_ownerCompany or tbl_ownerGov) 
ownerType (to make a differentiation about owner) 

3 - tbl_ownerPersonal

id (PK)
name
ic_no
address

4 - tbl_ownerCompany

id (PK)
registration_no
business_type
name
address
fax
mail

5 - tbl_ownerGov

id (PK)
agency_name

正如您所看到的,我需要区分所有者,因为不同的领域。

如何将所有表与mysql和nhibernate联系起来?

1 个答案:

答案 0 :(得分:1)

你不能这样做 - 它违背了关系数据库设计的基本原则。外键只能引用一个且只能引用一个表 - 您不能拥有引用三个表之一的外键...

您需要做的是在tbl_carOwner

中有三个FK密钥
ownerIdPersonal  (FK to tbl_ownerPersonal)
ownerIdCompany   (FK to tbl_ownerCompany)
ownerIdGov       (FK to tbl_ownerGov)

并且最好在任何给定时间确保只有其中一个密钥有效(NOT NULL)。