DBMS-2.1 数据库设计(1)——数据库设计与数据模型

news2024/11/13 11:32:42

本文章的素材与知识均来自于李国良老师的数据库管理系统课程。 

  • 数据库设计和数据模型

一.数据模型

1.概念

(1)数据库结构的基础就是数据模型。数据模型是用于描述数据间的联系、数据语义(即数据操作)、一致性(完整性)约束的概念和工具的集合。

2.分类

(1)E-R模型:下文讲述

(2)面向对象模型:以E-R模型为基础,以对象的形式来管理数据。

(3)关系模型:在DBMS-1.1一文中已讲述。

(4)网状模型:以“树形结构”来表示数据记录间的联系。

(5)层次模型:以“图形结构”来表示数据记录间的联系。

二.数据库设计

        将上述数据模型抽象成概念数据模型、逻辑数据模型和物理数据模型三大类。而概念数据模型和逻辑数据模型其实就是对上述逻辑数据模型的再拆分。

1.概念设计阶段

(1)实现:确定概念数据模型。

(2)概念数据模型:概念数据模型就是对实际业务进行分析,提炼出关键概念。概念数据模型通常使用E-R模型表示。

(3)因此,概念设计阶段就是对实际业务进行分析,抽象提炼出E-R模型。

(4)作用:概念数据模型是面向用户的,是用户对实际数据进行抽象建模后的结果,主要用于数据库的概念设计。

2.逻辑设计阶段

(1)实现:将概念数据模型转换为逻辑数据模型。

(2)逻辑数据模型:常见的逻辑数据模型有关系模型、面向对象模型、层次模型和网状模型等。

(3)因此,逻辑设计阶段就是选定一种逻辑数据模型,并将E-R模型转换成该逻辑数据模型。

(4)作用:逻辑数据模型既是面向用户的,也是面向系统的,是数据从真实业务向计算机数据库转换的一个过渡,主要用于数据库管理系统的逻辑设计。

3.物理设计阶段

(1)实现:将逻辑数据模型转换为物理数据模型。

(2)物理数据模型:物理数据模型就是逻辑数据模型在数据库管理系统中的具体存在方式,描述了数据在存储介质上的组织结构。

(3)物理设计阶段涉及到:字段类型、长度的定义,字段的其他详细定义例如非空、默认值等,枚举字段的定义例如各枚举的具体含义等,约束的定义例如主键、外键等。

(4)作用:物理数据模型是面向系统的,主要用于数据库管理系统的物理实现。

4.区别理解

        网上关于这三个数据模型的分析都各有各的理解,例如认为在概念数据模型中仅包含实体与联系,在逻辑数据模型中包含实体、联系和属性等。但无论如何,对三个数据模型的分析和三个设计阶段的推进,都是为了能逐步、规范地设计出好的数据库,不必在此过多纠结。

三.关系数据库设计的核心

1.在关系数据库中,概念数据模型用E-R模型表示,逻辑数据模型用关系模型表示。

2.因此,系数据库设计的一个核心步骤,就是将E-R模型转化为关系模型。

  • 概念设计——E-R模型

一.E-R模型概念理解

1.E-R模型是实体-联系模型(Entity-Relationship Model)的简称。

2.E-R模型是用于描述现实世界的概念数据模型,是目前大部分数据库在概念设计阶段所采用的数据模型。

二.E-R模型的基本元素

1.实体和实体集

(1)实体:实体是对现实世界中事物数据概念的某种抽象,可以指现实世界的人、事、物等。例如同学A是一个实体,同学B也是一个实体。

(2)实体集:实体集是多个具有相同性质的同类实体构成的集合。例如一个班级的所有同学构成一个实体集,其中每个同学都是一个实体。

2.属性

(1)属性:属性是用来描述实体集的一组特征。例如实体集Student,拥有的属性可以是:number、name、age、gender等。

(2)标识符:实体集的属性中,可以唯一标识不同实体的某个属性,称为标识符。

