【数据库设计】逻辑结构设计

E-R实体集的转换

概念结构设计之后就是对E-R图进行逻辑结构设计:即将E-R图转化成关系的过程。逻辑结构设计主要用于数据库管理系统上,为了让数据在计算机系统中更好地表示。

此设计过程用到的数据模型有:除了前面讲过的关系模型还有层次模型、网状模型;和属于基于对象的的逻辑模型的E-R模型不同,它们都属于基于记录的逻辑模型。

在转换过程中有些名词需要做一些“变更”:

实体(实体集)

实体(集)的属性

实体(集)的标识符

实体(集)之间的联系

关系模式(表头)

属性(列名)

键(主键、外键、复合键等)

关系表间的参照完整性约束

示例:

E-R联系的转换

根据E-R的联系类型:一元、二元、三元,需要分类进行转换。其中一元和二元的转换是类似的,而三元需要先变成二元联系而后根据二元的转换规则进行。故只进行二元联系转换的介绍:

注:在此之前,我们已经进行了第一步——E-R实体集的转换。

二元联系包括包括1:1、1:n(或n:1)、n:n。

二元联系转换

1:1联系转换

只需要在两个中任选一个关系加入另一个关系中的主键,并且加上该联系自带有的属性。比如:

假设有两个关系:

Student(Sno, Sname, Sgender, Sage, Sdept)、StuCard(StuCardID, Cardbalance, CardExp)。

那么转换之后:

Student(Sno, Sname, Sgender, Sage, Sdept, StuCardID)、StuCard(StuCardID, Cardbalance, CardExp)

或者是:

Student(Sno, Sname, Sgender, Sage, Sdept)、StuCard(StuCardID, Cardbalance, CardExp, Sno )

什么叫该联系自带有的属性?不是指原有的关系中就有的属性,而是关系之间的联系可能产生的新属性。比如这两个表之间的联系是“持有”,但这个并没有额外的属性产生,但也能实现转换。

1:n(或n:1)联系的转换

就是在n端加入1端的主键,并且加上该联系自带有的属性。

假如有两个关系:学校和学生的关系是1:n

Student(Sno, Sname, Sgender, Sage, Sdept)、School(SchoolID, SchoolName, SchoolLocation)

转换之后:

Student(Sno, Sname, Sgender, Sage, Sdept、SchoolID)、School(SchoolID, SchoolName, SchoolLocation)

倘若是1端加入n端的主键,将会出现1端(比如学校ID)重复冗余的情况。

这里的联系是“录取”,学校录取学生,同样地,这个联系也没有额外的属性产生。

n:m联系的转换

通过新建一个关系模式,并且这个关系模式的属性由原来两个关系模式的主键和它们的联系自带有属性构成。

假如有两个关系,分别是学生表和选课表,而转换之后就会是一个新的关系叫成绩表,由于原有的两个关系之间的联系是“选课”,即学生选课。则该联系所带有的属性可能是“学生的课程成绩”。那么就可以有如下的转换过程:

原先的两个关系:

Student(Sno, Sname, Sgender, Sage, Sdept)、Course(Cno, Cname, Cpno, Ccredit)

转换结果(新的关系模式):

SC(Sno, Cno, Grade)

其实上面的1:1和n:1类型都能使用类似于第三种的方式进行:即建立一个新的关系。

比如1:1

新的是Hold(Sno, StuCardID)此外还有Student(Sno, Sname, Sgender, Sage, Sdept)、StuCard(StuCardID, Cardbalance, CardExp)

比如1:n

新的是Admission(Sno, SchoolID)此外还有Student(Sno, Sname, Sgender, Sage, Sdept)、School(SchoolID, SchoolName, SchoolLocation)

三元联系转换

E-R图可能是这样的:

同样地,我们先按照概念结构设计的步骤先完成到二元的转换,即生成一个新的实体集叫“修读计划”,如图所示。那么转换过程就是:

原先:

学生关系 Student(Sno, Sname, Sgender, Sage, Sdept)

课程关系 Course(Cno, Cname, Cpno, Ccredit)

学校关系 School(SchoolID, SchoolName, SchoolLocation)

先变成二元联系:

新的实体集:修读计划关系 Plan(PlanID, PlanName)

转成二元关系:遵循“包含原关系的主键和联系自带有属性”

包含关系 Contain(PlanID, Cno),

制定关系 MakePlan(PlanID, SchoolID)

选择关系 SelectPlan(PlanID, Sno)

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

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

相关文章

双十一该买什么比较好?双十一推荐好物清单分享

​是不是很多朋友跟我一样,已经为双11做好了准备,打算开启买买买的节奏!作为一名家居兼数码博主,每年双11的时候都会疯狂囤很多物品,所以今天就跟大家来分享一下,我的双11购物清单,也给大家参考…

数据结构部分混淆

1.随机存储和顺序存储: 随机存取:数组,当存储器中的数据被读取或写入时,所需要的时间与该数据所在的物理地址无关 顺序存取:链表,当存储器中的数据被读取或写入时,所需要的时间与该数据所在的物…

