我目前正在上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 1
和2 1 3
符合上述规则,因此也应该有2 1 1
和2 2 3
条记录。
所以这个不正确。我是对的吗?
我不知道如何为AB ↠ C
构建这样的表。它会是同一张桌子吗?
A | B | C
----------
1 | 2 | 3
1 | 3 | 2
1 | 2 | 2
3 | 2 | 1
3 | 2 | 3
这是一种叫做琐碎的依赖吗?
答案 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中的示例,它会为列添加有意义的名称,这可能有助于您理解。我希望这能让你走上正确的道路!