什么是数据库依赖关系?

数据库依赖性是一个常常让学生和数据库专业人员都感到困惑的话题。 幸运的是,它们并不那么复杂,最好通过使用一些例子来说明。 在本文中,我们将检查常见的数据库依赖类型。

数据库依赖/功能依赖

当存储在同一个数据库表中的信息唯一地确定存储在同一个表中的其他信息时,数据库中会出现依赖关系。 您还可以将此描述为一种关系,即知道一个属性(或一组属性)的值足以告诉您同一个表中另一个属性(或一组属性)的值。

说表中的属性之间存在依赖关系,这与说这些属性之间存在函数依赖关系相同。 如果数据库中存在依赖关系,因此属性 B依赖于属性A,则可以将其写为“A - > B”。

例如,在列出员工特征(包括社会安全号码(SSN)和姓名)的表格中,可以说该姓名取决于SSN(或SSN - >姓名),因为员工的姓名可以由他们的SSN唯一确定。 但是,反向声明(名称 - > SSN)不是真实的,因为多个员工可以具有相同的名称,但具有不同的SSN。

平凡的功能依赖

当您在包含原始属性的属性集合中描述属性的函数依赖关系时,会出现一个简单的函数依赖关系 。 例如,“{A,B} - > B”是一个平凡的函数依赖关系,就像“{name,SSN} - > SSN”一样。 这种类型的函数依赖被称为微不足道的,因为它可以从常识中派生出来。 很显然,如果你已经知道B的价值,那么B的价值可以由该知识唯一确定。

全功能依赖

当您已经满足功能依赖关系的要求并且功能依赖关系语句左侧的属性集不能再减少时,就会发生全功能依赖关系 。 例如,“{SSN,age} - > name”是一个函数依赖项,但它不是一个完整的函数依赖项,因为您可以从语句的左侧删除年龄,而不会影响依赖关系。

传递性依赖性

当存在导致函数依赖关系的间接关系时,会发生传递依赖关系。 例如,“A→C”只有在“A→B”和“B→C”都为真时才是真实的,所以它是一个传递依赖关系

多值依赖

当表中存在一个或多个行意味着同一个表中存在一个或多个其他行时,会发生多值依赖性 。 例如,设想一家生产多种车型的汽车公司,但每个车型都会同时生产红色和蓝色。 如果您有一张包含公司制造的每辆汽车的型号名称,颜色和年份的表格,则该表格中存在多值依赖关系 。 如果某个型号名称和蓝色年份有一行,则还必须有与该同一辆车的红色版本相对应的类似行。

依赖的重要性

数据库依赖性非常重要,因为它们提供了数据库规范化中使用的基本构建块。 例如: