对关系型数据库三范式的理解

 

第一范式:保证表中的每一条记录中的每一列都是一个不可分割的实体,是实实在在存在的。不可再分的。
第二范式:所有的非主属性,都完全依赖于候选关键字,。
第三范式:所有的非主属性,和候选关键字都不存在传递依赖,这样就说相应的数据关系,满足第三范式。

讲完了,上面三个范式,估计还是不能明白,这就涉及了几个概念:
平凡的函数依赖:针对属性集X->Y,且Y包含于X.
非平凡的函数依赖:针对属性集X->Y,且Y不包含于X,
完全函数依赖:在R(U)当中,针对X->Y,对于X的任何一个真子集X1,都有X1不能函数确定于Y,那么久说Y对于X是完全函数依赖
非完全函数依赖:在R(U)当中,针对X->Y,但y不完全函数依赖于X,那么就说Y非完全函数依赖于X.
传递依赖:针对X->Y(Y不函数依赖X),但Y->Z,那么说Z传递依赖于X。

看完这几个概念,就不难理解上面所说的三个范式了,
可以参考下面一个例子:
员工表:
empno(员工编号),deptno(部门编号),deptName(部门名称),age(年龄) sex(性别)
针对这个表,每一行都有唯一确定的行值,满足第一范式。
detno,deptName,age,sex都完全依赖于empno,满足第二范式
empno->deptno,deptno->deptName 存在传递依赖,不满足第二范式。
解决方式,新建一张表,
depto_table (dept_no,dept_name)标识deptno与dept_name的关系。

你可能感兴趣的:(对关系型数据库三范式的理解)