bcnf范式

3.5范式——bcnf范式到底是什么呢?

对于bcnf范式,通过查阅资料,我的理解是——主键依赖的去除。比如说:一个仓库管理的表格,有以下属性(管理员编号,仓库号,货物编号,货物数量)其中每个管理员管理一个仓库,那么就会出现这样的情况:

1.仓库号和货物编号可以确定货物数量,仓库号和货物编号可以确定管理员编号。

2.管理员编号和货物编号可以确定仓库号,管理员编号和货物编号可以确定货物数量。

3.仓库号可以确定管理员编号。

4.管理员编号可以确定仓库号。

其中,仓库号、管理员编号和货物编号都是主属性,数量是非主属性,它们的关系符合三范式。但是它不是bcnf,因为在主属性中,仓库号可以推出管理员编号,管理员编号可以推出仓库号。他们之间存在传递依赖。这是不符合bcnf的。

做法是,把表格拆分,得到如下结果:表一(仓库号,管理员编号);表二(管理员编号,货物编号,数量)。

但是,有的bcnf范式会导致关系的丢失。比如:有个表示工厂工人计件的表格(车间号,工人编号,零件号,数量)其中的关系是:

1.      一个工人只能在一个车间工作,一个车间有多名工人。

2.      一个工人生产多种零件,一个车间内的零件没有重复。

其中,车间号、工人工号和零件号都是主属性,数量是非主属性,它们的关系符合三范式。但是“车间号”+ “零件号”可以推出“工人工号”然后“工人工号”可以推出“车间号”,他们主属性之间有传递依赖,这样的话是不符合bcnf范式的。

分解的办法是:将表格拆分成两个表格——表一(职工号,零件号,数量);表二(职工号,车间号)。这样分解会将“车间号+零件号”推出“工人工号”的关系丢失。

3.5范式已经搞定,接下来就是第四范式。

时间: 2024-11-02 09:27:09

bcnf范式的相关文章

BCNF范式及其分解方法(对一次Lab作业的总结)

一次Lab的作业题目如下: A luxury car-rental company has been tracking their rental data in a simple spreadsheet, but now wants to migrate to a proper database. Consider the table given below, containing some sample data. (a) Identify at least 10 functional dep

数据库范式1NF 2NF 3NF BCNF(实例)通俗易懂的讲解

[转] 数据库范式1NF 2NF 3NF BCNF(实例)通俗易懂的讲解     本文对大多数初学数据库原理的同学绝对是个大福利,哈哈,完完整整的看完此篇博文一定能够清晰地理解数据库的四大范式.    不懂者留言相互讨论.     设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合.构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式.关系数据库中的关系必须满足一定的要求,即满足不同的范式.目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF)

数据库范式1NF 2NF 3NF BCNF

(转自:http://www.itisedu.com/phrase/200604241410105.html) 设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合.构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式.关系数据库中的关系必须满足一定的要求,即满足不同的范式.目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).第四范式(4NF).第五范式(5NF)和第六范式(6NF).满足最低要求的范式是第一范式(1NF)

数据库范式(1NF 2NF 3NF BCNF)详解

数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息. 范式说明 1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性.如果出现重复的属性,就可能需要定义一

数据库范式(1NF 2NF 3NF BCNF)

第一范式(1NF)无重复的列 例如,如下的数据库表是符合第一范式的: 字段1 字段2 字段3 字段4 而这样的数据库表是不符合第一范式的: 字段1 字段2 字段3 字段4 字段3.1 字段3.2           第二范式(2NF) 第二范式(2NF)就是非主属性完全依赖于主关键字. 所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,消除部分依赖 假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),关键字为组合关键字(学号, 课程名称),因为存在如下

三大范式与BCNF

引用:http://www.cnblogs.com/ybwang/archive/2010/06/04/1751279.html 参考: 1.范式间的区别 http://www.cnblogs.com/winlinglin/archive/2008/11/19/1336337.html 2. 数据库范式1NF 2NF 3NF BCNF http://dev.firnow.com/course/7_databases/sql/sqlServer/20090502/166234.html 3.萨师煊

数据库范式理论

1NF范式:没有非原子属性 2NF范式:消除了非主属性的部分依赖 3NF范式:消除了非主属性的传递依赖 BCNF范式:消除了主属性的传递依赖 4NF范式:消除了多值依赖 模式分解的两个评价标准: 1.分解的无损性 2.分解的依赖性 两个问题: 1.如何识别无用属性? 2.如何求取正则覆盖? BCNF范式的分解过程是什么?

数据库范式(知乎)

http://www.zhihu.com/question/24696366 数据库泛型就是数据库应该遵循的规则,也称为范式 1NF:所有的域都是原子性的,即表的每一列都是不可分割的原子数据项,不能是集合.数组.记录等非原子数据项.即实体中的某个属性有多个子属性时,必须拆分为不同的属性.第一范式是对关系型数据库的最低要求 2NF:在1NF的基础上,非码属性必须完全依赖于码(码:关系中的某个属性或某几个属性的组合,用于区分每个元组,元组可以理解为表中每条记录) 1NF存在的问题: 1)数据冗余:表

数据库表设计五大范式所解决的问题

上学时学得<数据库系统概念>,一致似懂非懂,停留在定义和证明层面.最近在做项目,认真的了解了下数据库的范式问题,只有潜意识懂得了其原理和应用场合才能较快设计出合理的表. 首先,明确概念如下: 主码 也就是主键 候选码 若关系中的某一属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识,则称该属性组为候选码.候选码不唯一,主码是其中一个而已. 主属性 包含在任一候选关键字中的属性称主属性 其次,也是本文重头戏,结合例子,讲一下各大范式对前者的改进和应用场景. 范式在现实中解决的问题 1.数