每天学一点,每天积累一点,进步就不止一点点!PS:好记性不如烂笔头,学会总结,学会思考~~~ ----要飞翔,必须靠自己!

灰太狼的梦想

好记性不如烂笔头,学会总结,学会思考~~~

数据库范式

     在一张表上,只应用一条规则也是很困难的,所有范式规则的原则就是后一级规则必须符合前一级规则。换句话说,如果一个设计符合第二范式,就必然符合第一范式。

     第一范式--1NF

     范式的第一条规则规定

  • 表是二维的,包含行和列,每一行必须有相同的列数;
  • 表中的每个列都包含一个特性,列中的所有特性都必须有相同的类型;
  • 每一行必须可以唯一标识。

要将平面数据转化到第一范式,需要利用数据库设计器创建另外一个表。重复的列要被删除,相关的数据要放在第二个表中,使每一行都是唯一的。这条规则,用于减少横向轴(列)上的冗余。

    第二范式--2NF

    这条规则规定,非键字段,不可依赖于主键的一部分,依赖于键值的字段要放到另一个表中。例如,如果一个表的主键,由两个列组成,行中的其他列都必须依赖这两个列,而不能只依赖其中一列。

   为了符合第二范式,必须先满足第一范式,然后找出与表主键有部分依赖关系的属性,放在另一个表中。

   在避免使用多列主键,或者删除部分依赖的列后,就达到了第二范式。然后就进入第三范式。

    第三范式--3NF

    第一条规则规定,行必须有键值,以便于区分。3NF在1NF的基础上进一步规定,任何行的唯一性都必须完全依赖于主键。第三范式是要减少纵轴(行)上的重复。

   Boyce-Codd范式,第4范式与第5范式

   Boyce和Codd构建了他们的标准--Boyce-Codd范式(BCNF)。这个范式是定义在前面讨论的理想情况上的。在符合后面的范式之前,必须先满足第一范式与第二范式,实际上,就是因为从第一范式到第二范式再到第三范式的改进过程中,催生了对BCNF的需要。通过对属性的函数依赖的分解,就在一些实体间,产生了多对多关系。有时这会不精确地留下这样一个状态:在所参与的实体中,有一个或多个实体有重复的候选键。

    非键属性所依赖的属性就是候选键。BCNF解决候选键内的依赖问题。第四范式和第五范式的冗长而复杂的数学理论一个简单版本就是:第四范式和第五范式用来解决多对多关系。

 

posted @ 2016-03-14 15:29  灰太狼的梦想  阅读(305)  评论(0编辑  收藏  举报