【问题标题】:Should I join a join table to another table?我应该将连接表加入另一个表吗?
【发布时间】:2018-09-29 07:57:41
【问题描述】:

假设我正在构建一个便餐组织应用程序。我有一个跟踪参与者和事件 (MTM) 的连接表,我还有一个菜肴表,其中包含与每个参与者 (OTM) 相关联的独特菜肴。参与者将报名参加活动并同意带上他们的一种或多种菜肴。

ParticipantEvents 联接表将跟踪 RSVP,但跟踪参与者对该事件贡献了哪些菜肴的最佳方法是什么?

我应该在 Dishes 和 Events 之间创建一个连接表吗? 我应该在 ParticipantEvents 连接表和 Dishes 表 (ParticipantEventsDishes) 之间创建一个连接表吗? 有没有更好的办法?

【问题讨论】:

  • 我会在菜品和参与者事件之间创建一个连接表。
  • @Pablo 说了什么。另外,我会考虑让参与者可以注册为活动带来许多菜肴 - 以防您的参与者感到慷慨。
  • 参与者与菜品的关联性如何?只使用 Dishes.participant_id 吗?在您的问题中显示所有表格和字段怎么样?
  • brookz,你说得对。 “...一个菜肴表,其中包含与每个参与者 (OTM) 相关的独特菜肴。”一个参与者有很多菜。

标签: ruby-on-rails postgresql database-design


【解决方案1】:

对我来说,这个案子看起来像是一种三元(三元)关系。所以我会创建一个三向连接表,带有三个外键。

Promised (DishID, EventID, ParticipantID)

现在您可以将这与所有三个表连接起来,以生成所有参与者的详细信息。请注意,参与者可以为一个活动承诺不止一道菜。

【讨论】:

  • 我明白了。因此,通过这种设计,参加活动的参与者带来 2 道菜,将使用 2 行数据。这听起来是迄今为止最好的解决方案!
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 2018-01-13
  • 2015-07-02
  • 2020-09-28
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 2019-11-04
相关资源
最近更新 更多