当前位置:第七章<<第三节 概念结构设计 |
冲突的种类主要有三类:属性冲突、命名冲突、结构冲突。 1.属性冲突 (1)属性域冲突:属性值的类型、取值范围或取值集合不同。 例如,由于学号是数字,因此某些部门将学号定义为整数形式,而由于学号不用参与运算,因此另一些部门将学号定义为字符型形式。又如,某些部门以出生日期形式表示学生的年龄,而另一些部门用整数形式表示学生的年龄。 (2)属性取值单位冲突。例如,学生的身高,有的以米为单位,有的以厘米为单位,有的以尺为单位。 属性冲突的解决方法通常是通过讨论、协商等行政手段加以解决。 ⒉ 命名冲突 (1)同名异义:不同意义的对象在不同的局部应用中具有相同的名字。例如,局部应用A中将教室称为房间,局部应用B中将学生宿舍称为房间。 (2)异名同义(一义多名):同一意义的对象在不同的局部应用中具有不同的名字。例如,有的部门把教科书称为课本,有的部门则把教科书称为教材。 命名冲突可能发生在属性级、实体级、联系级上,其中属性的命名冲突更为常见。命名冲突的解决方法,也主要通过讨论、协商等行政手段加以解决。 ⒊ 结构冲突 (1)同一对象在不同应用中具有不同的抽象。例如,“课程”在某一局部应用中被当作实体,在另一局部应用中则被当作属性。 解决方法:通常是把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。变换时要遵循以上的两个准则。 (2)同一实体在不同分E-R图中所包含的属性个数和属性排列次序不完全相同。产生的原因可能是不同的局部应用关心的是该实体的不同侧面。解决方法是使该实体的属性取各分E-R图中属性的并集,再适当设计属性的次序。 实体之间的联系在不同局部视图中呈现不同的类型,例如:实体E1与E2在局部应用A中是多对多联系,而在局部应用B中是一对多联系。又如:在局部应用X中E1与E2发生联系,而在局部应用Y中E1、E2、E3三者之间有联系。解决方法:根据应用语义对实体联系的类型进行综合或调整,如图7.22。 图7.22 合并两个分E-R图时的综合二、消除不必要的冗余,设计基本E-R图 在初步E-R图中,可能存在一些冗余的数据和实体间冗余的联系。冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难。消除不必要的冗余后的初步E-R图称为基本E-R图。 消除冗余的方法主要采用分析方法,即以数据字典和数据流图为依据,根据数据字典中关于数据项之间的逻辑关系的说明来消除冗余。如图7.23中,Q3=Q1×Q2,Q4为各Q5之和。所以可消去Q3,Q4,同时消去“产品”与“材料”间的冗余联系。
图7.23 消除冗余 但这不是说所有的冗余数据和冗余联系都必须加以消除,有时为了提高效率,不得不以冗余信息作为代价。这就需要根据用户的整体需求来确定,若人为地保留了一些冗余数据,则应把数据字典中数据关联的说明作为完整性约束条件。如图7.23,如果保留Q4,就应加上完整性约束Q4=∑Q5,一旦Q5修改后就应当触发完整性检查,对Q4进行修改。 消除冗余的第二种方法是规范化理论。在规范化理论中,函数依赖的概念提供了消除冗余联系的形式化工具。具体方法如下: 1.确定分E-R图实体之间的数据依赖,并用实体码之间的函数依赖表示。如图7.24中:
图7.24 劳动人事管理的分E-R图 部门和职工之间一对多的联系可表示为:职工号→部门号 1 2 3 4 5 6 |