`

数据库中的范式

阅读更多

第一范式定义:表中所有字段仅包含单值。

 

很明显,第二行的数据违反了第一范式。因为phone的字段有两个值。PS:汗一个,美国人怎么连密码都是武器???

解决的办法有:

 

在讨论更高级的范式之前,必须明白确定因子的概念。

确定因子(determinant):是一个字段或一组字段,它控制或确定其他字段的值。

 

第二范式定义:表中的每个非键字段由整个主键确定,且不能由主键自身的一部分确定。因此,2NF的违例只会出现在主键是由超过一个字段构成的表中。

 

在上面的STUDENT_ENROLL表中id决定了fname,iname,dorm,phone,而SECTION$call_no又决定了fname,iname,dorm,phone,grade。违反了第二范式,则在更新时,由于Jim Green有两个电话号码而无法更新。

解决的办法有:

 

第三范式定义:表中不存在可以确定其他非关键字的非键字段。

3NF的违例可能发生在具有多个非键字段的表中。

 

上图的MEMBERVISIT中,主键(id)决定了email,password,fname,iname,phoneEmail决定了password,fname,iname,phone。所以违反了第三范式。会导致Luce存储了两个passwords.。这显然是不对的。

解决的方法:

 

鲍依斯-科得范式(BCNF):在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式。

   假设仓库管理关系表为StorehouseManage(仓库ID, 存储物品ID, 管理员ID, 数量),且有一个管理员只在一个仓库工作;一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:

   (仓库ID, 存储物品ID) →(管理员ID, 数量)

   (管理员ID, 存储物品ID) → (仓库ID, 数量)

   所以,(仓库ID, 存储物品ID)和(管理员ID, 存储物品ID)都是StorehouseManage的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:

   (仓库ID) → (管理员ID)

   (管理员ID) → (仓库ID)

   即存在关键字段决定关键字段的情况,所以其不符合BCNF范式。它会出现如下异常情况:

   (1) 删除异常:

   当仓库被清空后,所有"存储物品ID"和"数量"信息被删除的同时,"仓库ID"和"管理员ID"信息也被删除了。

   (2) 插入异常:

   当仓库没有存储任何物品时,无法给仓库分配管理员。

   (3) 更新异常:

   如果仓库换了管理员,则表中所有行的管理员ID都要修改。

   把仓库管理关系表分解为二个关系表:

   仓库管理:StorehouseManage(仓库ID, 管理员ID);

   仓库:Storehouse(仓库ID, 存储物品ID, 数量)。

   这样的数据库表是符合BCNF范式的,消除了删除异常、插入异常和更新异常。 
 

第四范式定义:在全键表中,键的一部分可以确定至多一个其他字段的多个值。4NF仅用于全键表。

为了理解第四范式,需要引入多值依赖(multivalued dependency,MVD)的概念:指可以控制或确定另一个字段的多个值的一个或一组字段。

 

上面的SKILL表中,email是多值依赖的。违反了第四范式。如果我们删除了LuceGerman身份。我们也丢失了他爱好网球的信息。

解决方法:

 

这两个表是没有联系的。每个表仅包含一个MVD

 

检测范式违例:

1.                   当多个值存储在一个单元中时会发生1NF违例。

2.                   2NF违例只会发生在具有关联键的表中,且非键字段只依赖于主键的一部分。

3.                   3NF违例发生在一个非键字段确定另一个非键字段的情况下,表可能有一个任何大小的键。

4.                   BCNF违例出现在非键字段确定主键的一部分的情况下。这些违例只能发生在主键是有关联键组成的表中。

5.                   4NF违例发生在表的主键至少由3个键连接而成且没有非键字段的情况下,此外,键的一部分确定键的另一部分的多个值。

 

解决范式违例的方法:就是将复式的确定因子拆成单一的确定因子。

分享到:
评论

相关推荐

    数据库范式理解例题数据库范式理解例题.doc

    数据库范式理解例题数据库范式理解例题

    数据库设计范式数据库设计范式

    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多...

    数据库系统范式教程数据库系统范式教程.ppt

    数据库系统范式教程数据库系统范式教程

    数据库三大范式详解

    数据库范式1NF 2NF 3NF BCNF(实例) 设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系...

    Java面试中数据库三范式详解

    Java面试资料有关数据库的问题 数据库 三范式

    什么是数据库范式?什么是设计范式?

    在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)...

    数据库设计范式简单入门

    在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)...

    Oracle学习笔记(数据库设计范式 PowerDesigner工具)

    Oracle学习笔记(数据库设计范式 PowerDesigner工具),有具体的代码案例

    数据库系统范式教程.ppt

    数据库系统范式教程.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~

    Oracle 数据库设计范式 PowerDesigner

    Oracle 数据库设计范式 PowerDesignerOracle 数据库设计范式 PowerDesignerOracle 数据库设计范式 PowerDesigner

    数据库范式

    设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。...在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式

    关系型数据库设计范式

    尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍。 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手。

    数据库设计的第一范式第二范式第三范式描述和实例

    简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。 例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那麼在员工信息表中列出部门...

    数据库三范式

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

    数据库设计模式范式简介

    在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)...

    数据库-范式及范式分解复习知识

    数据库-范式及范式分解复习知识

    数据库范式.pdf

    数据库范式.pdf

    数据库范式【转】

    数据库范式【转】数据库范式【转】数据库范式【转】数据库范式【转】

    数据库范式理解例题.doc

    数据库范式理解例题.doc

    数据库设计三大范式应用实例剖析

    第一范式:数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。第二范式:数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖,也即所有...

Global site tag (gtag.js) - Google Analytics