这对我来说很重要。在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 2009-12-23 17:51:27
+1:'scheduleid'也被懒惰的程序员使用,懒惰的程序员根本不想为主键引用2+列的麻烦。另外,组合键不一定是主键,但是这个例子就是这种情况。 – 2009-12-23 17:51:36
@Dinah:单列主键和伴随的唯一约束是过度复杂的情况。如果没有使用单列主键,则将组合键设为主键。 – 2009-12-23 17:53:12