我有两张桌子:
**FamilyHeads**
HeadID | HeadName
**FamilyMembers**
MemberID | MemberName
现在,我希望如果存在家族头,那么只有家庭成员可以插入FamilyMembers表中。为此,我是否应该在FamilyMembers表中包含HeadID列,并从FamilyHeads表中引用它。或者解决方案是什么。我知道我必须使用主键和外键但不确定实现。请帮忙解释一下代码。
答案 0 :(得分:1)
添加主键
ALTER TABLE FamilyHeads WITH CHECK ADD
CONSTRAINT PK_FamilyHeads PRIMARY KEY CLUSTERED (HeadID)
GO
ALTER TABLE FamilyMembers WITH CHECK ADD
CONSTRAINT PK_FamilyMembers PRIMARY KEY CLUSTERED (MemberID)
GO
添加外键列
--Same datatype, NOT NULL!
ALTER TABLE FamilyMembers ADD
HeadID int NOT NULL
GO
添加FK
ALTER TABLE FamilyMembers WITH CHECK ADD
CONSTRAINT FK_FamilyMembers_FamilyHeads FOREIGN KEY (HeadID)
REFERENCES FamilyHeads (HeadID)
GO
你有重复的HeadNames吗?如果没有
ALTER TABLE FamilyHeads WITH CHECK ADD
CONSTRAINT UQ_FamilyHeads_HeadName UNIQUE (HeadName)
GO
如果是,您如何知道哪些成员添加到哪个成员?
在HeadID上为FamilyMembers添加一个非唯一索引