我有 2 张桌子:
**FamilyHeads**
HeadID | HeadName
**FamilyMembers**
MemberID | MemberName
现在,我希望如果存在族长,则只能将家庭成员插入 FamilyMembers 表中。为此,我是否应该在我的 FamilyMembers 表中也包含 HeadID 列并从 FamilyHeads 表中引用它。或者有什么解决方案。我知道我必须使用主键和外键,但不确定实现。请帮助提供代码。
我有 2 张桌子:
**FamilyHeads**
HeadID | HeadName
**FamilyMembers**
MemberID | MemberName
现在,我希望如果存在族长,则只能将家庭成员插入 FamilyMembers 表中。为此,我是否应该在我的 FamilyMembers 表中也包含 HeadID 列并从 FamilyHeads 表中引用它。或者有什么解决方案。我知道我必须使用主键和外键,但不确定实现。请帮助提供代码。
添加主键
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
添加外键
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 添加一个非唯一索引