問題標題可能有點神祕,但我無法想出一個有意義的簡短版本。如何指定一個弱實體指向兩個共享第四個實體的其他弱實體?
所以我有一個Booking
表,這是一個Customer
和Event
之間的多對多關係。我也有一個event_activity
表,這是一個Event
和Activity
之間的多對多關係。
我現在想要預約能夠指定要參加哪項活動的活動。所以我有booking_event_activity
,這是Booking
和event_activity
之間的多對多。
顯然booking_event_activity
會需要外鍵Customer
和Activity
(這也將是它自己的複合主鍵的一部分),但我怎麼指定最後的外鍵,這將是一個事件的主鍵?我是否做到這一點:
- 預訂的事件外鍵的外鍵?
- event_activity的外鍵事件外鍵?
- 兩個外鍵,1和2中的每一個。
- 一個外鍵直接指向Event表的主鍵?
我認爲你錯誤地組織你的數據。您的event_activity表可以將其自己的主鍵與事件和活動的複合索引分開,這可以通過預訂表作爲外鍵引用。 –
@JeremyHolovacs這會工作,除了這是作業,我不允許引入任何代理鍵。所以event_activity的PK必須是其兩個FK的組合。這是你的意思嗎?你知道我如何解決原來的問題嗎? –
好吧,這是醜陋的數據庫設計(和一個糟糕的作業問題),但在這種情況下,你堅持使用eventid和activityid列作爲預訂表中的event_activity表的外鍵引用。 –