mysql - 在数据库设计中如何避免循环引用?

标签 mysql sql database circular-reference

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

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

我的方法是,PackageName 仅来自 Package-Table,VersionName 和 PriceName 来自特定表。 在定价表和版本表中,我需要 PackageName 来使条目唯一,因为您可能有“Package1”、“Version1”和“Version2”以及“Package2”和“Version1”和“Version2” ”。由于属于版本的设备不同,版本也不同。 如果我使 VersionName 唯一(“ver1 Pack1”),那么数据库就不再标准化。 是否有可能避免循环引用?如何更改设计以避免这种情况? 想了一整天,我已经只见树木不见森林了。

最佳答案

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

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

我相信圆形按键的“问题”在那之后就没有了?!

关于mysql - 在数据库设计中如何避免循环引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38092798/

相关文章:

mysql - MySQL 中的全局设置将日期字段的空字符串解释为 NULL?

php - 如何从均值获得较低和较高值的偏差

php从mysql解码二进制(16)ip

mysql - 数据截断: Truncated incorrect date value error

sql - 为什么我的 count(*) 查询超时,但正在计算其记录的内联 View 却没有超时?

php - 使用php从Mysql编辑数据

mysql - 为什么当我查询更多列时,MYSQL 不使用同一查询的索引?

mysql - 如何在mysql存储过程的IN子句中使用字符串

mongodb - 将大文件和数据导入 MongoDB 的内存有效方法?

java - 如何使用hibernate在sql查询 "date like :today "中的where条件中使用setParameter作为日期字段