设计分E-R图的步骤

简介: 设计分E-R图的步骤

设计分E-R图的步骤


⑴选择局部应用在需求分析阶段,通过对应用环境和要求进行详尽的调查分析,用多层数据流图和数据字典描述了整个系统。设计分E-R图的第一步,就是要根据系统的具体情况,在多层的数据流图中选择一个适当层次的(经验很重要)数据流图,让这组图中每一部分对应一个局部应用,我们即可以以这一层次的数据流图为出发点,设计分E-R图

⑵逐一设计分E-R图每个局部应用都对应了一组数据流图,局部应用涉及的数据都已经收集在数据字典中了。现在就是要将这些数据从数据字典中抽取出来,参照数据流图,

<1>标定局部应用中的实体,

<2>实体的属性、标识实体的码,

<3>确定实体之间的联系及其类型(1:1、1:n、m:n)。

<1>标定局部应用中的实体现实世界中一组具有某些共同特性和行为的对象就可以抽象为一个实体。对象和实体之间是"is member of"的关系。例如在学校环境中,可以把张三、李四、王五等对象抽象为学生实体。对象类型的组成成分可以抽象为实体的属性。组成成分与对象类型之间是"is part of"的关系。例如学号、姓名、专业、年级等可以抽象为学生实体的属性。其中学号为标识学生实体的码。

<2>实体的属性、标识实体的码实际上实体与属性是相对而言的,很难有截然划分的界限。同一事物,在一种应用环境中作为"属性",在另一种应用环境中就必须作为"实体"。一般说来,在给定的应用环境中:⑴属性不能再具有需要描述的性质。即属性必须是不可分的数据项。⑵属性不能与其他实体具有联系。联系只发生在实体之间。

<3>确定实体之间的联系及其类型(1:1、 1:n、 m:n)。根据需求分析,要考察实体之间是否存在联系,有无多余联系

(二)、 合并分E-R图,生成初步E-R图。


各分E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突。

1.属性冲突

(1) 属性域冲突,即属性值的类型、取值范围或取值集合不同。例如:属性“零件号”有的定义为字符型,有的为数值型。

(2) 属性取值单位冲突。 例如:属性“重量”有的以克为单位,有的以公斤为单位。

2.命名冲突

(1) 同名异义。 不同意义对象相同名称。

(2) 异名同义(一义多名)。同意义对象不相同名称。“项目”和“课题”

3.结构冲突

(1) 同一对象在不同应用中具有不同的抽象。例如"课程"在某一局部应用中被当作实体,而在另一局部应用中则被当作属性。

(2) 同一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相同。

(3) 实体之间的联系在不同局部视图中呈现不同的类型。例如实体E1与E2在局部应用A中是多对多联系,而在局部应用B中是一对多联系;又如在局部应用X中E1与E2发生联系,而在局部应用Y中E1、E2、E3三者之间有联系。解决方法是根据应用的语义对实体联系的类型进行综合或调整。

(三)、修改与重构,生成基本E-R图分E-R图经过合并生成的是初步E-R图。之所以称其为初步E-R图,是因为其中可能存在冗余的数据和冗余的实体间联系,即存在可由基本数据导出的数据和可由其他联系导出的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难,因此得到初步E-R图后,还应当进一步检查E-R图中是否存在冗余,如果存在,应设法予以消除。修改、重构初步E-R图以消除冗余,主要采用分析方法。除此外,还可以用规范化理论来消除冗余。


相关文章
|
存储 人工智能 算法
详细设计工具之盒图(N-S图)
详细设计工具之盒图(N-S图)
1165 0
详细设计工具之盒图(N-S图)
|
6月前
|
Java Maven
分模块开发的意义及开发步骤
分模块开发的意义及开发步骤
56 3
分模块开发的意义及开发步骤
|
6月前
|
算法 Python
传统流程图和N-S(又称盒图或NS图)结构流程图
传统流程图和N-S(又称盒图或NS图)结构流程图
800 2
|
Prometheus 数据可视化 前端开发
Kiali图的生成流程
Kiali图(Graph)的生成过程。Kiali是一款服务网格拓扑可视化工具,本文基于Kiali源码对图的生成流程进行了探索。
Kiali图的生成流程
|
存储 C++
C++实现图 - 01 图的概述及实现
前面我们讲的数据结构都是针对于一对一或一对多的情形,如果涉及到多对多的复杂情况就要用到我们接下来讲解的图了,这一讲我们重点讲解邻接表、邻接矩阵、十字链表以及邻接多重表的代码实现。如果已经对图的概念比较熟悉的小伙伴,可以拉到下面看相关的代码实现。
322 0
C++实现图 - 01 图的概述及实现
h0068. 实验 (15 分)
h0068. 实验 (15 分)
79 0
|
测试技术 数据库
测试用例(包含测经典试点全集图解,强烈建议保存收藏)(一)
测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
736 1
测试用例(包含测经典试点全集图解,强烈建议保存收藏)(一)
|
测试技术
测试用例(包含测经典试点全集图解,强烈建议保存收藏)(二)
测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
152 0
测试用例(包含测经典试点全集图解,强烈建议保存收藏)(二)
|
算法
图 - 基础篇
图 - 基础篇
85 0
|
机器学习/深度学习 人工智能 NoSQL
图计算是理解世界的新方式
哪种技术可以更精准建模人脑? 近日,蚂蚁图计算技术负责人陈文光博士受邀参加了2022极客公园创新大会并发表主旨演讲。陈文光认为,图计算以其丰富的表达能力,为处理复杂关系提供了一种全新的建模方式,也为更深刻地理解世界提供了一种有效工具。
167 0
图计算是理解世界的新方式