数据库设计范式的总结


一、1NF:原子性(不可再分)
1NF是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。即表中每一个属性都具有原子性,表上面没有相同的列。1NF是关系模式的基本要求,数据库必须满足1NF


二、2NF:排他性(完全依赖)
在满足1NF的条件下,2NF要求实体的属性完全依赖于主关键字,不能存在仅依赖主关键字一部分的属性。即每个非主属性是由整个主键函数决定的,而不能由主键的一部分来决定。
例如博客积分表 Goals(ID,姓名,年龄,博客地址,积分),主键为符合关键字(ID,博客地址)
因为存在如下决定关系:
  (ID, 博客地址) → (姓名, 年龄, 博客地址, 积分)   
这个数据库表不满足第二范式,因为存在如下决定关系:   
(博客地址) → (积分)   
(ID) → (姓名, 年龄)
    由于积分这一属性并不是由整个主键决定的,所以不满足2NF

三、3NF:消除间接依赖
3NF必须先满足2NF,其次非主属性之间不存在函数依赖。由于满足了第二范式,表示每个非主属性都函数依赖于主键。如果非主属性之间存在了函数依赖,就会存在传递依赖,这样就不满足3NF。
例如学生关系表为Student(ID, 姓名, 年龄, 宿舍, 宿舍电话),
关键字为单一关键字"ID",因为存在如下决定关系:   
(ID) → (姓名, 年龄, 宿舍, 宿舍电话)   
这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:  (ID) → (宿舍) → (宿舍电话)   
即存在非关键字段"宿舍电话"对关键字段"学号"的传递依赖。

你可能感兴趣的:(设计模式)