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

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加密。

关系模式增加"爱好"属性,即:学生基本信息(学号、姓名、年龄、性别,院系、专业,爱好)

"宿舍部":不关心学生的"爱好",外模式"宿舍部"不需要变化;

院部需要了解学生的"爱好",数据库管理员调整"院部"的外模式,添加"爱好"属性,即:院部(学号,姓名,院系、专业,爱好)

相关推荐
指尖上跳动的旋律1 小时前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
一勺菠萝丶1 小时前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker
m0_748244832 小时前
StarRocks 排查单副本表
大数据·数据库·python
C++忠实粉丝2 小时前
Redis 介绍和安装
数据库·redis·缓存
wmd131643067122 小时前
将微信配置信息存到数据库并进行调用
数据库·微信
是阿建吖!3 小时前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
凡人的AI工具箱3 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
ClouGence3 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存
m0_748236583 小时前
《Web 应用项目开发:从构思到上线的全过程》
服务器·前端·数据库
苏三说技术3 小时前
Redis 性能优化的18招
数据库·redis·性能优化