(3)复合标识符:当必须选取多个属性才可以唯一标识不同实体时,这多个属性的组合构成符合标识符。

(4)实体集的标识符或复合标识符只能有一个,若存在多个能唯一标识不同实体的标识符或符合标识符,则选择最合适的那一个。

3.联系

(1)联系:在E-R模型中,联系特指实体与实体间的联系。且这种联系一般是用动词来命名,例如学生实体与课程实体的联系为”选课“。

三.E-R图

1.实体集的表示方法

(1)在E-R图中,用实体集来抽象表示一类实体,不单独表示某个实体。

(2)实体集用矩形表示,在矩形框内标注实体集名字。

2.属性的表示方法

(1)属性用椭圆形表示,在椭圆形框内标注属性名字,并用无向边将其与相应的实体集连接起来。

(2)*** 体集的标识符用下划线标识出来。

3.联系的表示方法

(1)联系用菱形表示,在菱形框内标注联系名字,并用无向边将其与有关实体集连接起来。

(2)*** 在无向边旁标上联系的类型:1:1 , 1:n , m:n。

(3)联系本身也可以具有属性,同样使用椭圆形表示联系的属性,并用无向边将联系和其属性连接。

(4)联系的属性不同于实体集的属性,无需关注标识符。

4.示例

(1)实体集Course,其属性有:Cno、Cname、Cpno、Ccredit,其中标识符为Cno。

(2)实体集Student,其属性有:Sno、Sname、Sgender、Sage、Sdept,其中标识符为Sno。

(3)实体集Course和实体集Student以n:m(即多对多)的关系,存在联系SC,且联系SC的属性有:Grade。

四.E-R联系模型

1.一元联系

(1)一元联系:同一实体集内部不同实体间的联系。例如实体集Student内部,不同的学生间存在组长、组员等角色,其中身为组长的学生对身为组员的学生,存在”管理“联系。

(2)示例

2.二元联系

(1)二元联系:两个实体集之间的联系称为二元联系。例如实体集Student和实体集Course,学生实体对课程实体,存在”选择“联系。

(2)一元联系可以看作是特殊的二元联系。

(3)示例

(3)

3.二元联系——一对一联系(1:1)

(1)一对一联系:实体集E中的每一个实体最多可以和另一实体集F中的一个实体有关系,反之亦然,则称实体集E和实体集F具有一对一联系,记作1:1。

(2)此处未强调实体集E和实体集F必须是不同类型的实体集,当实体集E和实体集F是同一类型实体集时,该二元联系实际上是一元联系。一般提到二元联系,都默认是指不同实体集,下文不再强调。

(3)示例

4.二元联系——一对多联系(1:n)

(1)一对多联系:实体集E中的每一个实体,在实体集F中有n个实体(n>=0)与之相关,则称实体集E与实体集F有一对多的联系,记作1:n。

(2)示例

5.二元联系——多对多联系(m:n)

(1)多对多联系:如果实体集E中的每个实体,在实体集F中有n个实体(n>=0)与之相关,反之,实体集F中的每个实体,在实体集E中有m个实体(m>=0)与之相关,则称实体集E和实体集F具有多对多联系,记作m:n。

(2)示例

6.三元联系

(1)三元联系:三个实体集之间的联系称为三元联系。;例如实体集Student、实体集Course和实体集School,学生实体对课程实体和学校实体,存在”学习“联系,学生A在学校B学习课程C。

(2)示例

7.三元联系转换成二元联系

(1)在实际应用中,二元联系是最常用的实体联系类型,因此更倾向于将其他联系转换成二元联系。一元联系就是一种特殊的二元联系,而多元联系转二元联系与三元联系转二元联系同理,因此主要关注三元联系转换成二元联系。

(2)转换过程

(3)示例

分析:

根据转换过程的(1),就是使用实体集【修读计划】来代替联系【学习】,并为【修读计划】建立属性【计划编号】作为标识符。

