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

一、引言

如何将数据库概念结构设计的结果,即用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.mzph.cn/news/861650.shtml

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

相关文章

【EtherCAT】TwinCAT3通过PLC修改SDO数据

目录 1、打开twincat3, 左边PLC右键->添加新项,建立PLC工程 2、->References右键添加库 3、找到Tc2_EtherCAT库,点确定。 4、PLC程序ST语言就可以调用下面的功能块函数 5、PLC编程界面右键->输入助手 1、打开twincat3, 左边PLC右键->添…

数据恢复篇:如何恢复丢失的Android短信?

许多用户发现自己处于重要短信意外从Android手机中删除的情况。幸运的是,有一些行之有效的方法可以在没有root的情况下恢复已删除的短信Android,这可以成为救命稻草。这些技术不需要深厚的技术知识,也不需要损害设备的安全性。为了帮助您摆脱…

jieba--《红楼梦》章节分卷并计算TF-IDF值(超详细)

目录 大致步骤: 任务1: 将红楼梦 根据卷名 分隔成 卷文件 红楼梦txt: 红楼梦卷头: 红楼梦章节分卷: 任务2:对每个卷进行分词,并删除包含停用词的内容 1.遍历所有卷的内容,并添…

Python26 Lambda表达式

1.什么是lambda表达式 lambda 是 Python 中的一个关键字,用于定义简单的匿名函数。与 def 关键字定义的标准函数不同,lambda 函数主要用于需要一个函数对象作为参数的简短操作。lambda 函数的设计哲学是简洁,因此它只能包含一条表达式&#…

7km远距离WiFi实时图传模块,无人机海上无线传输方案,飞睿智能WiFi MESH自组网技术

在浩瀚无垠的海洋上,无人机正在开启一场前所未有的技术创新。它们不再只是天空的舞者,更是海洋的守望者,为我们带来前所未有的视野和数据。而这一切的背后,都离不开一项创新性的技术——飞睿智能远距离WiFi实时图传模块与无线Mesh…

java必知必会-java IO

系列文章目录 java必知必会-java环境搭建 java必知必会-java开发工具安装与使用 java必知必会-java关键字、变量和常量 java必知必会-java数据类型和变量定义 java必知必会-java类和对象 java必知必会-java面向对象的三大特性 java必知必会-java继承与重写、重载 java必知必会…

昇思25天学习打卡营第1天|快速入门-Mnist手写数字识别

学习目标:熟练掌握MindSpore使用方法 学习心得体会,记录时间 了解MindSpore总体架构 学会使用MindSpore 简单应用时间-手写数字识别 一、MindSpore总体架构 华为MindSpore为全场景深度学习框架,开发高效,全场景统一部署特点。 …

Verilog进行结构描述(三):Verilog模块实例化

目录 1.模块实例化(module instantiation)2.实例数组(Array of Instances) 微信公众号获取更多FPGA相关源码: 1.模块实例化(module instantiation) 模块实例化时实例必须有一个名字。使用位置映射时,端口次序与模块的说明相同。使用名称映射时&#x…

搭建大型分布式服务(四十)SpringBoot 整合多个kafka数据源-支持生产者

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

ZYNQ学习教程?ZYNQ-FPGA实战教程!

学习 ZYNQ 比FPGA、MCU、ARM 等传统工具开发要求更高&#xff0c;想学好 ZYNQ 也不是一蹴而就的事情。 学习 ZYNQ 要具备的技能&#xff1a; 1、 软件开发人员  计算机组成原理、 C、C语言、 计算机操作系统、tcl 脚本、良好的英语基础 2、 逻辑开发人员 计算机组成原理…

关于服务器的一些知识

1. 云服务器 和 轻量应用服务器 腾讯云中的"云服务器"&#xff08;Cloud Virtual Machine, CVM&#xff09;和"轻量应用服务器"&#xff08;Lite Cloud Server&#xff09;都是提供云端计算资源的服务&#xff0c;但它们在定位、特性和使用场景上存在一些差…

