我的数据库设计中有一些传递性依赖项。我的上级告诉我,这些都可能导致错误。我发现很难找到可以告诉我这些依赖关系如何导致错误的资源。它们会引起什么问题?
我并不是在争辩事实,只是渴望了解它们会导致什么样的问题。
编辑以获取更多详细信息:
来自维基百科:
传递依存关系
传递依存关系是一种间接功能依存关系,其中X→Z仅依靠X→Y和Y→Z。
最佳答案
我将举例说明:
-------------------------------------------------------------------
| Course | Field | Instructor | Instructor Phone |
-------------------------------------------------------------------
| English | Languages | John Doe | 0123456789 |
| French | Languages | John Doe | 0123456789 |
| Drawing | Art | Alan Smith | 9856321158 |
| PHP | Programming | Camella Ford | 2225558887 |
| C++ | Programming | Camella Ford | 2225558887 |
-------------------------------------------------------------------
Course
,则可以轻松获得它的Instructor
和Course->Instructor
。 Instructor
,您将无法获得他的Course
,因为他可能正在教不同的类(class)。 Instructor
,则可以轻松获得他的Phone
,这样Instructor->Phone
即可。 这意味着如果您有一个
Course
,则可以获取表示Instructor Phone
的Course->Instructor Phone
(即传递依赖项)现在针对问题:
French
和English
类(class),那么您还将删除其讲师John Doe
,他的电话号码将永远丢失。 Instructor
,否则无法将新的Course
添加到数据库中,或者您可以用Instructors table
复制数据,甚至更糟。 John Doe
更改了他的电话号码,则您将不得不用新信息更新他所教的所有类(class),这很容易出错。 Birth Date
表中添加Courses
字段。这听起来合乎逻辑吗?为什么首先要在类(class)表中保留讲师信息?