数据库分析之概念结构设计
概念结构设计:将需求分析得到的⽤户需求抽象为信息结构(即概念模型)的过程。
⼀、概念模型
在需求分析阶段所得到的应⽤需求应该⾸先抽象为信息世界的结构,然后才能更改、更准确地⽤某⼀数据库管理系统实现这些需求。
概念模型的主要特点:
1. 能真实、充分地反映现实世界,包括事物和事物之间的联系,能满⾜⽤户对数据的处理要求,是现实世界的⼀个真是模型。
2. 易于理解,可以⽤它和不熟悉计算机的⽤户交换意见。⽤户的积极参与是数据库设计成功的关键。
3. 易于更改,当应⽤环境和应⽤要求改变时容易对概念模型修改和扩充。
4. 易于向关系、⽹状、层次等各种数据模型转换。
概念模型是各种数据模型的共同基础,它⽐数据模型更独⽴于机器、更抽象,从⽽更加稳定。描述概念模
型的有⼒⼯具是E-R模型。
⼆、E-R模型
E-R模型是⽤E-R图来描述现实世界的概念模型。
1. 实体之间的联系
在现实世界中,事物内部以及事物之间是有联系的。实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体型的实体集之间的联系。
1. 两个实体之间的联系
1)两个实体型之间的联系
两个实体型之间的联系分为:
⼀对⼀联系(1:1)
如果对于实体集A中的每⼀个实体,实体集B中⾄多有⼀个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有⼀对⼀联系,记为1:1。
⼀对多联系(1:n)
如果对于实体集A中的每⼀个实体,实体集B中有n个实体(n>1)与之联系,反之,对于实体集B中的每⼀个实体,实体集A中⾄多只有⼀个实体与之联系,则称实体集A与实体集B有⼀对多联系,记为1:n。
多对多联系(m:n)
如果对于实体集A中的每⼀个实体,实体集B中有n个实体(n>0)与之联系,反之,对于实体集B中的每⼀个实体,实体集A中也有m个实体(m>0)与之联系,则称实体集A与实体集B具有多对多联系,记为m:n。
两个实体型间的关系如图:
2. 两个以上的实体型之间的联系
⼀般地,两个以上的实体型也存在着⼀对⼀、⼀对多和多对多联系。
3. 单个实体型内的联系
同⼀个实体集内的各实体之间也可以存在⼀对⼀、⼀对多和多对多的联系。
⼀般地,把参与联系的实体型的数⽬称为联系的度。两个实体型之间的联系度为2,也称为⼆元联系;三个实体型之间的联系度为3,称为三元联系;N个实体型之间的联系度为N,称为N元联系。
2. E-R图
E-R图提供了表⽰实体型、属性和联系的⽅法。
1. 实体型⽤矩形表⽰,矩形框内写明实体名。
2. 属性⽤椭圆形,并⽤⽆向边将其与相应的实体型联系起来。
3. 联系⽤棱形表⽰,棱形框内写明联系名,并⽤⽆向边分别于有关实体型连接起来,同时在⽆向边旁标上联系的类型(1:1、1:n或m:n)。
如果⼀个联系具有属性,则这些属性也要⽤⽆向边与该联系连接起来。
E-R图实例:
三、扩展的E-R模型
E-R⽅法是抽象和描述现实世界的有⼒⼯具。⽤E-R图表⽰的概念模型独⽴于具体数据库管理系统所⽀持的数据模型,是各种数据模型的共同基础,因⽽⽐数据模型更⼀般、更抽象、更接近现实世界。
1. ISA联系
ISA联系(⽗类-⼦类联系)⼀个重要的性质是⼦类继承了⽗类的所有属性,当然⼦类也可以由⾃⼰的属性。ISA联系⽤三⾓形来表⽰。
ISA联系描述了对⼀个实体型中实体的⼀种分类⽅法。
1)分类属性
根据分析属性的值把⽗实体型中的实体分派到⼦实体型中。
2)不相交约束与可重叠约束
不相交约束描述⽗类中的⼀个实体不能同时属于多个⼦类中的实体集,即⼀个⽗类中的实体最多属于⼀个⼦类实体集,⽤ISA联系三⾓形符号内加⼀个‘X’来表⽰。如果⽗类中的⼀个实体能同时属于多个⼦类中的实体集,则称为可重叠约束,⼦类符号中没有叉号表⽰是可重叠的。
3)完备性约束
完备性约束描述⽗类中的⼀个实体是否必须是某⼀个⼦类中的实体,如果是,则叫作完全特化,否则叫作部分特化。完全特化⽤⽗类到⼦类的双线链接来表⽰,单线连接则表⽰部分特化。
2. 基数约束
基数约束是对实体之间⼀对⼀、⼀对多和多对多联系的细化。参与联系的每个实体型⽤基数约束来说明实体型中的任何⼀个实体可以在联系中出现的最少次数和最多次数。
约束⽤⼀个数对ax表⽰,0 ⼩于等于min⼩于等于max(其中,*代表⽆穷⼤)。min=1的约束叫作强制参与约束,即被施加基数约束的实体型中的每个实体都要参与联系;min=0的约束叫作⾮强制参与约束,被施加基数约束的实体型中的实体可以出现在联系中,也可以不出现在联系中。
3. Part-of联系
Part-of联系即部分联系,它表明某个实体型是另外⼀个实体型的⼀部分。它可分为两种情况,⼀种是整体实体如果被破坏,部分实体仍然可以独⽴存在,称为⾮独占的Part-of联系,⾮独占的Part-of联系可通过技术约束来表达;另⼀种是独占联系,即整体实体如果被破坏,部分实体不能存在,在E-R图中⽤弱实体类型和识别联系来表⽰独占联系。如果⼀个实体型的存在依赖于其他实体的存在,则这个实体型叫作弱实体型,反之叫强实体型。⼀般来说,如果不能从⼀个实体型的属性中出可以作为码的属性,则这个实体型是弱实体型。
在E-R图中⽤双矩形来表⽰弱实体型,⽤双棱形表⽰识别联系。
四、UML
数据库设计的意义UML是对象管理组织(OMG)的⼀个标准,它不是专门针对数据建模的,⽽是为软件开发的所有阶段提供模型化和可视化⽀持的规范语⾔,从需求规格描述到系统完成后的测试和维护都可以⽤到UML。它可以⽤于数据建模、业务建模、对象建模、组件建模等,提供看多种类型的模型描述图。
1. 实体型:⽤类表⽰,矩形框中实体名放在上部,下⾯列出属性名。
2. 实体的码:在类图中在属性后⾯加“PK”来表⽰码属性。
3. 联系:⽤类图之间的“关联”来表⽰。
4. 基数约束:UML中关联类之间技术约束的概念、表⽰和E-R图中的技术约束类似。
5. UML中的⼦类:⾯向对象技术⽀持超类-⼦类概念,⼦类可以继承超类的属性,也可以有⾃⼰的属性。
UML实例图⽰:
五、概念结构设计
概念结构设计的第⼀步就是对需求分析阶段收集到的数据进⾏分类、组织,确定实体、实体的属性、实体之间的联系类型,形成E-R图。
1. 实体与属性的划分原则
事实上,在现实世界中具有的应⽤环境常常对实体和属性已经作了⾃然的⼤体划分。
为了简化E-R图的处置,现实世界的事物能作为属性的对待的尽量作为属性对待,不过要满⾜:
1. 作为属性,不能再具有需要描述的性质,即属性必须是不可分的数据项,不能包含其他属性。
2. 属性不能与其他实体具有联系,即E-R图中所表⽰的联系是实体之间的联系。
2. E-R图的集成
E-R图的集成步骤图⽰:
1. 合并
解决各分E-R图之间的冲突,将分E-R图合并起来⽣成初步E-R图。
合理消除各E-R图中的冲突是合并E-R图的主要⼯作与关键所在。各⼦系统的E-R图之间的冲突主要有三类:
1)属性冲突:属性域冲突,即属性值的类型、取值范围或取值集合不同;属性取值单位冲突。
2)命名冲突:同名异义,即不同意义的对象在不同的局部应⽤中具有相同的名字;异义同名(⼀义多名),即同⼀意义的对象再不同的局部应⽤中具有不同的名字。
3)结构冲突:同⼀对象在不同应⽤中具有不同的抽象;同⼀实体在不同⼦系统的E-R图中所包含的属性个数和属性排列次序不完全相同;实体间的联系在不听的E-R图中为不同的类型。
2. 修改和重构
消除不必要的冗余,⽣成基本E-R图。所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难,应当予以消除。
分析⽅法消除冗余,即以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消冗余。
规范化理论消除冗余,具体⽅法可以分为
1)确定分E-R图实体之间的数据依赖。实体之间⼀对⼀、⼀对多、多对多的联系可以⽤实体码之间的函数依赖来表⽰。
2)求Fl的最⼩覆盖Gl,差集为D=Fl-Gl。
备注:并不是所有的冗余数据与冗余联系都必须加于消除,有时候为了提⾼效率不得不以冗余信息作为代价。