database-design - 如何解决部分和传递的依赖关系?
问题描述
我为虚拟汽车租赁业务创建了这个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 中。
解决方案
在我的理解中HD_DUEDATE
,HD_DAYSLATE
和HD_TOTAL_COST
是计算,因此,本质上是非规范化。
如果您删除其中的三列,您的模型将符合 3FN。
我假设HD_RETURNDATE
是可以为空的,在还车时设置。
推荐阅读
- chm - Visual Basic 的 WinHelp 到 HTMLHelp
- reactjs - react-router-dom 链接在 app.js(父组件)中有效,但在子组件中无效
- laravel - 导入到“用户”表,但也导入到数据透视表
- sql - 将当前值添加到未来日期 SQL
- r - R中时间序列数据的箱线图
- elasticsearch - 集群中的 Elasticsearch 单播奇怪行为
- r - Webscrape 标题和列表到带有 rvest 的数据框
- python - H5PY 键读取速度慢
- 3d - 通过两条平行线计算单应性
- javascript - 更改绑定对象的值时,Vue v-bind:类无法立即工作