数据库系统第一章 绪论
第一章 绪论
(一) 数据库系统概述
1. 基本概念
(1) 数据(Data)
数据是数据库中存储的基本对象。
【定义】描述事物的符号记录称为数据。描述事物的符号可以是数字,也可以是文字、图形、图像、声音、语言等,数据有多种表现形式,它们都可以经过数字化后存入计算机,
(2) 数据库(DB)
① 定义
数据库(Database,简称DB)是长期储存
在计算机内
、有组织
、可共享
的大量数据
的集合
。
- 这里讲的数据库都是指计算机内的数据库
- 有组织:数据的结构,存储都是有组织的,存储到哪都是由规矩的
② 基本特征
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
(3) 数据库管理系统(DBMS)
① 定义
DBMS是位于用户与操作系统之间的一层数据管理软件
。是基础软件,是一个大型复杂的软件系统
② 用途
科学地组织和存储数据、高效地获取和维护数据
③ 主要功能
a. 数据定义功能
DBMS提供数据定义语言(Data Definition Language,DDL)用户通过它可以方便地对数据库中的数据对象进行定义。
DDL就是定义数据的,与插入数据有区别
b. 数据组织、存储和管理
DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等。
- 分类组织、存储和管理各种数据
- 确定组织数据的文件结构和存取方式
- 实现数据之间的联系
- 提供多种存取方法提高存取效率
c. 数据操纵功能
DBMS提供数据操纵语言(Data ManipulationLanguage,DML),用户可以使用DML操纵数据,实现对数据库的基本操作,如查询、插入、删除和修改等。
d. 数据库的事务管理和运行管理
数据库在建立、运行和维护时由DBMS统一管理和控制保证数据的安全性、完整性、多用户对数据的并发使用发生故障后的系统恢复。
- 安全性:比如不同用户设置不同的权限
- 完整性:数据要满足特定条件
e. 数据库的建立和维护功能(实用程序)
- 数据库初始数据装载转换
- 数据库转储
- 介质故障恢复
- 数据库的重组织
- 性能监视分析等
(4) 数据库系统(DBS)
① 构成
在计算机系统中引入数据库后的系统构成
有几部分构成:
- 数据库 Database
- 数据库管理系统(及其开发工具)Database Management System
- 应用系统
- 数据库管理员 Database Administrator
- 应用系统在底层是要调用数据库管理系统的
- DBMS底层是调用操作系统来管理数据库的
- 数据库是存在硬盘上的信息,由操作系统控制
- 数据库管理员操作DBMS和数据库的,但是应用软件不管他的事情,这是程序员开发的
DBS在整个计算机系统中的地位如下
② 特点
a. 数据结构化
整体数据的结构化
是数据库的主要特征之一整体结构化
- 不再仅仅针对某一个应用,而是面向全组织
- 不仅数据内部结构化,整体是结构化的,数据之间具有联系
数据库中实现的是数据的真正结构化
- 数据的结构用
数据模型
描述,无需程序定义和解释 - 数据可以
变长
- 数据的最小存取单位是
数据项
- 数据的结构用
b. 数据的共享性高,冗余度低,易扩充
- 数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户、多个应用共享使用。
- 数据共享的好处
- 减少数据冗余,节约存储空间
- 避免数据之间的不相容性与不一致性
- 使系统易于扩充
c. 数据独立性高
-
物理独立性
指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。
-
逻辑独立性
指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。
同样的,即使用户程序改变了,数据也不会改变
-
数据独立性是由DBMS的二级映像功能来保证的
d. 数据由DBMS统一管理和控制
DBMS提供的数据控制功能
- 数据的安全性(Security)保护·
保护数据,以防止不合法的使用造成的数据的泄密和破坏。 - 数据的完整性(Integrity)检查
将数据控制在有效的范围内,或保证数据之间满足一定的关系。 - 并发(Concurrency)控制
对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。 - 数据库恢复(Recovery)
将数据库从错误状态恢复到某一已知的正确状态。
e. 应用程序与数据的对应关系(数据库系统)
多个应用程序底层都是操纵的数据库管理系统
2. 数据管理技术的产生和发展
数据库的发展是跟随者计算机的发展的,由于计算机的发展才有了数据库的发展
数据管理技术经历了人工管理、文件系统、数据库系统3个阶段。
(1) 人工管理阶段
① 特点
人工管理数据具有如下特点:
-
数据不保存
早期的计算机是将数据写到纸带上的,用打孔表示01,这样无法存储数据
-
应用程序管理数据
数据与程序绑定,比如程序中的变量,程序改变,数据也改变,程序没了,数据也没了
-
数据不共享
与第2点同理
-
数据不具有独立性
与第二点同理
② 缺点
缺点:数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改,这就加重了程序员的负担。
(2) 文件系统阶段
计算机已经有了操作系统以及文件管理系统等出现的
文件系统,就相当于存储的word,txt文件,数据都存到这些文件中,用的时候读取文件
① 特点
用文件系统管理数据具有如下特点
- 数据可以长期保存;
- 由文件系统管理数据
② 缺点
-
数据共享性差,冗余度大
一个程序运行要读取一个文件,多个程序就可能需要多个文件,因为这个程序需要的数据可能在其他文件中没有;
同时多个文件可能存储着相同的数据
-
数据独立性差
一些数据都绑定在了一个文件中,数据与程序绑定在一起
(3) 数据库系统阶段
用数据库系统管理数据具有如下特点
-
数据结构化
-
数据的共享性高,冗余度低,易扩充
-
数据独立性高
数据不与程序相绑定
-
数据由DBMS统一管理和控制
(二) 数据模型
介绍
(1) 概念
在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
通俗地讲数据模型就是现实世界的模拟
。
(2) 数据模型满足的要求
- 能比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现
1. 两大类数据模型
(1) 概念模型
也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。
(2) 逻辑(数据)模型和物理模型
-
逻辑模型
主要包括网状模型、层次模型、关系模型、面向对象模型等,按计算机系统的观点对数据建模,用于DBMS实现。我们现在主流使用的就是关系模型,就是一个二维的关系表,后面提到的“关系”就是指这种二维关系表
这个主要就是DBMS的模型了
逻辑模型也是数据模型
-
物理模型
是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。物理模型就是实际在计算机的存储,由DBMS来管理存储
(3) 客观对象的抽象过程—两步抽象
- 现实世界中的客观对象抽象为概念模型;
- 把概念模型转换为某一DBMS支持的数据模型。
2. 数据模型的组成要素
(1)数据结构
数据结构是所研究的对象类型的集合。这些对象是数据库的组成成分,数据结构指对象和对象间联系的表达和实现,是对系统静态特征的描述,包括两个方面:
- 数据本身:类型、内容、性质。例如关系模型中的域、属性、关系等。
- 数据之间的联系:数据之间是如何相互关联的,例如关系模型中的主码、外码联系等。
(2)数据操作
-
数据操作
对数据库中各种对象的实例(值)允许执行的操作,及有关的操作规则
-
数据操作的类型
查询
更新(包括插入、删除、修改)
(3)数据的完整性约束条件
- 数据的完整性约束条件是一组完整性规则的集合,规定数据库状态及状态变化所应满足的条件,以保证数据的正确性、有效性和相容性。
完整性规则:给定的数据模型中数据及其联系所具有的制约和储存规则
3. 概念模型
这节主要讲概念模型,是将实体抽象为信息世界的过程
(1) 用途与基本要求
概念模型的用途:
-
概念模型用于信息世界的建模
-
是现实世界到机器世界的一个中间层次
概念模型已经是信息世界的模型了,不是真实的物体了
-
是数据库设计的有力工具
-
数据库设计人员和用户之间进行交流的语言
对概念模型的基本要求:
- 较强的语义表达能力
- 能够方便、直接地表达应用中的各种语义知识
- 简单、清晰、易于用户理解
(2) 信息世界中的基本概念
① 实体(Entity)
客观存在并可相互区别的事物称为实体。
可以是具体的人、事、物或抽象的概念。
比如说一个学生,一门课程
② 属性(Attribute)
实体所具有的某一特性称为属性。
一个实体可以由若干个属性来刻画。
比如说学生的学号,身高,年龄等
③ 码(Key)
唯一标识实体的属性集称为码。
比如说学生的学号,可以唯一表示这个学生
④ 域(Domain)
属性的取值范围称为该属性的域。
比如说学生的性别只能为(男,女),学号是8位的数字等
域就可以说成是取值范围
⑤ 实体型(Entity Type)
用实体名及其属性名集合来抽象和刻画同类实体称为实体型
就是将实体抽象得来的
比如说学生们都有学号,身高,体重等
实体型就为 学生(学号,身高,体重,年龄,性别)
⑥ 实体集(Entity Set)
同一类型实体的集合称为实体集
比如说全体学生
⑦ 联系(Relationship)
- 现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。
- 实体内部的联系通常是指组成实体的各属性之间的联系
- 实体之间的联系通常是指不同实体集之间的联系
(3) 实体型的联系
实体型之间的联系都是概念模型的范畴
① 两个实体型之间的联系
a. 一对一联系(1:1)
如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然。则称实体集A与实体集B具有一对一联系,记为1:1
比如说一个班只有一个班长,一个班长对应一个班
b. 一对多联系(1:n)
如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n
比如说一个班对应一班学生,多位学生对应一个班
c. 多对多联系(m:n)
如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体B具有多对多联系,记为m:n
比如说一个学生可以选修多门课,多门课可以供多名学生选修
② 两个以上实体型之间的联系
a. 一对多联系(1:m||1:n)
- 若实体集E1,E2,…,En存在联系,对于实体集Ej(j=1,2,…,i-1,i+1,…,n)中的给定实体,最多只和Ei中的一个实体相联系,则我们说Ei与E1E2,…,Ei-1,Ei+1,…,En之间的联系是一对多的。
【例】对于课程、教师与参考书3个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多的。
b. 一对一联系(1:1:1)
- 一个独生子女只有一个父亲,一个母亲
- 一个父亲也只有一个独生子女
- 一个母亲也只有一个独生子女
c. 多对多联系(m:n:p)
【例】有3个实体型:供应商、项目、零件,一个供应商可以供给多个项目多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,由此看出供应商、项目、零件
三者之间是多对多的联系。
③ 单个实体型之间的联系
a. 一对多联系(1:n)
职工实体型内部具有领导与被领导的联系
- 某一职工(干部)“领导”若干名职工
- 一个职工仅被另外一个职工直接领导
这是一对多的联系
b. 一对一联系(1:1)
- 身份证可以唯一确认一个人的身份,人与身份证有确认和被确认的关系
- 一个身份证唯一确定一个人
- 一个人也唯一确认一个身份证
c. 多对多联系 (m:n)
- 饮料和厂商之间有
制造和被制造
的关系 - 多个饮料可以被多个厂商制造
- 多个厂商可以制造出多种饮料
(4) 实体-联系图(E-R图)
这是用来表示概念模型的一种方式
- E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体型、属性和联系的方法,用E-R图来描述现实世界的概念模型
- E-R方法也称为E-R模型
ER图是用来描述概念模型的方式
① 表示方式
实体型:用矩形表示,矩形框内写明实体名。
属性:用椭圆形表示,并用无向边将其与相应的实体连接起来
联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)
【注意】如果一个联系具有属性,则这些属性也要用无向线该联系连接起来。
例子:如果用“供应量”来描述联系“供应”的属性,表示某
供应商供应了多少数量的零件给某个项目。那么这3个实休及其之间联系的E-R图如下。
可以看到,联系也是有属性的
② 案例
用E-R图来表示某个工厂物资管理的概念模型。物资管理涉及的实体有:
- 仓库属性有仓库号、面积、电话号码;
- 零件属性有零件号、名称、规格、描述;
- 供应商属性有供应商号、姓名、申话号码、账号、
- 项目属性有项目号、预算、开工白期;
- 职工属性有职工号、姓名、年龄、职称。
联系:
- 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,因此仓库和零件具有多对多的联系,用库存量来表示零件在某个仓库中的数量。
- 一个仓库有多个职工当仓库保管员,一个职个仓库工作,因此仓库和职工之间是一对多的联系。
- 职工之间具有领导-被领导关系。即仓库主任领导若管员,因此职工实体集中具有一对多的联系。
- 供应商、项目和零件三者之间具有多对多的联系。1个供应商可以供给若干项目多种零件,每个项目可以使用不同商供应的零件,每种零件可由不同供应商供给。
实体型E-R图
实体和联系的ER图
在画联系的ER图的时候,不需要写属性,否则会太乱。
可以看到联系也是有属性的
完整的ER图
最终画出完整的ER图
4. 数据/逻辑模型
概念模型将实体抽象为模型,现在数据模型就是将抽象的模型转化为数据库的模型
目前,数据库领域中最常用的逻辑数据模型有:层次模型、网状模型、关系模型、面向对象模型、对象关系模型。
关系模型比较重要,下一节讲,这一节是非关系模型
(1) 层次模型(Hierarchical Model)
- 层次模型是数据库系统中最早出现的数据模型
- 层次数据库系统的典型代表是IBM公司的IMS(Information Management System)数据库管理系统
- 层次模型用树形结构来表示各类实体以及实体间的联系
① 数据结构
满足下面两个条件的基本层次联系的集合为层次模型
- 有且只有一个结点没有双亲结点,这个结点称为根结点
- 根以外的其它结点有且只有一个双亲结点
层次模型中的几个术语:根结点,双亲结点,兄弟结点,叶结点
② 特点
- 结点的双亲是唯一的
- 只能直接处理一对多的实体联系,一个父节点下面对应多个子节点,多个子节点对应一个父节点
- 每个记录类型可以定义一个排序字段,也称为·码字段
- 任何记录值只有按其路径查看时,才能显出它的全部意义
- 没有一个子女记录值能够脱离双亲记录值而独立存在
③ 多对多联系在层次模型中的表示
方法:
- 将多对多联系分解成一对多联系
分解方法:
- 冗余结点法
- 虚拟结点法
④ 数据操纵与完整性约束
层次模型的数据操纵:
- 查询
- 插入
- 删除
- 更新
层次模型的完整性约束条件:
- 无相应的双亲结点值就不能插入子女结点值
- 如果
删除双亲
结点值,则相应的子女结点
值也被同时删除
- 更新操作时,应更新所有相应记录,以保证数据的一致性
⑤ 存储结构
按照层次树前序遍历(T-L-R)
的顺序把所有记录值依次邻接存放,即通过物理空间的位置相邻来实现层次顺序。又可分为:子女-兄弟链接法
和层次序列链接法
。
a. 子女-兄弟链接法
- 每个记录设两类指针,分别指向
最左边的子女
(每个记录型对应一个)和最近的兄弟
b. 层次序列链接法
- 按树的
前序穿越顺序
链接各记录值
⑥ 优缺点
- 优点:
- 层次模型的数据
结构
比较简单`清晰`` 查询效率高,性能优于关系模型,不低于网状模型
- 层次数据模型提供了良好的完整性支持
- 层次模型的数据
- 缺点:
- 多对多联系表示不自然
- 对
插入
和删除
操作的限制多
,应用程序
的编写
比较复杂
- 查询子女结点必须通过双亲结点
- 由于结构严密,层次命令趋于程序化
(2) 网状模型(Network Model)
网状数据库系统采用网状模型
作为数据的组织方式
-
典型代表是DBTG系统:
亦称CODASYL系统
70年代由DBTG提出的一个系统方案
奠定了数据库系统的基本概念、方法和技术
-
实际系统:
Cullinet Software Inc.公司的 IDMS
Univac公司的 DMS1100
Honeywell公司的IDS/2
HP公司的IMAGE
① 数据结构
a. 网状模型:
满足下面两个条件的基本层次联系的集合:
- 允许一个以上的结点无双亲;
- 一个结点可以有多于一个的双亲。
b. 表示方法(与层次数据模型相同):
-
实体型:用记录类型描述
每个结点表示一个记录类型(实体)
-
属性:用字段描述
每个记录类型可包含若干个字段
-
联系:用结点之间的连线表示记录类型(实体)之
间的一对多的父子联系
c. 网状模型与层次模型的区别:
- 网状模型允许多个结点没有双亲结点
- 网状模型允许结点有多个双亲结点
- 网状模型允许两个结点之间有多种联系(复合联系)
- 网状模型可以更直接地去描述现实世界
- 层次模型实际上是网状模型的一个特例
网状模型中子女结点与双亲结点的联系可以不唯一 要为
每个联系命名,并指出与
该联系有关的
双亲记录和
子女记录
d. 多对多联系在网状模型中的表示:
方法:将多对多
联系直接分解成一对多
联系
例如
:一个学生可以选修若干门课程,·某一课程可以被多个学生选修,学生与课程之间是多对多联系 ·
- 引进一个学生选课的联结记录,由3个数据项组成
学号、课程号、成绩,表示某个学生选修某一门课程及其成绩
就是将学生与课程的练习提取出来,形成一对多的关系
② 网状数据模型的操纵与完整性约束
网状数据库系统(如DBTG)对数据操纵加 了一些限制,提供了一定的完整性约束
码
:唯一标识记录的数据项的集合- 一个联系中
双亲记录
与子女记录
之间是一对多
联系 - 支持双亲记录和子女记录之间某些约束条件
③ 存储结构
关键:
- 实现记录之间的联系
这就是网状结构能存储多对多关系的原因
常用方法:
- 单向链接
- 双向链接
- 环状链接
- 向首链接
中间的就是关系
④ 优缺点
- 优点
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲;
- 具有良好的性能,存取效率较高;
- 缺点
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握;
- DDL、DML语言复杂,用户不容易使用;
(3) 关系模型
数据结构
在用户观点下,关系模型中数据的逻辑结构
是一张二维表
,它由行
和列
组成。
名词 | 解释 |
---|---|
关系(Relation) | 一个关系对应通常说的一张表 |
元组(Tuple) | 表中的一行即为一个元组 |
属性(Attribute) | 表中的一列即为一个属性,给每一个属性起一个名称即属性名 |
主码/码(Key) | 表中的某个属性组,它可以唯一确定一个元组。 |
域(Domain) | 属性的取值范围 |
分量 | 元组中的一个属性值(所以属性的专业术语就是分量) |
关系模式 | 对关系的描述,一般表示为:关系名(属性1,属性2,…,属性n)。 比如 学生(学号,姓名,年龄,性别,系,年级) |
举例:
- 例1
学生、系、系与学生之间的·一对多联系:
学生(学号,姓名,年龄,性别,系号,年级)
系 (系号,系名,办公地点) - 例2
系、系主任、系与系主任间的一对一联系 - 例3
学生、课程、学生与课程之间的多对多联系:
学生(学号,姓名,年龄,性别,系号,年级)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
表示多对多的关系:
实体型可以用二维表表示
实体集之间的关系也可以用二维表表示
这个关系的两个分量要分别来自两个实体型
比如 选修 的学号与课程号分别来自学生与课程
关系数据模型的操纵与完整性约束
关系数据模型的操作主要包括查询、插入、删除和更新数据。这些操作必须满足关系的完整性约束条件。
完整性约束包括三大类:
-
实体完整性
实体之间必须要有能标识每个实体的属性,比如学生的学号可以表示一位学生。
不能一个属性会指向多个实体
-
参照完整性
一个关系的属性要参照另一个关系的属性,比如说选修中的学号参照的是学生的学号;
这个是为了保证实体之间的关系,外键就是保证这个的
-
用户定义的完整性。
用户定义属性的时候要满足域,比如定义性别只能有两种
优点
-
关系模型与格式化模型不同,它是建立在严格的数学概念的基础上的。
-
关系模型的概念单一。
原来是以二维表的形式存储的,实际操作的时候也是操作的二维表
-
关系模型的存取路径对用户透明(只用管取,不用管存到哪里),从而具有更高的数据独立性、更好的安全保密性也简化了程序员的工作和数据库开发建立的工作。
(4) 其他模型
面向对象数据模型
将语义数据模型和面向对象程序设计方法结合起来,用面向对象观点来描述现实世界实体(对象)的逻辑组织、对象间限制、联系等的模型。
一系列面向对象核心概念构成了面向对象数据模型( Object Oriented Data Model, 00模型)的基础,主要包括以下一些概念:
- 现实世界中的任何事物都被建模为对象。每个对象具有一个唯一的对象标识
(OID)。 - 对象是其状态和行为的封装,其中状态是对象属性值的集合,行为是变更对象状
态的方法集合。 - 具有相同属性和方法的对象的全体构成了类,类中的对象称为类的实例。
- 类的属性的定义域也可以是类,从而构成了类的复合。类具有继承性,一个类可以继承另一个类的属性与方法,被继承类和继承类也称为超类和子类。类与类之间的复合与继承关系形成了一个有向无环图,称为类层次。
- 对象是被封装起来的,它的状态和行为在对象外部不可见,从外部只能通过对象显式定义的消息传递对对象进行操作。
面向对象数据库(OODB)的研究始于20世纪80年代,有许多面向对象数据库产品相继问世,较著名的有Object Store、02、ONTOS等。
与传统数据库一样,面向对象数据库系统对数据的操纵包括数据查询、增加、删除、修改等,也具有并发控制、故障恢复、存储管理等完整的功能。不仅能支持传统数据库应用,也能支持非传统领域的应用,包括CAD/CAM、OA、CIMS、GIS以及图形、图像等多媒体领域、工程领域和数据集成等领域。
尽管如此,由于面向对象数据库操作语言过于复杂,没有得到广大用户,特别是开发人员的认可,加上面向对象数据库企图完全替代关系数据库管理系统的思路,增加了企业系统升级的负担,客户不接受,·面向对象数据库产品终究没有在市场上获得成功。
对象关系模型
对象关系数据库系统(Object Relational DataBase System, ORDBS) 是关系数据库与面向对象数据库的结合。
它保持了关系数据库系统的非过程化数据存取方式和数据独立性,继承了关系数据库系统已有的技术,支持原有的数据管理,又能支持00模型和对象管理。各数据库厂商都在原来的产品基础上进行了扩展。
1999 年发布的SQL标准(也称为SQL99),增加了SQL/Object Language Binding, 提供了面向对象的功能标准。SQL99对ORDBS标准的制定滞后于实际系统的实现。所以各个ORDBS产品在支持对象模型方面虽然思想一致,但是所采用的术语、语言语法、扩展的功能都不尽相同。
(三) 数据库系统结构
1. 数据库系统模式的概念
模式是数据库中全体数据的逻辑结构和特征的描述,同一个模式可以有很多实例。
简单来说,模式就是一个事物应该有什么;
比如人的模式就是人有鼻子,有眼睛,有嘴巴
而一个人眼镜什么样子,鼻子什么样子,这就是具体到实例了
2. 数据库系统的三级模式结构
模式 | 别名 | 说明 | 举例 |
---|---|---|---|
外模式 | 用户模式 | 就是根据需求返回的数据 | 查成绩,只会显示你的名字和你的成绩 |
模式 | 逻辑模式 | 就是打开mysql表之后看到的完整的表 | 所有人的名字,成绩,学号等信息都会显示出来 |
内模式 | 存储模式 | 就是数据在硬盘中如何存储的 |
(1) 模式
模式(也称逻辑模式)
- 数据库中全体数据的逻辑结构和特征的描述
- 所有用户的公共数据视图,综合了所有用户的需求
一个数据库只有一个模式,可以把模式看成唯一的数据库,实例就是数据库里面的多个表
模式的地位:
- 是数据库系统模式结构的中间层
- 与数据的物理存储细节和硬件环境无关
- 与具体的应用程序、开发工具及高级程序设计语言无关
模式的定义:
- 数据的逻辑结构(数据项的名字、类型、取值范围等)
- 数据之间的联系
- 数据有关的安全性、完整性要求
(2) 外模式
外模式(也称子模式或用户模式)
- 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
- 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示,可以看成把数据库的部分数据,运用在不同的应用程序上,在UI界面上显示
外模式的地位:介于模式与应用之间
模式与外模式
的关系:一对多
- 外模式通常是模式的子集;
- 一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求;
- 对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同;
外模式与应用
的关系:一对多
- 同一外模式也可以为某一用户的多个应用系统所使用;
- 但一个应用程序只能使用一个外模式;
- 可以看成把数据库的部分数据,运用在不同的应用程序上,在UI界面上显示
外模式的用途
- 保证数据库安全性的一个有力措施;
- 每个用户只能看见和访问所对应的外模式中的数据;
(3) 内模式
内模式(也称存储模式)
- 是数据
物理结构和存储方式
的描述 - 是数据在数据库内部的表示方式:
- 记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储)
- 索引的组织方式
- 数据是否压缩存储
- 数据是否加密
- 数据存储记录结构的规定
一个数据库只有一个内模式
(一个数据库的存储方式都是一样的么)
总结
数据库模式
- 即全局逻辑结构是数据库的中心与关键
- 独立于数据库的其他层次
- 设计数据库模式结构时应首先确定数据库的逻辑模式
数据库的外模式
- 面向具体的应用程序
- 定义在逻辑模式之上
- 独立于存储模式和存储设备
- 当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动
- 设计外模式时应充分考虑到应用的扩充性
数据库的内模式
- 依赖于它的全局逻辑结构
独立于具体的存储设备
- 将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以到较好的时间与空间效率
3. 数据库的二级映像功能与数据独立性
数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。
数据库管理系统在这三级模式直接提供了两层映像:
- 外模式/模式映像
- 模式/内模式映像
两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性
(1) 外模式/模式映像
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。
当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序时依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
(2) 模式/内模式映像
数据库中只有一个模式,也只有一个内模式,所以,模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。
当数据库的存储结构改变了(例如选用了另一种存储结构),由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。
特点:
-
保证数据的物理独立性
当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变.
应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。
-
特定的应用程序
在外模式描述的数据结构上编制的
依赖于特定的外模式
与数据库的模式和存储结构独立
不同的应用程序有时可以共用同一个外模式
-
数据库的二级映像
保证了数据库外模式的稳定性
从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改
数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去
-
数据的存取由DBMS管理
用户不必考虑存取路径等细节
简化了应用程序的编制
大大减少了应用程序的维护和修改
(四) 数据库系统的组成
数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统和数据库管理员构成。
1. 硬件平台及数据库
硬件资源要求:
- 要有足够大的内存,存放操作系统、DBMS的核心模块、数据缓冲区和应用程序。
- 有足够大的磁盘或磁盘阵列等设备存放数据库,有足够的磁带(或光盘)作数据备份。
- 要求系统有较高的通道能力,以提高数据传送率。
2. 软件
数据库系统的软件主要包括:
- DBMS。DBMS是为数据库的建立、使用和维护配置的系统软件。
- 支持DBMS运行的操作系统。
- 具有与数据库接口的高级语言以及编译系统,便于开发应用程序。
- 以DBMS为核心的应用开发工具。
- 以特定应用环境开发的数据库应用系统。
3. 人员
开发、管理和使用数据库系统的人员主要是:数据库管理员
、系统分析员
和数据库设计人员
、应用程序员
和最终用户
。不同的人员涉及不同的数据抽象级别,具有不同的数据视图,如下图:
(1) 数据库管理员
需要有专门的管理机构来监督和管理数据库系统。DBA则是这个机构的一个(组)人员,负责全面管理和控制数据库系统。具体职责包括:
- 决定数据库中的信息内容和结构,数据库中要存放哪些信息,DBA要参与决策。
- 决定数据库的存储结构存取策略。
- 定义数据的安全性要求和完整性约束条件。
- 监控数据库的使用和运行。
- 周期性转储数据库
- 数据文件
- 日志文件
- 系统故障恢复
- 介质故障恢复
- 监视审计文件
- 数据库的改进和重组重构。
- 性能监控和调优
- 定期对数据库进行重组织,以提高系统的性能
- 需求增加和改变时,数据库须需要重构造
(2) 系统分析员和数据库设计人员
系统分析员负责
-
应用系统的需求分析和规范说明
-
要和用户及DBA相结合,确定系统的硬件配置,并参与数据库系统的概要设计。
就是分析员要与用户沟通,需求分析,制作成ER图,也要与DBA商量数据库的结构;起到承上启下的作用
(3) 数据库设计人员
负责数据库中数据的确定、数据库各级模式的设计。
(4) 应用程序员
应用程序员负责设计和编写应用系统的程序模块,并进行调试和安装。
(5) 用户
这里用户是指最终用户。
最终用户通过应用系统的用户接口使用数据库。
-
偶然用户
不经常访问数据库,但每次访问数据库时往往需要不同的数据库信息
企业或组织机构的高中级管理人员 -
简单用户
主要工作是查询和更新数据库
银行的职员、机票预定人员、旅馆总台服务员
-
复杂用户
工程师、科学家、经济学家、科技工作者等
直接使用数据库语言访问数据库,甚至能够基于数据库管理系统的API编制自己的应用程序