数据库概念结构设计-设计步骤、设计方法、集成中去除冲突和冗余

一、引言

1、如何用实体-联系模型,即ER模型进行数据库的概念结构设计?主要包括概念结构设计的步骤与方法

2、E-R模型用E-R图来描述概念模型中的实体、属性、实体间的联系等概念。

(1)在E-R模型中,实体用矩形来表示,实体的属性用椭圆表示并用无向边将其与相应的实体连接起来

(2)联系用菱形表示并用无向边分别与有关实体连接起来同时在无向边上标上联系的类型,是1:1、1:n还是m:n

(3)在实体集A与子集实体集B之间,可存在ISA联系,用指向超类的三角形表示,实体B可通过ISA联系,继承实体A中的所有属性和与A相关的联系,同时拥有自己特有的属性

(4)依赖于常规实体的弱实体,用双线矩形框表示,与常规实体之间存在着一种依赖联系,用双线菱形框表示

  

在这些基本要素的基础上,可构造具体的应用系统中实体及其联系的完整E-R图来实现数据库的概念结构设计 。

二、概念结构设计步骤

(一)基于E-R模型进行数据库概念结构设计,一般遵循如下步骤

1、从需求分析的结果文档中,抽取实体与实体的属性并绘制实体的E-R图

2、确定实体之间的联系,以及发生联系后产生的属性特征,绘制联系的E-R图

3、组合实体与联系的E-R图,构造应用系统的完整E-R图 

(二)其中抽取实体是概念结构设计的重点 ,下面以一个学校的小型的教学信息管理系统(案例系统)为例,按设计步骤进行应用系统的数据库概念结构设计

学校教学信息管理系统功能

  • 经需求分析已知,系统的功能是要管理学校所有的专业系的信息,包括系所管辖的班级和教研室的信息
  • 每个班级的学生信息及选课信息
  • 每个教研室的教师信息及教师授课信息
  • 学生成绩信息

系统要能对要能对管理的数据进行合理地组织、存储,能实现数据的及时更新,并能对数据进行如下这类复杂的查询操作

1、基于需求分析的描述,及系统对数据的处理需求,可确定需在系统中进行管理的实体应包括班级、教研室、学生、教师和课程及描述实体的必要特征属性,如班级实体的班级号、所在系、专业、人数,教研室实体的教研室名称、所在系、室主任、人数等

而对于专业系这个所涉及的对象,需要考虑的是,将其单独抽象为一个实体,还是抽象为班级或教研室的属性,一般的原则是

  •  如果系统需要进一步描述该对象的特性并需处理该对象与其他实体间的联系,则将该对象抽象为实体
  • 如果该对象只是用来描述另一个实体的,则将该对象抽象为属性

所以从需求分析的结果来看,并不需要对专业系进行操作,这里我们就把专业系只作为班级和教研室的属性,当然,更不能将学校作为自身系统的实体。

2、绘制好实体及其属性的E-R图,下面来确定实体间的联系

需求分析的结果为:

  • 每个班由同一专业系中同一专业的多名学生组成
  • 每个教研室由承担几门共同课程的多名教师组成
  • 每个班级选修本专业开设的若干门课程,一个班级选修的某门课程只能由同一个教师来讲授
  • 相同的课程可由不同的教师讲授
  • 一个教师可为同一个班级讲授不同的课程,或为不同的班级讲授相同的课程,或为不同的班级讲授相同的课程
  • 班级选修的某门课程只能在一个年度的一个学期内实施完成
  • 每个学生选修每门课程要有相应的成绩 

 

  

设计思考2:多个实体间的联系设计为二元联系还是多元联系?

  • 一般根据需求中多个实体间联系的语义描述,以及所涉及的实体,来确定是构造二元联系还是多元联系
  • 若用户只考虑两两实体间的联系,可采用多个二元联系来实现 

