2012-03-21 6 views
3

メンバー、雇用者、および場所の3つのテーブルがあります。SQL:チェック制約は他のテーブルによって異なります

メンバーには、MemberID、EmployerID、およびLocationIDがあります。
雇用者にはEmployerIDがあります。
ロケーションには、EmployerID、LocationIDがあります。

を言う、私はメンバーにチェック制約を作成する必要があり

Member <<---> Employer 
Location <<---> Employer 
Member <---> Location 

メンバーの場所はどちらかnullの場合、またはその雇用主に

に属する場所はどうやってメンバーを制限します。同じEmployerIDを持つ場所へのLocationID?すなわち:Member.EmployerID = Location.EmployerID

答えて

1

あなたは

はその後FKが参照する複数の列を持っている(私はこれがうまく既に場合であってもよいことにそれを取る)Location (EmployerID, LocationID)に一意索引/主キーを作成することができMember

CREATE TABLE Location 
(
EmployerID INT, 
LocationID INT, 
PRIMARY KEY (EmployerID,LocationID) 
) 


CREATE TABLE Member 
(
MemberID INT PRIMARY KEY, 
EmployerID INT, 
LocationID INT, 
FOREIGN KEY (EmployerID,LocationID) 
    REFERENCES Location (EmployerID,LocationID) 
) 
から
関連する問題