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

How can I avoid the circular reference in my database design?

我为运输管理程序设计了一个数据库。 还有一个部分好像还可以,但是不知道怎么把Package, Price, Version组合存到一个Project中,避免循环引用。

简单介绍一下数据库: 一个包可以有一对多的价格和一对多的版本。所以价格独立于版本。例如。如果您有 2 个版本,它们的价格相同。 一个版本可以有一对多的设备,一个设备也可以属于多个版本。 用户过滤包并选择一个包,然后他选择版本和价格并将其存储在 Project_Has_Packages 中。 就像你在图片中看到的那样。 Database Design Picture

我的方法是,PackageName 仅来自 Package-Table,而 VersionName 和 PriceName 来自特定的 Table。 在 Pricing-Table 和 Version-Table 中,我需要 PackageName 来使条目唯一,因为它可能是你有“Package1”和“Version1”和“Version2”以及“Package2” ”与“版本 1”和“版本 2”。版本因设备不同而不同,属于版本。 如果我使 VersionName 唯一(“ver1 Pack1”),则数据库不再规范化。 是否有可能避免循环引用,我如何更改设计以避免这种情况? 想了一天就见树不见林了

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

尝试为每个 table 添加一个自动递增的 int ID 作为主键,并在 chiöd tables.

中添加相应的外键

我相信带有圆形键的 "problem" 是 mote 吧?!