我有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联系起来?
答案 0 :(得分:1)
你不能这样做 - 它违背了关系数据库设计的基本原则。外键只能引用一个且只能引用一个表 - 您不能拥有引用三个表之一的外键...
您需要做的是在tbl_carOwner
ownerIdPersonal (FK to tbl_ownerPersonal)
ownerIdCompany (FK to tbl_ownerCompany)
ownerIdGov (FK to tbl_ownerGov)
并且最好在任何给定时间确保只有其中一个密钥有效(NOT NULL)。