说R有以下属性:{A,B,C,D,E}并具有以下功能依赖项:

A -> BC
CD -> E
B -> D
E -> A
.

并且存在由R1(A,B,C)和R2(A,D,E)组成的分解。如何计算R1和R2的功能依赖项?

作业的实际问题询问我是否在BCNF / 3nf /既不是但我已经知道如何执行此部分(请参阅FD的左侧是否包含在候选键中)。

有帮助吗?

解决方案

诀窍是将FD视为定义密钥,而不是在给定的架构上,而是对其的预测。 例如,在启动架构{abcde}中,fd a - > bc表示({a}实际)构成此表上的键,投影到{abc}。也就是说,LHS和FD的RHS的联盟定义了哪个投影,LHS定义了该投影的键。

现在转到腐烂的版本,其中您有两个不同的表(模式){abc}和{ape}。

您的第一个和最后一个FD仍然在这些模式中表达。第一个架构/表上的第一个FD并在后者上持续。

但剩下的两个已经变得无法形容(因分解而被视为FD ,即)。这意味着,对于整体数据库设计,您必须必须声明/定义/实现数据库约束,并与原始FD完全相同。 (用于执行此操作的常规配方这些课程练习。)

决定是否在XNF中,必须考虑仅考虑仍然表达的原始FD(A-> BC)。

我想你应该得出结论,R1在3 / BC NF中,R2仍然不是。

诸如这些(以及大多数课程练习的例子实际上说明了如何过度过度地过度地过度地过度过度过度地归功于数据库设计领域。重要的是包括所有适用于数据库的约束的整体图像。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top