问题标题可能有点神秘,但我无法想出一个有意义的简短版本。如何指定一个弱实体指向两个共享第四个实体的其他弱实体?
所以我有一个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表的外键引用。 –