Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16582
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-06 14:12
文章分类

全部博文(9)

文章存档

2015年(1)

2014年(8)

我的朋友

分类: Oracle

2014-08-10 19:19:57

一、数据库范式目的:
1、减少数据冗余;
2、便于数据维护(UPDATE,DELETE,INSERT...)
3、数据分布的更加和谐。
注:在适当的应用和级别的数据量中选择合适的范式等级即可,没有最好,只有合适。

二、数据库范式分为:
第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
以下对4NF之前进行说明:
1、概念:
如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。
第一范式就是每一个属性不存在多个层级,其都不可再分;
若关系模式R∈1NF,并且每一个非主属性都于R的码,则R∈2NF。
第二范式就是每个属性必须完全依赖于主键;
R,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z ? Y), 使得X→Y,Y→Z,成立,则称R ∈ 3NF。
第三范式就是不存在传递依赖关系;
R,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。
BCNF即:每个表都存在一个候选码,备用主键;
R,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ? X),X都含有候选码,则R∈4NF。
第四范式消除了多值依赖关系。
--第五范式不存在不遵循键约束的非平凡连接依赖。如果且只有一个表符合4NF,同时其中的每个连接依赖被候选键所包含。

2、说明:
                                                            
                                                                      原图
                    
                                                                         规范后的图
1、Employeeaddress的细分体现了1NF,因为地址如果不独立出来,会存在多个层级,多个列存放在一个列;
2、department体现了2NF,因为departmentName和EmployeeId没有直接唯一约束关系;
3、job体现了3NF,因为jobDescription依赖于job,而job依赖于EmployeeId;
4、email表的email候选码的产生体现了BCNF;
5、skill减少了一对多的关系,体现了4NF。

说明:
     一般满足第三层级即可。
阅读(685) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~