在此处,因应用要进行一些类似查询2018年度给多个班级讲授同一门课程教师编号和所讲授的课程号这类数据操作, 所以这里我们构造实体班级、课程和教师之间的一个三元联系,可命名该联系为班级选课。而三个实体间发生联系会产生上课年度、上课学期和教室等属性。

设计思考3:而这里需要考虑的是,对于上课学期,应是班级选课联系的属性还是课程的属性?

  • 因实体的属性是实体的内在特征 
  • 而联系上的属性描述因发生联系而需要记录存储的信息,其值会随着联系的产生而出现,也会随着联系的消失而消失

因此要根据学校的具体情况,课程是否固定在某个学期进行实施的,若不是这样的,则不能将上课学期作为课程的属性,只能作为班级选课联系的属性。这里,我们将上课学期和上课年度一起作为班级选课联系的属性,不考虑其他与教学信息管理无关的属性

此外,要管理学生的课程成绩,所以学生实体和课程实体之间存在选课成绩联系,该联系上有成绩属性。

3、至此,我们可以将前两步所得到的实体与联系的E-R图进行组合,构造出该教学信息管理系统的完整E-R图

若系统中还要管理研究生及其指导教师的信息,则需在构造好的E-R图中增加两个实体类型 :导师实体和研究生实体

导师实体具有所在学科、导师类别等属性,与教师实体间存在着ISA联系。研究生实体具有所在学科、研究方向等属性,与学生实体间存在着ISA联系,与导师实体存在指导联系。

至此,完成该学校的教学信息管理系统的数据库的概念结构设计。

若该教学信息管理系统不仅要管理教学信息,还要管理所辖人员的档案信息,则需对学生实体和教师实体增加属性,比如增加具有依赖关系的弱实体等。将学生的家庭成员单独构成一个弱实体,来记录学生的家庭成员的姓名、与学生的关系、身份证号、职业、住址等信息。

对于一个学校的综合信息管理系统,可能包含多个业务功能总系统,那么如何设计面向整个应用领域的全局数据库的概念结构呢?

三、概念结构设计方法

(一)自顶向下

自顶向下是首先设计全局概念结构框架,再逐步细化逐步的概念结构,最后生成完整的概念结构

(二)自底向上

自底向上是先设计各局部概念结构,然后通过集成得到完整的全局概念结构

(三)由内向外

由内向外是首先设计最重要的核心功能子系统概念结构,然后逐步向外扩充,生成其他功能系统的概念结构,直至完成全局概念结构。比如前面我们不断增加需求的学校信息管理系统的设计

(四)混合设计 

而混合策略则采用自顶向下和自底向上相结合的方法,用自顶向下的方法设计一个全局概念结构框架,再用自底向上方法,集成生成个局部概念结构

(五)常用的自底向上的概念结构设计又可分为两步

1、首先划分数据库局部结构,比如可按照应用系统的业务功能来划分,为各应用的子系统设计各自的概念结构,即局部E-R模型。

例如对于一个学校信息管理系统,有教务、科研、财务等业务功能,各功能子系统对信息内容和处理的要求不同,根据需求分析的结果,按照前面的概念结构设计步骤,为它们设计各自的局部E-R模型。

2、在局部E-R模型均设计完成后,第二步就是进行E-R模型的集成,对局部E-R模型的集成是通过相同实体进行叠加的方式完成的,在集成过程中,要注意解决冲突和冗余这两类问题

(1)若已对应用系统进行了全面的需求分析,并用数据字典对系统中所涉及的各类数据对象已进行了统一描述。在此基础上,从需求分析的结果经过数据抽象得到的各局部E-R模型之间的冲突应主要包括三种结构冲突 :

  • 同一对象在不同应用中被抽象的结果不同, 在有的E-R模型中被抽象为属性,在有的E-R模型中被抽象为实体。比如前面提到的专业系,可能在另一个局部E-R模型中就被抽象为实体
  • 同一实体在不同的E-R模型中所包含的属性不同

