依赖项是适用于或定义属性之间的关系的约束。当存储在同一数据库表中的信息唯一地确定存储在同一表中的其他信息时,它会发生在数据库中。您也可以将此描述为知道的关系价值一个属性(或一组属性)足以在同一表中告诉您另一个属性(或属性集)的值。
数据库依赖关系通常会使学生和数据库专业人士相同。幸运的是,它们并不像他们看起来那么复杂。可以使用几个例子来解释它们。在这里,我们将检查公共数据库依赖项类型。
数据库依赖关系和功能依赖项
说表中的属性之间存在依赖关系是说有一个的功能依赖性这些属性之间。如果数据库中存在依赖项,例如属性b依赖于属性a,您将此写为:
A - > B
例如,在表列出的员工特征(包括社会安全号码(SSN)和名称)中,可以说名称取决于SSN(或SSN - >名称),因为员工的名称可以从SSN唯一确定。但是,反向陈述(名称 - > SSN)不是真的,因为多于一个员工可以具有相同的名称,但始终具有不同的SSN。
琐碎的功能依赖性
当您在包含原始属性的属性集合上描述属性的功能依赖性时,会发生微不足道的功能依赖项。例如,{a,b} - > b是一个琐碎的功能依赖,和{name,ssn} - > ssn一样。这种类型的功能依赖性被称为微不足道,因为它可以源自常识。很明显,如果您已经知道B的值,则B的值可以通过该知识唯一确定。
全功能依赖项
当您已经满足了功能依赖关系的要求,并且无法进一步减少功能依赖关系语句的左侧的属性集时出现全功能依赖项。例如,{SSN,年龄} - >名称是一个功能依赖性,但它不是一个全功能依赖因为您可以从语句的左侧删除年龄而不会影响依赖关系。
传递依赖性
当存在导致功能依赖性的间接关系时发生传递依赖项。例如,A - > C是一个传递依赖当它是真的,因为A - > B和B - > C都是真的。
多元依赖性
当表中的一个或多个行的存在意味着在该相同表中存在一个或多个其他行时,发生多值依赖关系。例如,想象一辆制造许多型号车型的汽车公司,但总是使每个模型的红色和蓝色。如果您有一个包含公司制造商每辆汽车的型号,颜色和年的表,则有一个多价依赖在那个桌子。如果有一行为蓝色的某种型号名称和年份,则必须有一个类似的行对应于同一车的红色版本。
依赖的重要性
数据库依赖项对于理解是很重要的,因为它们提供了所用的基本构建块数据库归一化,有效地组织数据库中的数据的过程。例如:
- 为了进入桌子第二正常形式(2nf),表中必须在功能上取决于a的子集候选人钥匙。
- 为了进入桌子第三正常形式(3nf),每个非临时属性必须具有对每个候选密钥的非转换功能依赖性。
- 为了进入桌子Boyce-Codd正常形式(BCNF),每个功能依赖性(除了琐碎的依赖项之外)必须位于纯时。
- 对于以第四正常形式(4NF)的表,它必须没有多值依赖性。