为什么在为数据库devise关系时应该避免循环?

有人告诉我,在数据模型中设置循环是不好的devise。 我已经听了几次,但没有太多注意。 例如你有实体用户,项目,活动。 项目由用户拥有,所以我们有从用户到项目的一对多关系。 可以将活动分配给单个用户,这是用户与活动之间的另一个一对多关系。 当然,一个项目是由一组活动定义的,也就是Project to Activity之间的另一个一对多的关系。 这样就形成了一个循环。

我问这个家伙为什么这个devise不好,但他告诉我他也不知道,他也被告知,猴子学习最好。

我尝试search,但我想我没有使用正确的话,但是这对我来说似乎应该是试图devise一个数据库的人的根本。

那么,任何人都可以指出我有关er / db图中的循环/循环的一些有用的信息,是否应该避免?

在本文的第三章中,关系循环有很好的处理。

然而,一般来说,循环最常见的问题是冗余信息的一致性。

考虑一下家长有多less孩子的情况(从论文中) 每个孩子上学。 父母与学校之间有第三种关系(“父母在学校有孩子”)。 但是:你不想明确地build模第三个关系; 它完全可以从其他两个派生。 如果你明确地捕获它,你需要确保循环总是一致的。

所以在这种情况下,你想避免循环。 但是:循环不是普遍的坏。 再次考虑上面的例子,考虑模拟父母是学校的州长的情况。 这也将创build一个循环。 在这种情况下,尽pipe它是有效的:从另外两种关系中推导“父母是学校的校长”关系是不可能的。

所以总的来说:当一个关系可以从其他关系完全导出时,不要为循环build模。 但是,如果不能导出循环,则可以创build循环。

虽然会推荐这篇论文,但是这里给出的描述比我能给出的更好。

心连心。