2015-12-04 81 views
0

我只是想知道这样一个简单示例的最佳实现是什么。表之间的多对多关系 - 如何在SQL中建模

如果我下面有2个表格,并且一个单位有多个升级是可变量,我正在考虑以CSV格式保存一个升级ID列表,然后我加载该单元并从列表中提取ID升级ID。

我只是觉得有可能有​​更好的方法来实现这个,因为我已经工作了很长一段时间,我不确定这是最佳实践还是我可能无法预见的任何问题。

单位 { ID,姓名,升级 }

升级 { ID,名称,描述 }

+2

这就是所谓的正常化。第一种方法(逗号分隔值)违反1范式(列中只有原子数据) – lad2025

+2

relationshsip是一对多还是多对多?基本上可以将一个升级与多个设备关联吗?对于一对多,你需要在升级表中使用外键。对于多对多,你需要一个单独的表格,将单元和升级映射到对方。 – juharr

+0

我听说过关于这本书“数据库设计仅仅是人类”的好消息。 –

回答

5

这听起来像一个多一对多的关系:一个单位可以有许多升级,并可以在许多单位上设置升级。

您可以创建一个中间表像UnitUpgrade:

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

是的,多个单位也可以有相同的升级。我没有想到一个很有意义的中间表,我在一段时间内没有使用过SQL,所以不确定最好的方法,谢谢。 – Prisoner42

相关问题