部分密钥依赖:棘手的多重选择

时间:2014-04-04 20:10:31

标签: sql database-design relational-database

如果您被问到以下内容:

What is the meaning of a partial key dependency?

你会认为这些答案中只有一个是正确的还是两者兼而有之?

a) A non-key attribute depends on part of the primary key 

b) A non key attribute is partially dependent on the primary key

请记住,如果你解析这两个句子只包含不同的元素,你会留下以下听起来非常相似的内容,如果不相同的话? :

a) depends on part of
b) is partially dependent on

实际上很难想象b的解释会导致错误的陈述,或者至少是与a不同的陈述。

我正在寻找一个非常清楚的例子,说明为什么b是错的。我知道一个更清楚,但那不是我感兴趣的。

2 个答案:

答案 0 :(得分:1)

这是我读到的内容:

  

a)需要密钥,但只需要其中的一部分

     

b)只有一部分需要   密钥,但它需要整个密钥

对我来说有两种截然不同的情景。它们根本不应该被比较。

  

这里有一把钥匙:88f4d3f9-e0e7-4d3d-a7e1-28c4c60ebdc0

     

场景A可以要求88f4d3f9部分。

     

场景B在没有密钥的情况下部分工作,但是如果没有整个密钥,它将无法正常运行。

我可以为每个场景成像不同的用例:

  

a)你有一个触发器,它接受uniqueidentifier (GUID)的第一部分,然后将该部分保存在其他表中

     

b)您在INSERT上有一个触发器,用于检查您是否插入WITH或WITHOUT主键。如果它没有,那么继续。如果是,则进行一些操作(例如删除破折号),然后在另一个表中进行查找,可以将其作为varchar插入。如果是,那就做一些特殊的代码。

所以回答你的问题。我认为A是正确的,B是错误的。

答案 1 :(得分:1)

这是一个文字游戏 - 请问提问的人定义使用的术语。

对于它的价值,这听起来可能与复合(aka。复合)键有关 - 一个由多个属性组成的键。在这种情况下,理论上可能对关键属性的适当子集具有功能依赖性,这违反了2NF。