数据库逻辑结构设计-实体和实体间联系的转换、关系模式的优化

news2024/10/7 3:27:24

一、引言

如何将数据库概念结构设计的结果,即用E-R模型表示的概念模型转化为关系数据库模式。

E-R模型由实体、属性以及实体间的联系三个要素组成 

将E-R模型转换为关系数据库模式,实际上就是要将实体及实体联系转换为相应的关系模式,转换应遵循相应的规则,并确定这些关系模式的主键及外键,利用外键来体现实体间的联系。最后,还要对转换后的关系模式进行优化

二、实体的转换 

1、转换的规则是一个实体要单独转换为一个关系模式。实体的属性就是关系的属性,实体的关键字就是关系的主键。

2、举例:例如将一个学生实体转换为一个学生关系模式

(1)关系名为学生,包含学号、姓名、性别属性,学号为主键、

三、实体间联系的转换

1、根据实体间联系的类型,联系可单独转换为一个关系模式,也可不单独转换为一个关系模式

2、在转换后的关系模式中,应体现实体间的联系以及联系本身的属性

3、1:1联系的转换

假设班长被抽象为实体,而不是班级的属性,则班长和班级之间具有1:1的联系。对于1:1的联系,既可单独对应一关系模式,也可以不单独对应一关系模式

(1)若将该联系单独转换为一个关系模式

  • 该关系的属性则由参与联系的各实体的关键字以及该联系本身的属性构成
  • 每个实体的关键字均可作为该关系的主键
  • 每个实体的关键字均为该关系模式的外键

则班级和班长之间1:1的联系可转换为一个关系模式,可命名为负责人,具有班级号和学号两个属性,均可作为该关系的主键,均为该关系的外键,分别对应班级关系的主键班级号和班长关系的主键学号

(2)如果联系不对应一关系模式

  • 可将联系合并到与该联系相关的任意一端实体所对应的关系模式中,需要再被合并的关系模式中,增加联系本身的属性以及与联系相关的另一实体的关键字 
  • 新增属性后,原关系模式的主键不变
  • 增加的另一端实体的关键字为该关系模式的外键

对于班长和班级之间的1:1联系,则可在班级关系模式,增加一个班长学号属性 ,应是外键,对应班长关系的主键学号,主键仍是班级号

或在班长的关系模式中,增加一个班级号属性,应是外键,对应班级关系的主键班级号,主键仍为学号 

(3)这里给出 E-R模型中的1:1联系转换规则的抽象表达

对于实体E1和E2间的1:1联系,可以有三种转换处理方法

4、在教学信息管理案例系统中,班级和学生之间具有1:n的属于联系 ,对于1:n的联系,既可以单独对应一关系模式,也可以不单独对应一关系模式

(1)若将该联系单独转换为一个关系模式

  • 该关系模式的属性则由参与联系的各实体的关键字以及该联系本身的属性构成
  • 且该关系的主键为N端实体的关键字
  • 每个实体的关键字均为该关系模式的外键

班级和学生之间的1:n的联系可以转换为一个关系模式,命名为属于,具有学号和班级号两个属性,均为该关系的外键,分别对应学生关系的主键学号和班级关系的主键班级号,学生实体的关键字学号作为该关系的主键

(2)如果联系不单独对应一关系模式

  • 可将联系合并到n段实体所对应的关系模式中,需要在n端实体对应的关系模式中增加联系本身的属性以及1端实体的关键字
  • 新增属性后,关系模式的主键不变,仍为原关系模式的主键
  • 1端实体的关键字应是该关系模式的外键

对于班级和学生之间1:n的联系,则可在学生关系中增加一个所在班级号属性作为外键,对应班级关系的主键班级号,主键仍为学号

这里给出1:n联系转换规则的抽象表达,对于实体E1与E2之间的1:n联系,可以有两种转换处理方法

 5、在教学信息管理案例系统中 ,学生和课程之间具有m:n的选课联系,对于这类m:n的联系,只能转换为一个独立的关系模式

  •  该关系模式的属性由参与联系的各实体的关键字以及该联系本身的属性构成
  • 关系模式的主键各实体的关键字属性组合
  • 每个实体的关键字均为该关系模式的外键

学生和课程之间m:n的联系要转换为一个单独的关系模式可命名为选课成绩,具有学号、课程号和成绩三个属性,学号和课程号组合构成该关系的主键,又均为该关系的外键,分别对应学生关系的主键学号和课程关系的主键课程号

这里给出m:n联系转换规则的抽象表达,实体E1和E2之间的m:n的联系,只能有一种转换处理方法 

