【问题标题】:Modeling multiple relationship ERD and SQL多关系 ERD 和 SQL 建模
【发布时间】:2021-12-30 02:00:02
【问题描述】:

我是数据库新手,我必须为两个实体集之间的关系建模:预订和用户。我在它们之间创建了两种关系(多对多和一对多),例如

在 SQL 中,我创建了 3 个表:Booking、Users 和联结表 Booking_Users like i

简而言之,我想要实现的是:一个用户可以进行多次预订。一份预订可以供多人使用,他们将被添加到用户表中。每个用户可以关联多个预订。我必须存储有关谁负责预订的信息(Bookings 表中有一个外键 User_id)以及分配给哪些预订用户(此信息存储在联结表中)。 我的问题是,这是建立这种关系的好方法吗?

【问题讨论】:

  • 小心。术语可能会造成混淆和误导,但它也会为您提供可以忽略的信息。 “一个用户可以预约”与“一个预约可以多人预约”是不一样的。对我来说,这是两组不同的信息。进行预订的人不一定是以某种方式为其预订的人之一”。旅行社将为许多不同的人进行大量预订,但预订不是代理的。

标签: sql sql-server database entity-relationship erd


【解决方案1】:

没关系。缺点是它没有强制执行“主要用户”是“预订用户”之一的规则。您可以通过将外键从 Booking 设置为 Booking_User(BookingId,UserId) 来强制执行此操作,但这会使 DML 有点复杂,因为在添加 Booking_user 之前您无法设置主用户。

常见的替代设计是将 IsPrimary 列添加到 Bookings_Users 联结表。但这两种设计都很常见。

【讨论】:

  • 感谢您的回答。我之前没有提到过,但是“主要用户”是“预订用户”之一这一事实是该数据库的要求之一。哪个是更好的做法 - 我的解决方案或添加 IsPrimary 列?或者也许一样好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 2021-10-11
  • 1970-01-01
相关资源
最近更新 更多