這對我來說很重要。在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