分享一份JSON数据格式商品详情数据详情示例

JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考: {"item": {"num_iid": "836392331271","title": "高腰阔腿牛仔裤女2024年新款…

Java:IDEA生成JavaDoc文档

有些开源项目并未直接提供api,但是通过从github、gitee下载项目可以手动生成Java文档。 步骤如下。 使用IDEA打开项目。 选择生成Java Doc文档: 第一步:选择生成JavaDoc文档的范围,我只对一个源文件生成Doc,所以选择…

鸿蒙开发超好用的 UI 组件和工具类库 BasicLibrary

大家好,我是 V 哥。你在学习HarmonyOS NEXT 开发吗,今天 V 哥给你推荐一款超好用的三方库BasicLibrary,BasicLibrary 是一个基于 API 11 封装的基本库,旨在提升鸿蒙开发效率。它包含了一些常用的 UI 组件和实用工具类,…

Java基础:面向对象编程8

1 Java 注解 1.1 概念 定义:注解(Annotation)是在 Java 1.5 时引入的概念,同 class 和 interface 一样,属于一种类型。作用:注解提供了一系列数据用来装饰程序代码(类、方法、字段等&#xff…

【Lammps】拉伸模拟实验

【Lammps】拉伸模拟实验 一、代码二、解析(1)初始化(2)建模(3)力场设置(4)热平衡和压力平衡设置时间单位nve系综设置npt 系综设置 (5)拉伸模拟操作&#xff0…

git配置以及如何删除git

你努力学习和充实自己,除了提升自身的价值,最实际的是当遇到有喜欢的人和事的时候,除了一片真心,还有拿得出手的东西 作用 记录开发的历史,每次记录就是一个版本,而且可以回到历史的某个版本可以实现多人合…

Python中怎样用AKShare获取基金最新数据?

炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…

浅谈普通学历编码学生代码编程之路--24程序员节

#1024程序员节 | 征文# 今夕已是2024年,楼主是一名大四学生 ,即将进入社会,曾经总是拿码农来开程序员的玩笑 ,也是也是幻想着成为一名码农啊,先说说个人学习Java之路 ,从步入大学开始就是主学Java&#xff…

【MyBatis】MyBatis缓存原理详解

目录 一、简介 二、缓存类介绍 2.1 PerpetualCache 2.2 LruCache 2.3 BlockingCache 三、CacheKey 3.1 总结:二级缓存命中条件 四、一级缓存 五、二级缓存 5.1 二级缓存如何组装这些装饰器?(解析SQL映射文件中的标签,初…

2025青海选调生报名指南及照片要求

第一步:用户信息注册,仔细阅读公告内容 第二步:人脸识别认证、上传照片 第三步:确认基本信息、照片确认 第四步:填写报考信息,请务必于11月5日18:00前提交 第五步:打印报名表,下载《…

.net framework 3.5sp1插件怎么安装

以下是在不同操作系统电脑上安装.NET Framework 3.5 SP1 的几种常见方法: 一、Windows 10 及以上操作系统: 1.在线安装(需要网络连接稳定): 按键盘上的 Windows 键,键入 “Windows 功能”,然…

Linux网络编程(五)-什么是TCP/IP协议族全面解读

1.什么是TCP/IP协议族 在了解TCP和UDP之前,我们先了解TCP/IP协议族,首先这个协议族的的由来,在一开始很多电脑表达一个消息的方法可谓是多种多样,因为它们运行着完全不同的操作系统,这就像有不同口音,说不…

【9712】基于springboot+vue的校园台球厅人员与设备管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 本次设计任务是要设计一个校园台球厅人员与设备管理系统…

基于java+springboot的大型超市数据处理系统

文章目录 前言技术介绍功能介绍核心代码数据库参考 系统效果图 前言 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,大型超市数据处理系统当然不能排除在外。大型超市数据处理系统是在实际应用…

laravel清除不同缓存

1、清除应用程序缓存: php artisan cache:clear2、清除路由缓存: php artisan route:cache3、清除配置缓存: php artisan config:cache4、清除编译后的视图文件: php artisan view:clear5、清除事件和监听器缓存: ph…

SpringBoot框架实战:打造宠物用品电商平台

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

SpringCloud之注册中心Consul使用详解

SpringCloud之注册中心Consul使用详解 在上个月我们知道 Eureka 2.X 遇到困难停止开发了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面 Spring Cloud 支持很多服务发现的软件,Eureka 只是其中之…

深入探索Python集合(Set)的高效应用:数据处理、性能优化与实际案例分析

文章目录 前言🪁一、 定义集合1.1 使用大括号 {} 定义集合1.2 使用 set() 函数定义集合 🪁二、添加元素2.1 使用 add() 方法2.2 使用 update() 方法 🪁三、移除元素3.1 使用 remove() 方法3.2 使用 discard() 方法3.3 使用 pop() 方法3.4 使用…