2010-12-02 1 views
0

У меня есть 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

Вы не можете этого сделать - это противоречит основным принципам проектирования реляционных баз данных. Внешний ключ может только когда-либо ссылаться на один и только один стол - вы не можете иметь внешний ключ, ссылающийся на один из трех таблиц ...

Что вам нужно сделать, это есть три клавиши FK в вашем tbl_carOwner

ownerIdPersonal (FK to tbl_ownerPersonal) 
ownerIdCompany (FK to tbl_ownerCompany) 
ownerIdGov  (FK to tbl_ownerGov) 

и желательно убедиться, что только один из этих ключей действителен (NOT NULL) в любой момент времени.