数据库设模式分解

数据库设计要使用户删除,更新,插入比较方便,避免产生数据冗余,异常等现象;一般要遵循三大范式,简而言之就是,
1NF:属性不可再分,即不能表中套表
2NF:不存在非主属性对码的部分函数依赖
3NF:不存在非主属性对码的传递函数依赖
BCNF:不存在主属性对码的部分依赖和传递
即使BCNF仍然存在不足,比如下表
科目    老师      参考书
语文    张老师    一点通
语文    李老师    黄冈兵法
语文    王老师    巅峰阅读
数学    张老师    黄冈兵法
数学    王老师    一点通
数学    李老师    巅峰阅读

这个表的码是全码满足1,2,3,BC,范式,可以看出,这个表的数据冗余,这就是多值依赖,为了解决多值依赖的问题,我们引进的4NF即消除非平凡且非函数依赖的多值依赖
至于如何分解,则要利用数据依赖的公理系统,把低级的关系模式分解成若干个高一级的关系模式。当然分解不唯一。
eg:
R(U,F)
U(A,B,C,D,E,F)
F(A->B,AC->D,AC->E,E->F)
分解:码 AC
     主属性 A,C
     非主属性 B,D,E,F
     R是1NF不是2NF
     R->R1(A,B)为BCNF
        R2(A,C,D,E,F)为2NF不是3NF
     R2->R21(A,C,D,E)为BCNF
         R22(E,F)为BCNF
     故R分解成R1,R21,R22
一点小心得,共同进步

你可能感兴趣的:(设计模式,C++,c,F#,C#)