0

我有 2 张桌子:

**FamilyHeads**
HeadID   | HeadName      


**FamilyMembers**
MemberID  |  MemberName      

现在,我希望如果存在族长,则只能将家庭成员插入 FamilyMembers 表中。为此,我是否应该在我的 FamilyMembers 表中也包含 HeadID 列并从 FamilyHeads 表中引用它。或者有什么解决方案。我知道我必须使用主键和外键,但不确定实现。请帮助提供代码。

4

1 回答 1

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

添加外键

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 添加一个非唯一索引

于 2011-03-23T06:02:43.420 回答