数据库三范式

数据库三范式
1第一范式
第一范式(1NF):(原子性,数据表中每个字段不可拆分)
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。理解注释:列不可分。
举例:
Id Address
1 广东省广州市天河区棠下街道
若要从address中频繁的去去省市区的话,此字段就不符合,需拆分。
2第二范式
第二范式(2NF)::(保证一张表只讲述一件事情)
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一的区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。要求实体的属性完全依赖于主关键字。理解注释:不能部分依赖。即:一张表存在组合主键时,其他非主键字段不能部分依赖。
举例:
学号 姓名 年龄 课程 分数 学分

此表岁符合一范式,但是表中描述了个人信息和课程信息两件事情,学生信息完全依赖学号,学分完全依赖课程。可以拆分如下:
学号 姓名 年龄
课程 学分
学号 课程 成绩

3第三范式
第三范式(3NF):
满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。理解注释:不能存在传递依赖。即:除主键外,其他字段必须依赖主键。
举例:
学号 姓名 年龄 学院 学院地点 学院电话

可以看出姓名。年龄、学院和学号关联,但是学院地点、学院电话却和学院关联。可以拆分如下:
学号 姓名 年龄 学院
学院 学院地点 学院电话

你可能感兴趣的:(数据库,设计模式)