多值属性可以有主键吗?

时间:2015-08-21 15:49:04

标签: database database-design primary-key functional-dependencies

功能依赖性是其值由另一个属性以唯一方式确定的属性。赋予多值属性可以依赖于主键吗?

1 个答案:

答案 0 :(得分:1)

  1. " FD是其值由另一个属性以独特方式确定的属性"是难以理解的。找到一种正确的说法或者你怎么理解它?

  2. 属性(或属性集)在功能上由 set 属性决定。

  3. 没有"多值属性"在一种关系中。元组具有每个属性名称的 属性值。 (也许你的意思是,正在确定一组属性?也许你的意思是,一个多值依赖?)如果你有一个属性,你认为包含多个部分,即你想要一般查询关于不使用具有类型参数的运算符的部分,那么通常良好的设计具有包含这些部分的属性的单独表。但是规范化并没有解决这个问题。 任何值都可以被认为具有多个方面的多个部分,并且您的应用程序/查询确定何时停止创建其属性是其他值的部分值的表,并且只有一个属性值。类似地,如果你有一堆扮演类似角色的属性(通常具有相似的名称),那么通常良好的设计就有一个单独的表,只有一个角色属性。但是规范化并没有解决这个问题。

  4. 候选键对FD,MVD,JD和规范化很重要。 PK不会。你可以选择一个CK作为" PK"但它的主要性与关系模型无关。它可能与某些信息建模方法或产品有关。

  5. 超级键是确定每列的列集。由于每组属性始终确定其中的属性,因此超级键是确定每隔一列的列集。 CK是超级密钥,不包含更小的超级密钥。 (因此,CK是一组唯一的列,但不包含唯一的一组列。)

  6. 在您找到所有的FD之前,您不会知道所有的CK。但是你可能知道一组特定的属性是唯一的并且没有更小的唯一集合,所以你知道它是一个CK而你可以称它为#34; PK"。 (例如,关系变量中的id属性可以包含多行。)

  7.   

    多值属性可以依赖于主键吗?

    1. 根据CK的定义,每个属性都依赖于每个CK。因此,根据PK的定义,每个属性都依赖于每个PK。(但是你必须澄清你的意思"多值属性"和"依赖"。)