6、对于三个或三个以上实体多对多联系的转换,可根据情况采用不同的处理方法

  • 若只有一个多端实体,则可按1:n联系的转换规则进行转换,可单独转换为一个关系模式,也可不单独转换为一个关系模式。将与联系相关的实体的关键字以及联系本身的属性作为新属性加入到多端实体所对应的关系模式中 
  • 若有多个多端实体,则按m:n联系的转换规则进行转换,需转换为一个单独的关系模式。该关系模式的属性为多元联系相连的各实体的关键字以及联系本身的属性,而关系模式的主键各实体的关键字的组合

对于班级、课程和教师三个实体间,多对多联系可单独转换为一个关系模式,命名为班级选课,包含班级号、课程号、教师编号、上课年度、上课学期等属性,班级号、课程号、教师编号组合构成该关系的主键,又均为该关系的外键,分别对应三个实体关系的主键

四、子实体与ISA联系的转换

 对于研究生这类子实体及与超类实体学生间的ISA联系,应该如何转换

  • 子实体应单独转换为一个关系模式,关系模式的属性由超类实体的关键字和子类实体本身的属性构成
  • 超类实体的关键字作为关系的主键,也是参照超类实体关系的外键可通过外键继承超类实体的所有属性和与超类实体相关的联系 

对于学生的一个子实体集研究生,可单独转换为一个关系模式,包括学号、所在学科、研究方向等属性,主键为学号,学号也是关系的外键,对应学生关系的主键学号

 

五、弱实体与依赖关系的转换

对于可能存在的家庭成员这类依赖于常规实体的弱实体及依赖关系应该如何转换呢?

因弱实体不能独立存在,且弱实体和常规实体之间只能是1:1或n:1联系

  • 所以应将弱实体单独转换为一个关系模式,关系模式的属性常规实体的关键字弱实体本身的属性构成 
  • 关系模式的主键由常规实体的关键字与弱实体的关键字组合构成,说明弱实体要依赖于常规实体而不能单独存在
  • 常规实体的关键字作为外键,来体现两个实体间的联系

对依赖于学生实体的家庭成员弱实体需单独转换为一个关系模式,包括学生学号,家庭成员的身份证号、姓名 ,与学生的关系,职业、住址等。学号和家庭成员的身份证号组合构成家庭成员关系的主键,学生学号作为关系的外键,对应学生实体关系的主键学号

六、案例系统

针对教学信息管理信息案例系统的数据库概念结构设计所得的E-R图,利用前述的实体与联系转换规则,可得到该数据库的逻辑结构设计结果,即数据库关系模式

1、包含实体对应的关系,有班级、教研室、课程关系

2、体现1:n联系的实体关系,有学生关系和教师关系

3、体现m:n联系的联系关系,有班级选课和选课成绩关系

 4、子实体关系有研究生关系和导师关系

在研究生关系中增加属性指导教师,体现了与导师的多对一联系 

 在每个体现联系的关系模式中,都确定了与参照关系的外键

七、逻辑结构设计原则

  • 从转换结果可以看出,按转换规则将概念结构设计的E-R图中的实体和联系转换为关系模式,遵循的是“一事一地”的模式设计原则。
  • 所得到的关系数据库模式中,每个关系描述的信息比较单一,仅描述一个概念,即一个实体或实体之间的一种联系

八、关系模式的优化

(一)在数据库逻辑结构设计阶段,完成前面的逻辑结构设计后,还需要根据应用需求,对关系数据库模式进行优化。关系模式的优化是为了进一步数据库应用系统的性能,根据应用需求适当修改、调整关系模式的结构

  • 一种优化就是以关系规范化理论为指导,根据范式要求,将关系模式规范化为3NF或BCNF
  • 如果数据库设计者能深入分析应用需求正确抽取所有的实体和联系,并将其由E-R模型按规则正确转换为关系模式,则关系模式通常不需要进行过多的规范化

1、比如对于学生实体和课程实体及两个实体间m:n的选课联系,按转换规则转换为三个关系模式,可判断每个关系模式均满足BCNF。但如果不按转换规则来转换,把m:n的联系不单独转换为一个关系模式,像1:n联系一样,把学生的学号和联系的成绩属性加入到课程实体中,主键也是学号和课程号组合,可判断此时课程关系只满足1NF。

2、但对于由班级选修教师所授课程联系转换来的班级选课选课关系模式,相关的需求分析的描述是

  • 每个班级选修本专业开设的若干门课程,一个班级选修的某门课程只能由同一个教师来讲授。由该需求描述,可确定班级号和课程号函数决定教师编号
  • 由相同课程可由不同教师讲授的需求描述,可确定课程号不函数决定教师编号
  • 一个教师可为同一个班级讲授不同的课程,或为不同的班级讲授相同的课程,由该需求描述可确定班级号和教师编号不函数决定课程号,课程号和教师编号也不函数决定班级号
  • 班级选修的某门课程只能在一个年度内的一个学期内实施完成。由该需求描述,可确定班级号和课程号函数决定上课年度和上课学期

 

 

