【问题标题】:Relationship Database, many to many关系数据库,多对多
【发布时间】:2017-03-18 03:22:26
【问题描述】:

如何在关系数据库(例如 MySQL)中以图表的形式表示以下情况:

1) 一个用户可以成为许多不同活动的组织者

2) 一个活动只能有一个组织者

3)和事件可以有很多参与者(都在用户表之间)

4) 一个用户可以参与多个事件(仅当事件从头到尾不与另一个事件发生冲突时)

这是DB的草图,我必须了解这种多对多关系。

【问题讨论】:

  • 我想你差不多了。我建议将 Events_has_Users 表重命名为 Users_Attending_Events。在此表上,主键也是 Users_UserId 和 Events_EventsId。这不需要那里的事件管理器,因为它在事件表中定义为外键(组织器)。表 Events_has_Users 放置在那里以解决用户和事件之间的多对多关系。许多用户参加了许多活动。我认为它是在 mysql-workbench 中自动呈现的(即解决这种多对多关系与之间的表。
  • 好的,谢谢,但仍然有一些错误,表事件不应该将组织者作为主键,我如何考虑用户可以参加许多活动和一个活动可以由许多用户参加的事实?因为 Events 表没有唯一的主键?
  • 啊,好吧,也许我知道Events_eventID 和Users_userID 都是Events_has_User 表的主键,对吧?

标签: mysql database mysql-workbench entity-relationship


【解决方案1】:

我想你差不多了。

现在,我建议将 Events_has_Users 表重命名为 Users_Attending_Events,因为这样会更清楚。在这个表上,主键也是 Users_UserId 和 Events_EventsId,它们实际上是外键。主键和外键在 Workbench 中自动完成。

这里不需要事件管理器,因为它在事件表中定义为外键(组织器)。

这是一个更清晰的演绎。只需填写其他字段:

在表事件中,users_id 是组织者(外键)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    相关资源
    最近更新 更多