我正在使用具有以下设计的数据库。我读到在数据库设计中使用闭环不是一个好习惯,而且我有不止一个。但我不记得为什么。所以不确定这会如何影响我。任何例子这可能是危险的?
编辑:浏览了我的电子书,发现我正在阅读的是从新手到专业的开始数据库设计,出版商:APRESS。
他们只是对此提出警告,但给出了一个模糊的理由。不,我们没有使用触发器。有人有更清楚的解释吗?
谢谢 摘录,第 109 页:
一家小公司的员工分别为多个不同的小型项目组之一工作。每个组及其所有员工都被安置在一个特定的房间中,更大的房间容纳多个组。我们可能需要诸如每个员工所在的位置、特定员工的电话号码、在哪里可以找到特定组、每个组中的哪些员工等信息,每个房间里都有谁,等等。一种可能的数据模型如图 5-7 所示。花点时间了解这个特定问题的数据模型及其包含的关于房间中组数等的信息。该模型具有冗余信息。你能看出它是什么吗?
对于示例 5-3,如果我们经常要查找员工的电话号码,我们可能会认为图 5-7 中 Employee 和 Room 之间的顶部关系将是一条有用的直接路径。然而,同样的信息很容易通过 Group 的替代途径获得。我们可以找到员工的(仅一个)组,然后找到该组的(仅一个)房间。这是一个非常简单的检索(它不涉及在示例 5-2 中困扰小旅馆的所有日期的复杂性)。然而,额外的关系不仅没有必要,而且很危险。对于相同的信息有两条路径,除非数据得到非常仔细的维护,否则我们可能会得到两个不同的答案。每当员工换组或组换房间时,将有两个关系实例要更新。如果没有非常仔细的更新程序,我们最终可能会发现 Jim 属于 A 组,即 12 号房间,而另一条路线可能会让 Jim 直接与 15 号房间相关联。冗余信息容易出现不一致,应始终删除。