如何避免数据库设计中的循环引用?

时间:2016-06-29 07:15:20

标签: mysql sql database circular-reference

我为运输管理程序设计了一个数据库。 一部分似乎没问题,但我不确定如何将Package,Price和Version的组合存储到项目中,以避免循环引用。

只是数据库的简短说明: 一个包可以有一个到多个价格,并且具有一个到多个版本。所以价格独立于版本。例如。如果您有2个版本,则它们具有相同的价格。 版本可以包含一个到多个设备,并且设备可以属于多个版本。 用户过滤包并选择一个包,之后他选择版本和价格并将其存储在Project_Has_Packages中。 正如你在图片中看到的那样。 Database Design Picture

我的方法是,PackageName只来自Package-Table以及来自特定Tables的VersionName和PriceName。 在Pricing-Table和Version-Table中,我需要PackageName来使条目唯一,因为它可能是你有“Package1”和“Version1”和“Version2”以及“Package2”和“Version1”和“Version2” ”。由于设备属于版本,因此版本不同。 如果我使VersionName唯一(“ver1 Pack1”),则数据库不再被标准化。 是否有可能避免循环引用,如何更改设计以避免这种情况? 整整想着它,我再也看不到树木了。

1 个答案:

答案 0 :(得分:1)

表格设计的主要问题是您使用真实数据(字符串)作为密钥。现在,你正在咬你,并将继续这样做。

尝试添加自动增量int ID作为每个表的主键和chiöd表中相应的外键。

我认为圆形键的“问题”在那之后是微不足道的?!