2010-12-02 46 views
0

étrangers j'ai 4 tables:avec de multiples références clés

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 

Comme vous pouvez le voir, je dois faire une distinction entre le propriétaire en raison des différents champs.

Comment puis-je relier toute la table avec mysql et nhibernate?

Répondre

1

Vous ne pouvez pas faire cela - c'est contraire aux principes de base de la conception de base de données relationnelle. Une clé étrangère ne peut faire référence à jamais une seule et une seule table - vous ne pouvez pas avoir une clé étrangère qui fait référence à l'une des trois tables ...

Ce que vous devez faire est d'avoir trois clés FK dans votre tbl_carOwner

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

et de préférence assurez-vous seulement une de ces clés si valide (NOT NULL) à un moment donné.