当前位置: 代码迷 >> Oracle管理 >> 三范式有关问题
  详细解决方案

三范式有关问题

热度:122   发布时间:2016-04-24 04:11:27.0
三范式问题
学习三范式时,小弟理解第二范式和第三范式时候遇到了一个点问题:
百度上面遇到一道题目;
有关系(配件编号,配件名称,型号规格,供应商名称,供应商地址,单价,库存量)
按三范式分解;
我的分法是:
配件类(配件编号,配件名称,型号规格,供应商名称,单价,库存)、
供应商(供应商名称,供应商地址);
题目答案的分法是
配件关系(配件编号,配件名称,型号规格)、
供应商关系(供应商名称,供应商地址)、
配件库存关系(配件编号、供应商名称,单价,库存量)。
不理解的是为什么要把库存关系单独分开,第二范式保证每个属性都唯一独立单价、库存等属性都和名称规格等没有关系,第三范式保证每个关系中有单一主键,那么也不会区分开来。
请大虾帮我理理思路。
------解决思路----------------------
按照你的思路来看

题目:(配件编号,配件名称,型号规格,供应商名称,供应商地址,单价,库存量)

思路:
配件类(配件编号,配件名称,型号规格,供应商名称,单价,库存)、
供应商(供应商名称,供应商地址);

分析:
对于第三范式来说需要确保属性不依赖于其它非主属性。
楼主给出的配件类,对于某个配件来说可以由多个供应商提供,而且一个供应商肯定可以提供多个配件,之间的关系明显是多对多的关系,那么配件编号和供应商编号都无法作为主属性存在,因为之间是互相依赖的关系。
对第三范式楼主也可以理解为将需求中的最小元组作为基础表,再从基础表上延伸出它们之间的关系表。
该题目中有两个元组,一个配件,一个供应商,首先把配件和供应商的基本信息单独作为基础表,也就是配件表和供应商表,将相关字段都存放进去。其次,当这两个元组产生关系时会伴随着题目中的单价和库存的发生,那么需要一个关系表来存放这些行为的发生,也就是答案中的第三张关系表。
  相关解决方案