использование ключей и ограничений в SQL Server Express - PullRequest
0 голосов
/ 23 марта 2011

У меня есть 2 таблицы:

**FamilyHeads**
HeadID   | HeadName      


**FamilyMembers**
MemberID  |  MemberName      

Теперь я хочу, чтобы, если глава семьи существует, в таблицу FamilyMembers можно было вставить только членов семьи. Для этого я должен включить столбец HeadID также в мою таблицу FamilyMembers и сослаться на него из таблицы FamilyHeads. или каково решение для этого. Я знаю, что я должен использовать первичные и внешние ключи, но не уверен с реализацией. Пожалуйста, помогите с кодом.

1 Ответ

1 голос
/ 23 марта 2011

Добавить первичные ключи

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

Если да, как вы узнаете, каких членов добавить к какой голове?

И добавить неуникальный индекс в FamilyMembers для HeadID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...