使用算法

时间:2018-10-12 13:16:37

标签: bcnf

以下步骤正确吗?

R = (P, N, O, C, E)

N -> P

E -> P

O -> C

O -> P

在上面的关系中,我们可以看到有两个违例。 N-> P和E-> P是多对一关系,而O-> C和O-> P是一对多关系。这意味着,对于X的1个值,Y的2个值存在。该关系可以重写为NE-> P和O-> CP。

首先,我们计算给定关系的属性闭包。并使用属性闭包,我们将找到关系的候选键。要使R出现在BCNF中,如果X-> Y在R中成立,则X必须是R的超键。

P+ = P
N+ = NP
O+ = OCP
C+ = C
E+ = EP
NEO+ = NEOCP

因此,候选密钥(最小超级密钥)为NEO。现在我们开始算法。 对于关系,NE-> P

S = {N,E,O,C,P} S = {NE,OCP},因为功能依赖性NE-> P违反了BCNF。因此,我们将该关系分解为两个关系。 S = {NE,OC,OP},因为违反了BCNF的功能依赖性O-> CP。现在,我们有3种BCNF形式的关系。

0 个答案:

没有答案