不同子系统关注的对象的特征不同 ,全局数据库应为各类应用提供数据的共享,所以对于第一类结构冲突应统一抽象为实体,对第二类结构冲突,应把所有属性合并起来

  • 第三种结构冲突是在不同的E-R模型中,两个实体间的联系名称其属性不同,或其联系的类型不同

因两个实体间可以有多种联系,所以要判断这是两个实体间不同的联系还是同一联系的不同称谓,若是后者,应对联系名称和类型进行统一类型由1向多统一相关的属性也要进行名称统一或合并 

 (2)消除冲突后,集成得到的初步的全局E-R模型还可能存在着冗余的属性或联系

  • 也就是通过其他属性的值可以推导出其值的属性
  • 和通过其他实体间的联系可以推导出来的两个实体间的联系

需要去除

比如我们前面设计的学校信息管理系统,各局部E-R模型集成后,可能还存在着教研室实体和课程实体的任课单位联系,而该联系可体现在教研室实体和教师实体以及教师实体与课程实体之间的联系中,是冗余的联系,可去除 

四、小结

1、数据库概念结构设计将系统要管理的对象进行了抽象,采用概念模型,精确表达数据对象的特征以及对象之间的联系

2、是数据库逻辑结构设计的基础,是数据库设计的关键步骤 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转行AI产品经理,这些“门槛”你得先迈过!

前言 随着人工智能(AI)技术的飞速发展,AI产品经理这一岗位逐渐崭露头角,成为许多追求创新和挑战的职业人士的新选择。但转行并非易事,特别是进入到一个全新的领域。在决定踏上AI产品经理这条道路之前,以下…

推荐5个国内宝藏级物联网平台

随着物联网技术的快速发展物联网平台正成为企业和个人开发者构建智能系统的首选。这些平台以其灵活性、成本效益和强大的社区支持,为用户提供了快速开发和部署物联网解决方案的新途径。本文将介绍几款市场上流行的物联网平台,以及它们各自的技术优势和核…

UI(二)控件

文章目录 PatternLockProgressQRCodeRadioRatingRichTextScollBarSearchSelectSlideSpanStepper和StepperItemTextTextAreaTextClockTextInputTextPickerTextTimerTimePickerToggleWeb PatternLock PatternLock是图案密码锁组件,以九宫格图案的方式输入密码&#x…

数据质量管理-一致性管理

前情提要 根据GB/T 36344-2018《信息技术 数据质量评价指标》的标准文档,当前数据质量评价指标框架中包含6评价指标,在实际的数据治理过程中,存在一个关联性指标。7个指标中存在4个定性指标,3个定量指标; 定性指标&am…

Centos7 Cpolar内网穿透工具

你是否想把本地测试的项目挂载到公网上提供给别人调用查看(当然这是在你没有服务器的情况下,如果有请跳过) 服务器系统:CentOS-7-x86_64-DVD-2009.iso 这是我在本地测试使用的服务器系统 Coplar官网 注册方式:邮箱注…

维吉尼亚密文解密小程序

维吉尼亚密文解密小程序 这几天在看CTF相关的课程,涉及到古典密码学和近代密码学还有现代密码学。自己编了一个解密小程序。 Vigenere 维吉尼亚密码 维吉尼亚是多表替换密码中比较典型的代表,维吉尼亚密码是在凯撒密码基础上产生的一种加密方法&#…

SAP-SD-修改字段描述

在销售订单中,想修改某字段名的描述,以客户组12为例,如下图 现在想把这个字段修改为客户组1,选择-F1 双击“数据元素” 双击 域 转到-翻译

安卓免费短剧大全v1.0.2/全部无需VIP实时更新全平台短剧

在当今社会,时间成为了许多人最为宝贵的资源。忙碌的工作与繁重的日常事务,常常让我们难以拨出时间沉浸于长篇大幅的影视作品中。对于那些热爱剧情、渴望在生活中点缀一抹戏剧色彩的朋友们而言,这无疑是一种挑战。 然而,随着免费…

【数据分享】《国际统计年鉴》1996-2022

