数据库原理及应用·数据库系统结构

2.1 数据模型的概念

2.1.1 什么是数据模型

数据模型(Data Model) 是对现实世界数据特征的模拟和抽象,用来描述数据是如何组织、存储和操作的。

数据模型应满足如下三个条件:
能比较真实地模拟现实世界
容易为人所理解
便于在计算机上实现

2.1.2 数据模型的分类

2.1.3 数据模型的组成要素

举例:
学生信息(2017010101,李光明,男,19,计算机科学学院,软件工程)
数据结构:其描述的是学生的特征信息,即学生数据的基本结构;
数据操作:主要包括对学生信息的查询、修改、删除数据;
数据的完整性约束:其中的性别信息只能是男或女,年龄一般是在15到40岁之间,这实际就是对性别和年龄的一种约束。

2.2 概念模型——信息世界

2.2.1  信息世界中的基本概念

实体(Entity):
客观存在并可相互区别的事物称为实体。
可以是具体的人、事、物或抽象的概念,如:张三、汽车、运动、兴趣……
属性(Attribute):实体所具有的某一特性称为属性。
(Key):唯一标识实体的属性集称为码。
(Domain):属性的取值范围称为该属性的域。
实体集(Entity Set): 同一类型实体的集合称为实体集。
实体型(Entity Type):用实体名及其属性名集合来抽象和刻画同类实体。

学生实体型:学生(学号,姓名,性别,院系,专业)
实体:学生
属性:学号、姓名、性别、院系;
专业码:学号
性别的域: 男,女

教师实体型: 教师(工号,姓名,性别,院系)
实体:教师
属性:工号、姓名、性别、院系
码:工号
性别的域: 男,女

全体学生是一个实体集

全体教师是一个实体集 

学生和教师之间的联系:选课

2.2.2 实体型之间的联系

联系(Relationship):现实世界中事物内部以及事物之间的联系,在信息世界中反映为实体内部的联系和实体之间的联系。

实体内部的联系通常是指组成实体的各属性之间的联系 实体之间的联系通常是指不同实体集之间的联系。

联系分为: 一对一(1:1) 一对多(1:n) 多对多(m:n)

一对一联系(1:1):如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1。

一对多联系(1:n):如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。

多对多联系(m:n):如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体B具有多对多联系,记为m:n。

2.3 概念模型的E-R表示法

2.3.1 概述

E-R方法(实体-联系法)是P.P.S.Chen于1976年提出的,是目前最常用的概念模型描述方法

E-R方法使用的工具称为E-R图,E-R方法描述的结果也称为E-R模型。

2.3.2 E-R图

实体:用矩形表示,矩形框内写明实体名。

属性:用椭圆形表示,并用无向边将其与相应的实体连接起来

联系
联系本身:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)

联系的属性:联系本身也是一种实体型,也可以有属性。

2.3.3 两个以上实体间的联系

课程、教师与参考书三个实体型:
如果一门课程可以由若干个教师讲授,且使用若干本参考书
而每一个教师可以讲授多门课程
一本参考书可以供多门课程使用

供应商、项目、零件三个实体型:

一个供应商可以供给多个项目多种零件

每个项目可以使用多个供应商供应的零件

每种零件可由不同供应商供给

2.3.4 单个实体型内的联系

职工实体型内部具有领导与被领导的联系
即某一职工(干部)“领导”若干名职工,而一个职工仅被一个职工(干部)直接领导

2.4 概念模型实例分析

案例:实现一个简单的学生选课系统,只涉及对学生、教师、课程的管理。用E-R图表示“学生选课系统”的概念模型。
说明:此系统要求能够记录学生的选课情况、教授的授课情况以及学生、课程、教师的基本信息。 业务需求:
一个教师可以教授多名学生,每个学生可以选修多个教师的课程
一个学生可以选择多门课程,一门课程可以对多个学生开放,且学生选修一门课程就会有一个成绩。
教师与课程:一个教师可以教授多门课程,一门课程同时也可以被多名教师教授。

分析确定实体的基本信息:
学生基本信息:学号、姓名、性别、专业、院系、电话、EMAIL
教师基本信息:工号、姓名、性别、职称、院系、年龄、电话、EMAIL
课程基本信息:课程号,课程名,学分,课程性质

2.5 逻辑模型

2.5.1 逻辑模型概述

逻辑模型(Logical Data Model):从数据的组织方式来描述数据,即用什么样的数据结构来组织数据。

概念数据模型必须转换成逻辑模型,才能在DBMS中实现,因此逻辑模型既要面向用户,又要面向系统

非关系模型:层次模型和网状模型在20世纪70—80年代初非常流行,在数据库系统的初期起了重要作用

关系模型(Relational Data Model):
以严格的数学理论为基础:谓词逻辑(predicate logic)、集合论(set theory)
目前主流的数据库系统都是基于“关系模型”

面向对象模型:目前数据库技术的研究方向

2.5.2 关系模型的基本概念

