数据库范式1NF 2NF 3NF BCNF实例分解

来源:互联网 发布:学生分班软件 编辑:程序博客网 时间:2024/06/10 02:18

1NF每一列都是不可分割的基础数据项,实体中魔个熟悉不能有多个值活不能有重复属性。
2NF数据库表中的每个实例或行必须可以被惟一地区分ID
3NF要求一个数据库表中不包含已在其它表中已包含的非主关键字信息
例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。
  
     (学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)

   这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:

   (学号) → (所在学院) → (学院地点, 学院电话)

   即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。


   由此可以看出,并不一定要强行满足范式的要求,对于1:N关系,当1的一边合并到N的那边后,N的那边就不再满足第二范式了,但是这种设计反而比较好!

  1.    对于M:N的关系,不能将M一边或N一边合并到另一边去,这样会导致不符合范式要求,同时导致操作异常和数据冗余。
    对于1:1的关系,我们可以将左边的1或者右边的1合并到另一边去,设计导致不符合范式要求,但是并不会导致操作异常和数据冗余。
原创粉丝点击