根据转换过程(2),就是新建三个联系:【选择】表示实体集【学生】和新实体集【修读计划】的联系,【包含】表示实体集【课程】和新实体集【修读计划】的联系,【制定】表示实体集【学校】和新实体集【修读计划】的联系。

根据转换过程(3),就是将原先三元联系下,不同实体集的实体间的联系,转换成二元联系的形式。

  • 逻辑设计——从E-R模型到关系模型

一.E-R实体集的转换

1.讲E-R模型转换为关系模型的基本操作是将实体集转换为关系表。

2.实现:

(1)实体集的名称——>关系表的表名

(2)实体集的属性——>关系表的属性

(3)实体集的标识符——>关系表的标识符

3.示例

二.E-R联系的转换

1.无论是几元联系,都是先将其转成二元联系,再进行转换。
2.对于二元联系——一对一联系

3.对于二元联系——一对多联系

4.对于二元联系——多对多联系

5.示例

上述例子中,针对所有的二元联系,都是采用针对联系去添加一个新的关系模式的形式。

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

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

相关文章

海外合规|新加坡网络安全认证计划简介(一)

新加坡网络安全局(CSA)为组织制定了网络安全认证计划,旨在表彰具有良好网络安全实践的组织。Cyber Essentials 标志表彰已实施网络卫生措施的组织,而 Cyber Trust 标志则是表彰具有全面网络安全措施和实践的组织的卓越标志。这些标…

【递归、回溯专题(三)】记忆化搜索题集

文章目录 1. 斐波那契数2. 不同路径2. 不同路径3. 最长递增子序列4. 猜数字大小II 1. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是&#x…

逻辑器件输出高阻态时,输出端口的电平是什么状态呢?

高阻态是逻辑器件输出端口的一种状态,当端口处于高阻态时,输入端口的电平变化不会引起输出端口变化,不会对与之相连的后级输入端口或总线产生影响,对于总线架构的电路极为重要。   输出端口处于高阻态时,输出端口处于…

什么是分段和分页?

内存管理的必要性 很早之前计算机只能运行单个进程,就算运行批处理程序,也是棑好对,一个一个的进行处理,不存在多个进程并发运行,这时候内核对于内存管理相对比较简单,直接把物理内存地址拿过来是使用即可。…

网络编程TCP和UDP

将TCP的CS模型再敲一遍 TCP服务器 1->创建原始的套接字描述符 2->将原始套接字与主机ip绑定 3->将原始套接字设置监听状态 4->接收客户端连接,获取客户端信息,因为原始套接字被用了,所以创建新的套接字描述符用于客户端通信…

2区SCI仅52天直录!9月甄选SCI/SSCI合集(含各领域)

【SciencePub学术】我处SciencePub学术2024年9月SCI/SSCI/EI/CNKI刊源表已更新!内含多本中科院TOP、CCF推荐以及进展超顺的优质期刊,最快1-2个月录用! 计算机领域重点SCI 环境地质化学领域重点SCI 生物医学领域重点SCI 数学材料物理领域重点S…

拥有这些AI绘画网站,让你轻松告别手绘时代!

在这个充满无限可能的数字世界里,AI 绘画动漫网站已经成为了许多艺术家和设计师的新宠。从手绘时代的岁月如歌,到今天科技的飞速发展,我们已经可以用AI技术创作出令人惊叹的艺术作品,打开了全新的创作空间。接下来,就让…

图形化编程011

项目描述: 点击绿旗,点击空格键,角色向上游动,松开空格键,角色向下飘落。 浮游生物碰到角色会发出声音并隐藏,碰到舞台边缘会重新出现。 30秒后程序结束 。 拆解步骤: 1、添加背景和角色以及…

如何打造一个智能化的远程在线考试系统?

远程教育与在线考试已成为提升知识传播效率和学习灵活性的重要手段。 土著刷题在线考试系统,凭借其完善的多功能考试模块,为教育机构、学校乃至企业提供了一个智能化的远程在线考试解决方案。 接下来将介绍土著刷题在线考试系统如何助力用户构建一个高效…

