第一范式、第二范式、第三范式、BC范式
来源:互联网 发布:淘宝订单不能批量删除 编辑:程序博客网 时间:2024/05/17 06:05
范式的目标
应用数据库范式可以带来许多好处,但是最重要的好处归结为三点:
1.减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)
2.消除异常(插入异常,更新异常,删除异常)
3.让数据组织的更加和谐…
DEMO
让我们先从一个未经范式化的表看起,表如下:
先对表做一个简单说明,employeeId是员工id,departmentName是部门名称,job代表岗位,jobDescription是岗位说明,skill是员工技能,departmentDescription是部门说明,address是员工住址
第一范式(1NF)
如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。
简单的说,第一范式就是每一个属性都不可再分。不符合第一范式则不能称为关系数据库。对于上表,不难看出Address是可以再分的,比如”北京市XX路XX小区XX号”,显然不符合第一范式,对其应用第一范式则需要将此属性分解到另一个表,如下:
其次,每笔记录都要能利用一个惟一的主键来加以识别
这里出现了重复组,同样不满足第一范式,因为缺乏唯一标识码,可改为
第二范式(2NF)
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF
简单的说,是表中的属性必须完全依赖于全部主键,而不是部分主键.所以只有一个主键的表如果符合第一范式,那一定是第二范式。这样做的目的是进一步减少插入异常和更新异常。
在上表中,departmentDescription是由主键DepartmentName所决定,但却不是由主键EmployeeID决定,所以departmentDescription只依赖于两个主键中的一个,故要departmentDescription对主键是部分依赖,对其应用第二范式如下表:
第三范式(3NF)
关系模式R
BC范式(BCNF)
设关系模式
简单的说,bc范式是在第三范式的基础上的一种特殊情况,既每个表中只有一个候选键(在一个数据库中每行的值都不相同,则可称为候选键),在上面第三范式的noNf表中可以看出,每一个员工的email都是唯一的(难道两个人用同一个email??)则,此表不符合bc范式,对其进行bc范式化后的关系图为:
- 第一范式、第二范式、第三范式、BC范式
- [数据库] 第一范式、第二范式、第三范式、BC范式
- 数据库第一范式 第二范式 第三范式 BC 范式
- [数据库] 第一范式、第二范式、第三范式、BC范式
- 数据库-第一范式、第二范式、第三范式、BC范式、第四范式简析
- 【数据库设计】范式基础 第一范式、第二范式、第三范式、BC范式
- 第一范式、第二范式、第三范式
- 第一范式,第二范式,第三范式,BCNF
- 数据库:第一范式、第二范式、第三范式
- 第一范式,第二范式,第三范式,BCNF
- 第一范式,第二范式,第三范式
- 第一范式,第二范式,第三范式
- 第一范式,第二范式,第三范式
- 第一范式,第二范式,第三范式
- 第一范式 - 第二范式 - 第三范式
- 第一范式,第二范式,第三范式
- 第一范式第二范式第三范式
- 第一范式,第二范式,第三范式
- 区块链挑战传统支付体系
- Eclipse 导入jar包并正确使用
- Java IO:BufferedOutputStream使用详解及源码分析
- Android 支付宝,微信支付实现
- 石子合并问题
- 第一范式、第二范式、第三范式、BC范式
- 【VS】加载Microsoft符号服务器文件取消
- Linux IP地址隧道访问
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- 区间迭代法 interval iterative method
- LeetCode Palindrome Partitioning II
- 实验四课后作业
- 【bzoj3450】Tyvj1952 Easy 期望DP
- usaco海明码(白银的题,竟然我根本读不懂,o(︶︿︶)o 唉)