2

如何摆脱我的数据库结构中的循环关系。我有一个名为 Item 的实体。一个项目可以有一个子项目(循环关系)。一个项目可以有多个费率,具体取决于它是哪个财政年度(为此目的创建的 rate_per_year 实体和 1-m 关系)。如果一个项目有一个子项目,那么它可能没有费率(如果创建了一个子项目,我需要打破这种关系)。任何帮助将不胜感激。

提前感谢

4

2 回答 2

1

如果 item->subitem 链可以在多个级别上继续,那么您别无选择,但它就像您拥有它一样。如果只有顶级项目可以有子项目,那么您可以将结构分成两层,可能itemgroupwhere 只能item有一个速率,并且可能有也可能没有group.

于 2009-06-01T14:17:46.813 回答
0

您所描述的是零件爆炸问题。上大学的时候,这是关系型数据库无法解决的问题,也是面向对象数据库的主要卖点之一。看来事情现在可能已经发生了,这取决于您使用的数据库。

这个页面看起来很有趣 Sql Anywhere 用户指南 - 部件爆炸问题,但遗憾的是您没有提及您使用的是哪个 RDBMS。SQL Server 2005 似乎也支持它,所以也许你会走运。尝试搜索“递归 SQL 查询”以及您使用的任何数据库。

祝你好运

于 2009-06-01T15:56:12.473 回答