码迷,mamicode.com
首页 > 数据库 > 详细

数据库范式

时间:2015-09-29 14:53:12      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:mysql   数据库   范式   

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)

);


本文出自 “一剑围城” 博客,请务必保留此出处http://weijiancheng.blog.51cto.com/10190955/1699116

数据库范式

标签:mysql   数据库   范式   

原文地址:http://weijiancheng.blog.51cto.com/10190955/1699116

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!