bcnf范式

WBOY
WBOYOriginal
2016-06-07 16:04:531669Durchsuche

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

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

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

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

\

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

\

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

\

喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGVtPjQuPC9lbT653MDt1LGx4LrFv8nS1Mi3tqiy1r/iusWhozwvcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20141013/2014101309164360.jpg" alt="\">

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

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

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

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

\

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

\\

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

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


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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:如何快速得到真实的执行计划Nächster Artikel:日期