避免来自 non-trivial FD 的微不足道的 MVD?
Avoiding trivial MVDs from non-trivial FDs?
我有两个来自一个关系的函数依赖:
meetid -> pid
meetid, pid -> status
对于关系会议(meetid、pid、status)
我想使用促销 方法从中创建多值依赖项。问题是我不确定在这种情况下 meetid ->> pid
是否合法,因为 complementation 规则将使其他 MVD 非法(我认为):meetid ->> status
.
另一个 FD 将创建一个我认为是微不足道的 MVD 的依赖项。
meetid,pid ->> status
在将它们提升为 MVD 时,这种关系注定是微不足道的,还是我在此过程中遗漏了什么?
两个依赖项:
meetid → pid
meetid, pid → status
不是最小的,因为它们可以简化(例如通过计算规范覆盖):
meetid → pid
meetid → status
从这里我们也知道 meetid
是关系的唯一候选键。从 FD X → Y
总是可以导出 MVD X →→ Y
,因此,您同时具有 MVD 依赖项:
meetid →→ pid
meeditd →→ status
(注意第一个也可以补推导出第二个)
另请注意,其中 none 是一个平凡的 MVD,因为如果 Y
是空集或 XY
是关系的所有属性。
此外,我们可以注意到模式在 4NF 中,因为它在 BCNF 中,并且非平凡 MVD 的每个左侧都是一个超键。
最后,请注意每个函数依赖都可以“提升”为多值依赖,因此我们也有meetid, pid →→ status
(和这个 是微不足道的)。
我有两个来自一个关系的函数依赖:
meetid -> pid
meetid, pid -> status
对于关系会议(meetid、pid、status)
我想使用促销 方法从中创建多值依赖项。问题是我不确定在这种情况下 meetid ->> pid
是否合法,因为 complementation 规则将使其他 MVD 非法(我认为):meetid ->> status
.
另一个 FD 将创建一个我认为是微不足道的 MVD 的依赖项。
meetid,pid ->> status
在将它们提升为 MVD 时,这种关系注定是微不足道的,还是我在此过程中遗漏了什么?
两个依赖项:
meetid → pid
meetid, pid → status
不是最小的,因为它们可以简化(例如通过计算规范覆盖):
meetid → pid
meetid → status
从这里我们也知道 meetid
是关系的唯一候选键。从 FD X → Y
总是可以导出 MVD X →→ Y
,因此,您同时具有 MVD 依赖项:
meetid →→ pid
meeditd →→ status
(注意第一个也可以补推导出第二个)
另请注意,其中 none 是一个平凡的 MVD,因为如果 Y
是空集或 XY
是关系的所有属性。
此外,我们可以注意到模式在 4NF 中,因为它在 BCNF 中,并且非平凡 MVD 的每个左侧都是一个超键。
最后,请注意每个函数依赖都可以“提升”为多值依赖,因此我们也有meetid, pid →→ status
(和这个 是微不足道的)。