Это очень много для меня. В SQL Server 2008 у меня есть 3 таблицы. 2 с уникальными ключами и 1, который является отображением между ними. Пример:Композитные внешние ключи
People Events Schedule
------ ------ --------
PersonId EventId ScheduleId
Name Place PersonId
EventId
Rsvp
ScheduleId
не требуется, если я делаю сложный ключ. Я знаю, как сделать составной ключ, как этот
ALTER TABLE Schedule ADD CONSTRAINT CK_Schedule_PersonId_EventId
UNIQUE NONCLUSTERED (PersonId, EventId)
, но я не знаю, как сделать тот, который также правильно отображает для внешних ключей. Как я могу это сделать? Кроме того, если я ошибаюсь, и предпочитается способ ScheduleId
, скажите почему.
Как вы думаете, я должен использовать один первичный ключ с ограничением для предотвращения дублирования спаривания или оставить его для моей бизнес-логики для обеспечения соблюдения? – Dinah
+1: «schedid» также используется ленивым программистом, который просто не хочет нервотрепки ссылок на столбцы 2+ для первичного ключа. Кроме того, составной ключ не должен быть первичным ключом, но это имеет место для этого примера. –
@ Dinah: первичный ключ с одним столбцом и сопутствующие уникальные ограничения являются чрезмерно сложными. Если для первичного ключа одного столбца не используется, сделайте составной первичный ключ. –