我在数据库设计中有一些可传递的依赖项.我的上司告诉我,这些可能会导致错误.我发现很难找到资源来告诉我这些依赖关系是如何导致bug的.它们会造成什么样的问题?
我不是在质疑这个事实,我只是急于了解它们会造成什么样的问题.
编辑以了解更多详细信息:
维基百科:
传递依赖性
我在数据库设计中有一些可传递的依赖项.我的上司告诉我,这些可能会导致错误.我发现很难找到资源来告诉我这些依赖关系是如何导致bug的.它们会造成什么样的问题?
我不是在质疑这个事实,我只是急于了解它们会造成什么样的问题.
编辑以了解更多详细信息:
维基百科:
传递依赖性
我举一个例子来说明:
-------------------------------------------------------------------
| 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
分,因为他可能在教不同的课程.Instructor
分,你可以很容易地得到他的Phone
分,也就是Instructor->Phone
分.这意味着如果你有一个Course
,那么你就可以得到Instructor Phone
,也就是Course->Instructor Phone
(即传递性依赖)
现在来看问题:
French
和English
门课程,那么你也将删除他们的讲师John Doe
,他的电话号码将永远丢失.Course
,否则无法将新的Instructor
添加到您的数据库中,或者您可以复制Instructors table
中的数据,这会更糟.John Doe
更改了他的电话号码,那么你必须用新信息更新他教授的所有课程,这些信息很容易出错.Courses
表中添加一个Birth Date
字段.这听起来合乎逻辑吗?为什么首先要在课程表中保留讲师信息?