首页 > 解决方案 > 如何解决部分和传递的依赖关系?

问题描述

我为虚拟汽车租赁业务创建了这个ER 图。每个 CAR 可以有许多副本 (CARCOPY),可以在其生命周期内多次租用。一个客户可以一次租用多个 CARCOPY。

我创建了一个名为 HIREDETAIL 的实体,它充当解决多对多关系的桥接实体。我希望整体情况处于第三范式(3NF)。

我看到的问题出在 HIREDETAIL 实体中。有一个名为 HD_DAYS_RENT 的列(汽车要租用的天数)。还有另一列 (HD_DUEDATE) 取决于 HD_DATS_RENT 以及 HIRE 表内部的 HIRE_DATE。它与 CARCOPY 表无关。这被认为是部分依赖还是传递依赖?它依赖于一个素数和一个非素数属性。

此外,对于 HD_TOTAL_COST(根据 CAR_DAILY_RENT 和 HD_DAYS_RENT 的每日租金计算的成本)也观察到类似的情况。它依赖于 CARCOPY_NUM(主要属性)表,但也依赖于 HD_DATS_RENT(非主要属性)。

另一个传递依赖关系在于 HD_DAYSLATE,它基本上只是 HD_DUEDATE 和 HD_RETURNDATE 之间的区别。

如何解决所有这些依赖关系?我只看到了非常简单的部分和传递依赖,但我无法理解这一点。我应该改变什么,以便它至少在 3NF 中。

标签: database-designentity-relationshipdatabase-normalizationfunctional-dependencies3nf

解决方案


在我的理解中HD_DUEDATEHD_DAYSLATEHD_TOTAL_COST计算,因此,本质上是非规范化

如果您删除其中的三列,您的模型将符合 3FN。

我假设HD_RETURNDATE是可以为空的,在还车时设置。


推荐阅读