如何找到不满足R的多值依赖?

时间:2014-02-01 11:58:06

标签: database dependencies database-normalization multivalue

我目前正在上DB课程,主题是关系设计理论。子主题是多值依赖,我完全迷失在其中:(

我有这样一个问题:

R(A,B,C):
A | B | C
----------
1 | 2 | 3
1 | 3 | 2
1 | 2 | 2
3 | 2 | 1
3 | 2 | 3

此R实例不满足以下哪些多值依赖项?

1. AB ↠ C 
2. B ↠ C 
3. C ↠ A 
4. BC ↠ C

我知道:

A | B  | rest
----------
a | b1 | r1
a | b2 | r2
a | b1 | r2
a | b2 | r1

我正在以这种方式为这些依赖项创建表:

B ↠ C

B | C | A
----------
2 | 3 | 1
2 | 2 | 1
2 | 1 | 3
2 | 3 | 3
3 | 2 | 1

根据我的假设: 2 2 12 1 3符合上述规则,因此也应该有2 1 12 2 3条记录。

所以这个不正确。我是对的吗?

我不知道如何为AB ↠ C构建这样的表。它会是同一张桌子吗?

A | B | C
----------
1 | 2 | 3
1 | 3 | 2
1 | 2 | 2
3 | 2 | 1
3 | 2 | 3

这是一种叫做琐碎的依赖吗?

1 个答案:

答案 0 :(得分:0)

让我从数据库建模概念课中回到大学时代......通过some online PDFs快速复习课程......

我在这里写了一段并重写了一段,试图简明地解释多个确定运算符,但我不能比上面的PDF更清楚地解释它。粗略地说,如果B ↠ C,那么对于存在的每个(B, C, A)元组,您可以在C中换出任何(B, C) in R值,并在R中找到一个元组

如果是您的上一个问题,那么您是对的。我不记得正确的术语,但由于除了A, B, C之外没有其他列,因此AB ↠ C中的R非常满意。要为它构建一个表,我首先按A排序,然后按B.顺序排列。它看起来像

A | B | C
---------
1 | 2 | 2
1 | 2 | 3
1 | 3 | 2
3 | 2 | 1
3 | 2 | 3

B ↠ C是一个更有趣的例子。由于(B, C, A)元组(2, 3, 1)(2, 1, 3)都存在,因此元组(2, 1, 1)(2, 3, 3)(通过交换C获得)必须同时存在才能满足R。由于(2, 1, 1)不存在,因此不满足R。像你一样写出表格让人很容易看到。

如果您看到我之前链接的PDF中的示例,它会为列添加有意义的名称,这可能有助于您理解。我希望这能让你走上正确的道路!