1)、第一范式:属性不可再分

  例如:字段(地址),可细分为(省份)(城市)(乡村)(等)。


2)、第二范式:非主属性不能部分依赖主属性(主键),仅依赖于复合主键的部分字段

create table score(

sid int,

cid int,

cname varchar(100),

score int,

primary key(sid,cid)

)

以上不满足第二范式

cname 依赖于cid,不依赖于sid

假如需要修改,则可以将cname放到课程表中。

但是有时候为了提高查询效率,也可以这样做。

但更多时候这样做会产生冗余字段。


3)、第三范式:非主属性不能依赖于非主属性。

create table student(

id int primary key,

name varchar(50),

schoolName varchar(50),

schoolPhone varchar(100)

);

不满足第三范式

schoolName 依赖于schoolPhone

通常会将学校信息存储于学校表,然后学生表再与学校表建立关联。


create table school(

id int primary key,

schoolName varchar(50),

schoolPhone varchar(100)

);


create table student(

id int primary key,

name varchar(50),

schoolid int

foreign key (id) references school(id)

);