如何摆脱我的数据库结构中的循环关系。我有一个名为Item的实体。项目可以具有子项目(循环关系)。一个项目可以有多个费率,具体取决于它的财政年度(为此目的创建的rate_per_year实体和1米关系)。如果一个项目有子项目,那么它可能没有费率(如果创建了一个子项目,我需要破坏这种关系)。任何帮助将不胜感激。
提前完成
答案 0 :(得分:1)
如果item->子项链可以在多个级别继续,那么你没有真正的选择,但它就像你拥有它一样。如果只有顶级项目可以包含子项目,那么您可以将结构划分为两个层次,可能item
和group
只有item
可以有费率,并且可能或可能没有group
。
答案 1 :(得分:0)
您所描述的是零件爆炸问题。当我在大学时,这是关系数据库无法解决的问题,并且是面向对象数据库的主要卖点之一。现在看来事情可能已经发生了变化,具体取决于您使用的是哪个数据库。
此页面看起来很有趣 Sql Anywhere Users Guide - Parts explosion problems,但遗憾的是您没有提到您使用的是哪种RDBMS。它似乎也得到SQL Server 2005的支持,所以也许你会很幸运。尝试搜索“递归SQL查询”以及您正在使用的任何数据库。
祝你好运