用DBMS中的例子解释BCNF
BCNF(BoyceCoddNormalForm)是3NF的高级版本。如果每个函数依赖X->Y,X是该表的超级键,则该表在BCNF中。对于BCNF,表应该是3NF,并且对于每个FD。LHS是超级钥匙。
示例
考虑具有属性(学生、学科、教师)的关系R。
F: { (student, Teacher) -> subject
(student, subject) -> Teacher
Teacher -> subject}候选键是(学生,教师)和(学生,学科)。
上述关系在3NF中[因为没有传递依赖]。如果对于每个非平凡的FDX->Y,X必须是键,则关系R在BCNF中。
上述关系在BCNF中是没有的,因为在FD(teacher->subject)中,teacher不是key。这种关系存在异常-
例如,如果我们尝试删除学生Subbu,我们将丢失R.Prasad教授C的信息。这些困难是由教师是决定因素而不是候选键这一事实造成的。
BCNF的分解
教师->主题违反了BCNF[因为教师不是候选键]。
如果X->Y违反BCNF,则将R分为R1(X,Y)和R2(RY)。
所以R分为两个关系R1(Teacher,subject)和R2(student,Teacher)。
R1
R2
R中存在的所有异常,现在在上述两个关系中都被删除了。
笔记
BCNF分解并不总是满足依赖保留属性。在BCNF分解之后,如果不保留依赖关系,那么我们必须决定是要保留在BCNF中还是回滚到3NF。这个回滚过程称为非规范化。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下