1.范式(NF)
一张数据表的表结构所符合的某种设计标准的级别。
构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。
第一范式(1NF)
1NF的定义为:符合1NF的关系中的每个属性都不可再分。
表一
表二
表一不符合第一范式的属性,并且在第一范式要求下,每列不可以有重复的数值。
第二范式(2NF)
2NF的定义为:消除了非主属性对码的部分函数依赖。
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是属性完全依赖于主键。
主属性的概念是可以由主属性决定余下其他属性的值为主属性,剩下的其他就为非主属性。
这里表的主属性为学号和课程,学号和课程可以决定剩下三个属性的值,而剩下的三个属性就为非主属性。
第三范式(3NF)
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。
在关系模式R(U)中,设X,Y,Z是U的不同的属性子集,如果X确定Y、Y确定Z,且有X不包含Y,Y不确定X,(X∪Y)∩Z=空集合,则称Z传递函数依赖(transitive functional dependency) 于X。
第一个表知道了系名之后就可以知道宿舍楼,宿舍楼传递依赖于主属性学号。
结论:
由此可见,符合3NF要求的数据库设计,基本上解决了数据冗余过大,插入异常,修改异常,删除异常的问题。
数据仓库中的3NF与OLTP系统中的3NF区别
。数据仓库中的 3NF 与 OLTP 系统中的 3NF 的区别在于:
它是站在企业角度面向主题的抽象,而不是针对某个具体 业务流程的实体对象关系的抽象。
其具有以下几个特点: ·
- 需要全面了解企业业务和数据。
- 实施周期非常长。
- 对建模人员的能力要求非常高。
写一个第一范式表
Create CREATE TABLE test
(
id int not null
PRIMARY KEY,
name VARCHAR
(
50
)
,
age INT
);
反例
CREATE TABLE test
(
id int not null
PRIMARY KEY,
name-sex VARCHAR
(
50
)
,
age INT
);