1970年,IBM的研究员E.F.Codd博士发表《大型共享数据银行的关系模型》一文,提出了关系模型的概念,奠定了关系数据库的基础。关系数据库系统采用关系模型作为数据的组织方式。 目前,计算机厂商新推出的数据库管理系统几乎都支持关系模型。

关系(Relation):一个关系对应通常说的一张表
元组(Tuple):表中的一行即为一个元组
属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名
关系模式:对关系的描述,例如:关系名(属性1,属性2,…,属性n)

 用关系模式描述学生、课程、学生与课程之间的多对多联系。

学生(学号,姓名,性别,院系,专业,年龄,电话,EMAIL)
课程(课程号,课程名,学分,课程性质)
选课(学号,课程号,成绩)

2.6 数据库系统的三级模式

2.6.1 数据库系统的三级模式结构

1975年,ANSI/SPARC(美国国家标准协会/标准规划和需求委员会)提出数据库的三级模式结构/

2.6.2 概念模式

概念模式:
数据库中全体数据的逻辑结构和特征的描述
所有用户的公共数据视图,综合了所有用户的需求

一个数据库只有一个模式

2.6.3 外模式

外模式:数据库用户(包括应用程序员和最终用户)看见和使用的局部数据的逻辑结构和特征描述。

一个数据库可以有多个外模式

外模式是保证数据库安全性的一个有力措施。

2.6.4 内模式(存储模式)

是数据物理结构和存储方式的描述

是数据在数据库内部的表示方式:
记录的存储方式(顺序存储,按照B树结构存储, 按hash方法存储)
索引的组织方式
数据是否压缩存储
数据是否加密
数据存储记录结构的规定

一个数据库只有一个内模式

对于下表的学生基本信息,分配宿舍的部门关心的属性可能是:学号、姓名和性别,学院教学管理人员关心的属性可能是学号、姓名、院系、专业,设计该数据库的三级模式。

根据用户需求,该数据库可以分别为两类用户建立外模式:

宿舍部(学号,姓名,性别)

院部(学号,姓名,院系、专业)

概念模式

内模式:顺序存储、数据不压缩存储,MD5加密。

2.7 数据库的二级映像与数据独立性

2.7.1 概述

为了能够在数据库系统内部实现三级模式的联系和转换,数据库管理系统在三个模式之间提供了两级映像。

2.7.2 外模式/概念模式映像

外模式/概念模式映象
模式:描述的是数据的全局逻辑结构
外模式:描述的是数据的局部逻辑结构
每一个外模式,数据库系统都有一个外模式/模式映象。外模式/模式映象定义了该外模式与概念模式之间的对应关系。映象定义通常包含在各自外模式的描述中。
保证数据的逻辑独立性。

概念模式/内模式映象
定义了数据全局逻辑结构与存储结构之间的对应关系。如,说明逻辑记录和字段在内部是如何表示的。数据库中模式/内模式映象是唯一的。该映象定义通常包含在模式描述中。
保证数据的物理独立性。

对于下标的学生基本信息,分配宿舍的部门关心的属性可能是:学号、姓名和性别,学院教学管理人员关心的属性可能是学号、姓名、院系、专业。

外模式
根据用户需求,该数据库可以分别为两类用户建立外模式:
宿舍部(学号,姓名,性别)
院部(学号,姓名,院系、专业)


概念模式

内模式

顺序存储、数据不压缩存储,MD5加密。

关系模式增加“爱好”属性,即:学生基本信息(学号、姓名、年龄、性别,院系、专业,爱好)
“宿舍部”:不关心学生的“爱好”,外模式“宿舍部”不需要变化;
院部需要了解学生的“爱好”,数据库管理员调整“院部”的外模式,添加“爱好”属性,即:院部(学号,姓名,院系、专业,爱好)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis的ORM映射

目录 什么是ORM 一,列的别名 二,结果映射 三,总结 什么是ORM ORM:对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简…

图片抠图怎么抠?教你这几个方法抠图方法

图片抠图怎么抠?在数字化时代,图片抠图已经成为日常工作中不可或缺的一项任务。通过对图片的抠图处理,我们可以将图片中的某个元素提取出来,或者将图片背景更换,达到更好的视觉效果。那么图片抠图怎么抠?下…

基于ssm校园交友网站设计与实现(源码齐全可用)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题,今天给大家介绍…

YOLOv5改进 | 卷积篇 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)