由以上这些函数依赖,可判断班级号和课程号,完全函数决定关系的所有其他属性,可做主键。因此我们可修改班级选课关系(讲授关系)的关系模式设计,将主键改为班级号和课程号的集合。可以看到,原来以班级号、课程号和教师编号为主键的班级选课关系存在着非主属性对于候选键的部分函数依赖,关系模式只满足1NF,经过这样的修改,关系模式可达到BCNF,使得在授课教师没有确定的情况下,可进行学生教学计划的信息插入等操作。

需要注意的是,这里范式级别的提高,不是通过模式分解来完成的,而是通过修改关系模式的主键来消除部分函数依赖来实现的

(二)关系模式的另一种优化,是为满足系统应用性能需求,对某些关系模式进行合并,减少关系的连接操作对系统查询性能的影响

  • 比如若应用对数据库的操作主要是进行查询操作,且查询涉及多个关系的属性时,DBMS可能要频繁进行关系的连接操作,为减小连接操作所花费的代价,可考虑将几个关系合并为一个关系

(三)在关系模式大的优化过程中,要注意以下几点

  • 并不是规范化程度越高的关系模式就越优
  • 低于BCNF的关系模式,虽然从理论分析上会存在不同程度的更新异常,但如果在实际应用中,只对此关系进行查询并不执行更新操作,则不会产生实际的影响
  • 对于一个具体的应用来说,到底关系模式优化到什么程度,需要权衡查询响应时间和更新操作问题两者的利弊

最后,给出教学信息管理案例系统的数据库逻辑设计的结果 

九、小结

  • 基于关系数据模型,将数据库概念结构设计的E-R模型转换为关系数据库模式,完成了数据库的逻辑结构设计 
  • 得到的数据库模式还需在给定的DBMS上用SQL语言定义为在DBMS中存储的逻辑结构,即进行数据库的物理结构设计

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

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

相关文章

iOS包ShaderVariantCollection预热慢问题

1)iOS包ShaderVariantCollection预热慢问题 2)使用SBP打Bundle如何读取AssetBundleManifest 3)如何将一张贴图经过Shader处理后的结果输出给另外一个Shader使用 4)为什么我的水这么干净,和UE教程里的有差别 这是第392篇…

位运算算法系列|概念讲解|例题讲解

大家好,我是LvZi,今天带来位运算算法系列|概念讲解|例题讲解 一,位运算基本概念 1.基础位运算 <<:左移操作,相当于 *2>>:右移操作,相当于 /2~:按位取反&:按位与操作,有0则0|:按位或操作,有1则1^:按位异或操作,相同为0,相异为1/无进位相加 注:对于^操作,无进…

昇思25天学习打卡营第4天|linchenfengxue

需求&#xff1a;建立一个图像分类模型&#xff0c;提供自动识别有(猫、狗、飞机、汽车等等) 图片的功能 ResNet50图像分类 图像分类是最基础的计算机视觉应用&#xff0c;属于有监督学习类别&#xff0c;如给定一张图像(猫、狗、飞机、汽车等等)&#xff0c;判断图像所属的类…

【直播倒计时】面向AI领域的开发工程师:TinyML在国产FPGA的边缘AI加速应用

TinyML是机器学习中的一个新兴领域&#xff0c;专注于开发可在低功耗、内存受限的设备上运行的算法和模型。其核心目标是将先进的机器学习算法和模型移植到体积小巧、能耗极低的嵌入式设备中&#xff0c;使这些设备具备边缘智能&#xff0c;能够在没有外部服务器支持的情况下进…

05 threeJs基础---阵列立方体和相机适配体验立方体

1.增加相机视角fov 注&#xff1a; 范围更大&#xff0c;意味着可以看到渲染范围更大&#xff0c;远小近大的视觉效果更明显 fov:眼球张开的角度&#xff0c;0时相当于闭眼。aspect:可视区域横纵比。near:眼睛能看到的最近垂直距离。far&#xff1a;眼睛能看到的最远垂直距离。…

Python类的定义和管理库之attrs使用详解

概要 在 Python 编程中,定义类和数据结构是常见的任务。然而,手动编写类的初始化方法、属性验证和比较方法可能会非常繁琐和容易出错。attrs 库是一个功能强大且灵活的工具,旨在简化类的定义和管理。通过使用 attrs,开发者可以轻松定义不可变对象、进行属性验证和类型检查…

2024长三角快递物流展即将开幕点击收藏逛展不迷路~

