【问题标题】:Many-to-many relationship between tables - how to model in SQL表之间的多对多关系——如何在SQL中建模
【发布时间】:2015-12-04 21:19:23
【问题描述】:

我只是想知道像这样的简单示例的最佳实现是什么。

如果我在下面有 2 个表格并且一个单元有多个升级,这些升级是可变数量的ID。

我只是觉得可能有更好的方法来实现它,因为我已经有一段时间没有使用 SQL 了,我不确定这是否是最佳实践或我可能无法预见的任何问题。

表格

单位 { ID、姓名、升级 }

升级 { ID、名称、描述 }

【问题讨论】:

  • 这称为规范化。第一种方法(逗号分隔值)违反 1 范式(列中只有原子数据)
  • 关系是一对多还是多对多?基本上一个升级可以与多个单元相关联吗?对于一对多,您需要升级表中的外键。对于多对多,您需要一个单独的表格,将单元和升级相互映射。
  • 我听说过《为凡人设计数据库》这本书的好消息。

标签: sql


【解决方案1】:

听起来像是多对多的关系:一个单元可以有很多升级,升级可以设置在多个单元上。

你可以创建一个像 UnitUpgrade 这样的中间表:

Unit     UnitUpgrade     
Id   --- UnitId          Upgrade
Name     UpgradeId   --- Id
                         Name
                         Description

【讨论】:

  • 是的,多个单元也可以进行相同的升级。我没有想到一个很有意义的中间表我已经有一段时间没有使用 SQL,所以不确定最好的方法,谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
相关资源
最近更新 更多