公众号新功能 目前公众号新增以下等功能 1、处理GIS出图、Python制图、区位图、土地利用现状图、土地利用动态度和重心迁移图等等 2、核密度分析、网络od分析、地形分析、空间分析等等 3、地理加权回归、地理探测器、生态环境质量指数、地理加权回归模型影响因素分析、计算…

和AI高效对话,掌握这6个原则就够了!

一、前言 2023年11月30日,ChatGPT3.5发布以后,震撼了全球。很多普通人发现,只要会提问题,自己也可以大大方方地拥抱AI和大模型的浪潮~ 对大模型AI提问的技术,就是我们常说的Prompt技术。 Prompt技术,全称为…

Linux 安装ElasticSearch + FSCrawler 扫描本地的文件资源

文章目录 0. 前言1. 安装ElasticSearch1.1 下载安装包1.2 新增用户1.3 解压安装包1.4 更改文件夹用户1.5 修改配置文件1.6 修改系统配置1.7 启动集群 2. 安装FSCrawler2.1 下载安装包2.2 创建配置文件2.3 修改配置文件2.4 启动2.5 验证是否被索引 0. 前言 Elasticsearch 是一个…

CDGA|数据治理新策略:完善分级分类,打破算法偏见枷锁

在数字化时代,数据已成为企业运营和社会发展的核心驱动力。然而,随着数据量的爆炸性增长,数据治理的重要性也日益凸显。其中,数据分级分类和算法偏见等问题成为了当前数据治理面临的关键挑战。 数据分级分类:确保数据的…

【Web服务与Web应用开发】【C#】创建第一个简单的WCF服务应用程序 WCF Service Application(图文详情)

目录 0.简介 1.环境 2.知识点 3.详细过程 1)打开 Visual Studio 2019 ,下载所需插件 2)创建WCF服务应用项目 3)打开 【IService1.cs 】在此处定义服务函数 4)打开 【Service1.svc.cs】实现服务函数 5&#x…

LINUX centos 安装jenkins超超超超超超级详细步骤

Jenkins安装 配置jdkmavengit jenkins 拉取 配置 jdk 1.安装jdk8 yum install java-1.8.0-openjdk-devel2.检查版本 java -version出现如下图查看版本信息 3. 设置JAVA_HOME环境变量 vim /etc/profile最下方输入 export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk expor…

判断对象是否为空的多种方式

判断对象是否为空 网上也有许多方法,这里来整理一下 一、Object.keys(obj) ES6 写法: const data {}; const arr Object.keys(data); console.log(arr.length); // 0二、JSON.stringify() const obj {}; const arr JSON.stringify(obj); console.…

4.整合第三方技术【整合JUnit】

目录 1.创建项目: 2.导入测试对应的starter 3.添加测试对象 3.1 添加Prodcut接口文件 3.2 添加ProdcutImpl文件 3.3 测试类添加测试文件,并开始测试 4.测试类文件解析 4.1.测试类使用SpringBootTest修饰 4.2使用自动装配的形式添加要测试的对象 1.…

【PromptCC】遥感图像变化字幕的解耦范式

摘要 以往的方法忽略了任务的显著特异性:对于不变和变化的图像对,RSICC难度是不同的,以一种耦合的方式处理未变化和变化的图像对,这通常会导致变化字幕的混淆。论文链接:https://ieeexplore.ieee.org/stamp/stamp.jsp…

Trip.com 如何从 Elasticsearch 迁移到 ClickHouse 并构建了 50PB 的日志解决方案

本文字数:8721;估计阅读时间:22 分钟 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 在 Trip.com,我们为用户提供广泛的数字产品,包括酒店和机票预订、景点、旅游套餐、商务…

电脑复制按哪个键?还不会操作的赶紧来看!

当我们提到“电脑复制按哪个键”时,实际上是在讨论电脑键盘上用于执行复制操作的快捷键。复制功能在日常的电脑操作中极为常用,无论是文本编辑、文件处理还是图片操作,都离不开复制这一基本功能。以下,我们将深入探讨电脑复制操作…