LongRAG:利用长上下文大语言模型提升检索生成效果

一、前言 前面我们已经介绍了多种检索增强生成 (RAG) 技术&#xff0c;基本上在保证数据质量的前提下&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术能够有效提高检索效率和质量&#xff0c;相对于大模型微调技术&#xff0c;其最大的短板还是在于有限的上下文窗口…

幽默证明题!高考成绩公布后,妈妈连夜写了一封信:孩子,这就是我不让你玩手机的原因——早读(逆天打工人爬取热门微信文章解读)

毛毛雨&#xff0c;五分钟结束&#xff0c;怎么证明今天早上有下雨呢&#xff1f; 引言Python 代码第一篇 洞见 高考成绩公布后&#xff0c;妈妈连夜写了一封信&#xff1a;孩子&#xff0c;这就是我不让你玩手机的原因第二篇 视频新闻结尾 引言 今天睡眠质量不错 发现一个问题…

10分钟微调专属于自己的大模型_10分钟微调大模型

1.环境安装 # 设置pip全局镜像 (加速下载) pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 安装ms-swift pip install ms-swift[llm] -U# 环境对齐 (通常不需要运行. 如果你运行错误, 可以跑下面的代码, 仓库使用最新环境测试) pip install -r r…

vb6多线程异步,VB.NET 全用API实现:CreateThread创建多线程,等待线程完成任务

在VB.NET中&#xff0c;你可以使用API函数来创建多线程并等待线程完成任务。以下是一个示例代码&#xff0c;展示如何使用API函数来实现这个功能&#xff1a; Imports System.Runtime.InteropServices Imports System.ThreadingPublic Class Form1Private Delegate Sub ThreadC…

大模型+多模态合规分析平台,筑牢金融服务安全屏障

随着金融市场的快速发展&#xff0c;金融产品和服务日趋多样化&#xff0c;消费者面临的风险也逐渐增加。 为保护消费者权益&#xff0c;促进金融市场长期健康稳定发展&#xff0c;国家监管机构不断加强金融监管&#xff0c;出台了一系列法律法规和政策文件。对于金融从业机构…

【DC-DC升压电推剪方案】FP6277,FP6296电源升压芯片在电推剪中扮演着一个怎样的角色?带你深入了解电推剪的功能和应用及工作原理

随着人们对个人形象要求的不断提高&#xff0c;理发器作为一个必备的家居用品&#xff0c;也在不断进行技术升级。而其中的核心装备之一&#xff0c;电推剪理发器升压芯片FP6277、FP6296&#xff0c;正在引领着现代理发技术的突破。本文将给大家带来的是电推剪在传统意义上运用…

keil仿真,查看函数执行时间和执行次数

Execution Profiler执行档案器 The Execution Profiler records timing and execution statistics about instructions for the complete program code. To view the values in the Editor or Disassembly Window, use Show Time or Show Calls from the menu Debug — Executi…

6.18-6.26 旧c语言

第一章 概述 32关键字 9种控制语句 优点&#xff1a;能直接访问物理地址&#xff0c;位操作&#xff0c;代码质量高&#xff0c;执行效率高 可移植性好 面向过程&#xff1a;以事件为中心 面向对象&#xff1a;以实物为中心 printf&#xff1a;系统定义的标准函数 #include&l…

探索 JQuery EasyUI:构建简单易用的前端页面

介绍 当我们站在网页开发的浩瀚世界中&#xff0c;眼花缭乱的选择让我们难以抉择。而就在这纷繁复杂的技术海洋中&#xff0c;JQuery EasyUI 如一位指路明灯&#xff0c;为我们提供了一条清晰的航线。 1.1 什么是 JQuery EasyUI&#xff1f; JQuery EasyUI&#xff0c;简单来…