一、本文介绍 本文给大家带来的改进机制是RFAConv,全称为Receptive-Field Attention Convolution,是一种全新的空间注意力机制。与传统的空间注意力方法相比,RFAConv能够更有效地处理图像中的细节和复杂模式(适用于所有的检测对象都有一定的…

Kafka--Kafka日志索引详解以及生产常见问题分析与总结

一、Kafka的Log日志梳理 ​ 这一部分数据主要包含当前Broker节点的消息数据(在Kafka中称为Log日志)。这是一部分无状态的数据,也就是说每个Kafka的Broker节点都是以相同的逻辑运行。这种无状态的服务设计让Kafka集群能够比较容易的进行水平扩展。比如你需要用一个新…

猫目标检测数据集VOC+YOLO格式11000张

猫是一种非常受欢迎的宠物,它们有着柔软的毛发、敏捷的身体和灵活的尾巴。猫是一种非常独立的动物,也是一种非常聪明和好奇的动物。 猫是一种肉食性动物,主要以小型哺乳动物、鸟类和昆虫为食。它们通常在夜间活动,利用敏锐的听觉…

CodeBlocks配置WinLibs

一、准备工作 1、去Code::Blocks - Browse /Binaries/Nightlies at SourceForge.net下载CodeBlocks最新的nightly build版本,并下载wxWidget dll和Mingw64 dll库文件。 我下载的CB 13411 ,Mingw64dlls13.1.0.7z,wxmsw32u_gcc_cb_wx324_2D_g…

三大主流前端框架介绍及选型

在前端项目中,可以借助某些框架(如React、Vue、Angular等)来实现组件化开发,使代码更容易复用。此时,一个网页不再是由一个个独立的HTML、CSS和JavaScript文件组成,而是按照组件的思想将网页划分成一个个组…

mysql原理--连接的原理

1.连接简介 1.1.连接的本质 为了故事的顺利发展,我们先建立两个简单的表并给它们填充一点数据: mysql> CREATE TABLE t1 (m1 int, n1 char(1)); mysql> CREATE TABLE t2 (m2 int, n2 char(1)); mysql> INSERT INTO t1 VALUES(1, a), (2, b), (…

内衣洗衣机哪个牌子好用?十款小型洗衣机质量排名

最近这两年在洗衣机中火出圈的内衣洗衣机,它不仅可以清洁我们较难清洗的衣物,自带除菌功能,可以让衣物上的细菌,还能在清洗的过程中呵护我们衣物的面料,虽然说它是内衣洗衣机,它的功能不止可以清洗内衣&…

2024最新最全【JVM进阶】教程,零基础入门到精通

目录 1.栈1-1.栈帧1-2.栈帧的组成 2.堆2-1.对象的组成 3.本地方法栈4.程序计数器5.方法区<font color"red">如<font color"orange">果<font color"#FFEB05">你<font color"green">也<font color"skyb…

Android应用-Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

文章目录 Dismissible 简介使用场景常用属性基本用法举例注意事项 Dismissible 简介 Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时&#xff0c;提供一种简便的实现方式。 使…

【flink番外篇】5、flink的window(介绍、分类、函数及Tumbling、Sliding、session窗口应用)介绍及示例 - 完整版

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

文件的基本管理

目录 一、Linux系统目录结构和相对/绝对路径 &#xff08;一&#xff09;系统目录结构 &#xff08;二&#xff09;相对路径和绝对路径 1.绝对路径 2.相对路径 &#xff08;三&#xff09;通配符的作用 二、创建、复制、删除文件&#xff0c;rm -rf /意外事故 &#xf…

2022年智能算法之凌日搜索算法(TS),原理公式详解,附matlab代码

凌日搜索算法&#xff08;Transit Search&#xff0c;TS&#xff09;是一种新型元启发式优化算法&#xff0c;该算法基于著名的系外行星探测方法&#xff0c;具有寻优能力强、进化能力强、搜索速度快的特点。该成果于2022年发表在知名SCI期刊Results in Control and Optimizati…

最强的AI视频去码图片修复模型:CodeFormer

1 CodeFormer介绍 1.1 CodeFormer解决的问题 CodeFormer是由南洋理工大学-商汤科技联合研究中心S-Lab在NeurIPS 2022上提出的一种基于VQGANTransformer的人脸复原模型。该方法基于预训练VQGAN离散码本空间&#xff0c;改变复原任务的固有范式&#xff0c;将人脸复原任务转成C…

Zookeeper-集群架构

Zookeeper集群架构 集群角色 Leader&#xff1a; 领导者 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保证集群事务处理的顺序性&#xff1b;集群内部各个服务器的调度者。对于create、setData、delete等有写操作的请求&#xff0c;则要统一转发…

Leetcode—46.全排列【中等】

2023每日刷题&#xff08;六十六&#xff09; Leetcode—46.全排列 算法思想 对于排列来说&#xff0c;我们需要考虑数字之间的相对顺序&#xff0c;不同的相对顺序会产生不同的排列方式。此外&#xff0c;序列中的每个数字一定存在于每个排列当中。因此&#xff0c;不能依次…

【学习笔记】Java函数式编程02——Stream流

文章目录 三、Stream流3.1 概述3.2 快速入门3.2.1 数据准备3.2.2 场景练习3.2.2.1 场景一、遍历所有作家并打印:star:使用stream()流的forEach方法 3.2.2.2 场景二、打印所以年龄小于18的作家名字&#xff0c;并且注意去重:star:distinct()方法:star:filter()方法 3.2.2.3 场景…

【数据结构和算法】定长子串中元音的最大数目

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 方法二&#xff1a;滑动窗口优化版 三、代码 3.1 方法一&#xf…