這不是一個糟糕的設計,但你可能會發現這樣的設計更加有用:
Attachment
AttachmentId (pkey)
Answer
AnswerId (pkey)
AttachmentId (fkey)
Action
ActionId (pkey)
AttachmentId (fkey)
這允許您擁有沒有動作的附件,沒有將數據值設置爲NULL
,並且siple連接顯示相同附件的所有動作和答案,而不是條件連接
(僞)
select * from Attachment
outer join Answer on Answer.AttachmentId = Attachment.AttachmentId
outer join Action on Action.AttachmentId = Attachment.AttachmentId
如果動作/答案都可以具有與其相關的多個附件,那麼你會修改這包括交叉聯接:
Attachment
AttachmentId (pkey)
Answer
AnswerId (pkey)
Action
ActionId (pkey)
AttachmentAnswer
AttachmentAnswerId (pkey)
AttachmentId (fkey)
AnswerId (fkey)
AttachmentAction
AttachmentActionId (pkey)
AttachmentId (fkey)
ActionId (fkey)
Woops,知道我會做一個錯誤我實際上使用我的ID的整數。我已經更新了這個問題,並對此表示道歉。 – CoopDog
您可能需要考慮切換到此應用程序的GUID,因爲您可以從唯一性中獲得一些好處。有關更多信息,請參閱http://www.codinghorror.com/blog/2007/03/primary-keys-ids-versus-guids.html。 –