第L3周:机器学习-逻辑回归

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标: 逻辑回归适用于分类问题,主要用于解决二分类或多分类的问题。比如:用户购买某商品的可能性,某病人患有某…

单端输入与差分输入

单端输入: 单端输入测量的是一根导线与地之间的电压差,然后将这个差值放大以提供输出。 然而,单端输入容易受到噪声的影响,因为承载信号的导线会吸收电背景噪声。此外,单端输入上的信号还可能受到地环路的影响。 例…

鸿蒙(API 12 Beta6版)图形【NativeDisplaySoloist开发指导】方舟2D图形服务

如果开发者想在独立线程中进行帧率控制的Native侧业务,可以通过DisplaySoloist来实现,如游戏、自绘制UI框架对接等场景。 开发者可以选择多个DisplaySoloist实例共享一个线程,也可以选择每个DisplaySoloist实例独占一个线程。 接口说明 函…

【MySQL00】【 杂七杂八】

文章目录 一、前言二、MySQL 文件1. 参数文件2. 日志文件3. 套接字文件4. pid 文件5. 表结构定义文件6. InnoDB 存储引擎文件 二、BTree 索引排序三、InnoDB 关键特性1. 插入缓冲1.1 Insert Buffer 和 Change Buffer1.1 缓冲合并 2. 两次写2. 自适应哈希索引3. 异步IO4. 刷新邻…

宝藏!《联盟现代控制特训班题库》(麒麟篇) 讲义部分:甄选内容

本文内容,全部选自自动化考研联盟的:初试《现代控制特性班题库》(麒麟篇),分为讲义和习题两个部分,本文为讲义部分的甄选内容,一本书帮你学透现控。 目录 Part1:资料封面&目录 讲义部分目录 Part2&…

为什么很多人都还用着Win10 而不投向Win11的怀抱?

前言 自从Windows 11发布(2021年6月)不知不觉已经过去了3年了。在这三年期间,Windows 11经历了几个大版本的更新。 Windows 10从正式发布开始(2015年7月)至现在已经有9年的历史。而Windows 10的最后一个版本22H2即将在…

2024年河南省成人高考报名指南

2024年河南省成人高考报名指南 河南省成人高考预计9月初g网报名,一般一周时间结束,预计到9月中旬报名截止‼不清楚报名流程同学看过来,今天老师给大家详细介绍一下! 想参加河南成人高考需要什么条件,具体的报名流程是什…

AD19基础应用技巧:捕捉对象功能的讲解鼠标”绿色十字”大光标、小光标切换

AD PCB 中心点捕捉功能: 线段、圆、边框中心点捕捉。 有时候不想要鼠标自动捕捉中心点怎么办? 关于Altium Designer 20 的捕抓功能的讲解(https://blog.csdn.net/weixin_44599693/article/details/126177841) ——- AD PCB画板…

基于VsCode和Git的代码版本管理

基础回退 在项目文件夹右键打开git bash,输入命令git log 查看提交的历史 commit,git log --prettyoneline将版本信息压缩到一行 使用git log可能会显示不全,按enter逐行查看,按end跳至末尾查看完成后,按q即可退出 …

湖南省工业废水高氯酸盐排放新标准解析与技术应对策略

随着工业化进程的加快,环境污染问题变得尤为突出。特别是在某些特定行业产生的污染物,如高氯酸盐,因其对环境和人体健康的潜在危害,越来越受到关注。为了解决这一问题,湖南省生态环境厅与省市场监督管理局联合制定了《…

AN7536PT时钟电路

目录 1 时钟电路概述2 时钟晶振电路2.1 需求分析2.2 晶振选型(Datasheet表5-7解读)2.3 设计晶振电路(表4-1、图5-4) 1 时钟电路概述 时钟电路是一种用于产生稳定、周期性脉冲信号的电子电路。它通常由晶体振荡器和相关逻辑电路组…