2024长三角快递物流展是亚洲范围内超大规模的快递物流业展示平台&#xff0c;由于展会的需求及扩大市场的影响力&#xff0c;ESYE2004转战杭州&#xff0c;凭借着先进的经济发展水平、优越的地理位置、成熟的产业环境以及巨大的电商、微商、零售业、消费的市场空间&#xff0c;…

SAP标准报表 S_ALR_8701XXXX是没有export to excel的 或者禁用 %PC也禁用了,如何开回来

以 s_alr_87012172为例子 系统-状态 进入程序 搜索 XXL 做下替换

大型企业组网如何规划网络

大型企业组网是一个复杂的过程&#xff0c;它需要细致的规划和设计&#xff0c;以确保网络能够满足企业的业务需求&#xff0c;同时保证性能、安全性和可扩展性。以下是规划大型企业网络的一些关键步骤和考虑因素&#xff1a; 1. 需求分析 业务需求&#xff1a;与各个业务部门…

如何使用WordPress进行外贸建站?

使用 进行外贸建站既简单又高效&#xff0c;搭建一个外贸网站是一个绝佳的方式来展示你的产品和服务&#xff0c;吸引全球客户&#xff0c;wordpress本身是一个高度可定制化的建站程序&#xff0c;只要你想&#xff0c;他能变成购物网站&#xff0c;宣传网站&#xff0c;所以第…

Centos安装Snaped

本人操作系统为Centos 7 1. 安装epel 和 copr yum #第一步安装epel sudo yum install epel-release #第二步安装copr sudo yum install yum-plugin-copr 2. 添加存储库 sudo yum copr enable ngompa/snapcore-el7 3. 安装snapd软件包 sudo yum -y install snapd 等待安装完…

window10/11如何下载安装JDK(jdk) 超详细图文教程

1、下载jdk 下载安装jdk17&#xff0c;网盘点此下载&#xff1a;https://pan.quark.cn/s/1fb394c360f0 也可以去官网下载&#xff0c;选择如图所示的版本&#xff0c;点击下载。 2、开始安装 双击下载好的exe进行安装 全程点击下一步即可&#xff0c;只有安装路径需要修改以…

基于STM32+华为云IOT设计的智能冰箱(华为云IOT)

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】摘要 1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发 二、部署华为云物联网平台2.1 物联网平台介绍2.2 开通物联网服务2.3 创建产品&#xff08…

TypeError: %c requires int or char

踩坑&#xff1a;在用python写脚本查询sql数据时&#xff0c;使用%s来替换sql语句里的变量&#xff0c;结果一直报&#xff0c;而其他sql使用同样的方法正常&#xff0c;最后发现是因为sql语句里有模糊查询 like "%测试%"&#xff0c;这里的%被误以为%s&#xff0c;解…

昇思25天学习打卡营第9天|基于 MindSpore 实现 BERT 对话情绪识别

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) 环境配置 %%capture captured_output # 实验环境已经预装了mindspore2.2.14&#xff0c;如需更换mindspore版本&#xff0c;可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip in…

valgrind调试c/c++内存问题:非法地址访问_内存泄漏_越界访问

1.valgrind命令 调试内存问题: valgrind --leak-checkfull 更新详细的显示: valgrind --leak-checkfull --show-leak-kindsall valgrind提示信息汇总 内存泄漏 lost in loss record 丢失记录 , 内存泄漏实例[[#2.内存泄漏–不完全释放内存|实例链接]]段错误 Process termina…

如何解决Oracle中PL Developer过期

如果长时间不使用PL Deveploer&#xff0c;再次打开有可能会出现以下页面&#xff1a; 上方页面说明此软件已经过期&#xff0c;有两种方法可以解决上述问题&#xff0c;第一种&#xff1a; 操作注册表&#xff1a; WinR 输入指令“regedit”打开注册表&#xff0c;出现下方页…

Camera开发-相机输出常用数据格式

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

STM32HAL库--定时器篇(速记版)

STM32F429 有14个定时器&#xff0c;其中包括 2 个基本定时器&#xff08;TIM6 和 TIM7&#xff09;、 10 个通用定时器&#xff08;TIM2~TIM5&#xff0c;TIM9~TIM14&#xff09;、 2 个高级控制定时器&#xff08;TIM1 和 TIM8&#xff09;。 由上表知道&#xff1a;除了 TIM…

具备生成自签名文档证书能力的印章管理软件_电子骑缝章软件

最新版的e-章宝具体生成自签名文档证书的能力&#xff0c;这种证书可用内部文档发布的签名&#xff0c;文档一旦用证书签名并发布&#xff0c;具有不可抵赖性&#xff0c;阅读者也能确认所发布的文档是否是发布者发布的&#xff08;即中途有没有被他人恶意修改过&#xff09;&a…