参考《数据库系统概论》
目录
数据库系统概述
基本概念
数据 (Data)
- 数据: 数据库中存储的基本对象
- 数据的含义称为数据的语义,数据与其语义是不可分的
- 例如 93 是一个数据
- 语义1:学生某门课的成绩
- 语义2:某人的体重…
- 例如 93 是一个数据
数据库 (Database, DB)
- 数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合
- 数据库的基本特征
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享 (需处理并发)
- 冗余度较小
- 数据独立性较高: 数据能独立存在,不依赖于应用程序
- 易扩展
数据库管理系统 (DBMS)
- 数据库管理系统 (Database Management System): 位于用户与操作系统之间的一层数据管理软件. 用于科学地组织和存储数据、高效地获取和维护数据
DBMS 的主要功能
- 数据定义功能
- 提供数据定义语言 (Data Definition Language, DDL),用户通过它来定义数据库中的数据对象
- 数据组织、存储和管理
- DBMS 需要分类组织、存储和管理各种数据。要确定组织数据的文件结构和存取方式、实现数据之间的联系
- 基本目标:提高存储空间利用率、提供多种存取方法(索引查找、Hash查找、顺序查找…)提高存取效率
- 数据操纵功能
- 提供数据操纵语言 (Data Manipulation Language, DML),用户使用 DML 实现对数据库的基本操作 (查询、插入、删除和修改)
- 数据库的事务管理和运行管理
- 数据库在建立、运行和维护时由 DBMS 统一管理和控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复
- 数据库的建立和维护功能,包括:
- 数据库初始数据装载转换
- 数据库转储
- 介质故障恢复
- 数据库的重组织
- 性能监视分析等
- 其它功能:
- DBMS与网络中其它软件系统的通信
- 两个DBMS系统的数据转换
- 异构数据库之间的互访和互操作
数据库系统 (DBS)
- 数据库系统 : 在计算机系统中引入数据库后的系统构成
在不引起混淆的情况下,可简称为数据库
- 数据库系统的构成: DB、DBMS(及其开发工具)(数据库系统的核心)、应用系统、数据库管理员 (DataBase Administrator, DBA)
数据管理技术的产生和发展
人工管理阶段
文件系统阶段
- 由专门的软件即文件系统进行数据管理,文件系统把数据组织成相互独立的数据文件,利用 “按文件名访问,按记录进行存取” 的管理技术,可以对文件进行修改、插入和删除的操作
- 文件系统实现了记录内的结构性,但整体无结构
- 在文件系统中每个文件内部是有结构的,即文件由记录构成,每个记录由若干属性组成,但记录之间没有联系
- 例如,学生文件 student、课程文件 course 和学生选课文件 sc 是独立的 3 个文件,但实际上这 3 个文件的记录之间是有联系的,sc 的学生编号必须是 student 文件中某个学生的学号,sc 的课程编号必须是 course 文件中某门课程的编号
- 程序和数据之间由文件系统提供存取方法进行转换,使应用程序与数据之间有了一定的独立性,程序员可以不必过多地考虑物理细节,将精力集中于算法。而且数据在存储上的改变小一定反映在程序上,大大节省了维护程序的工作量
但是,文件系统仍存在以下缺点,
- (1) 数据共享件差,冗余度大
- 在文件系统中,一个(或一组)文件基本上对应于一个应用程序,即文件仍然是面向应用的。当不同的应用程序具有部分相同的数据时,也必须建立各自的文件,而不能共享相同的数据,因此数据的冗余度大,浪费存储空间
- 同时由于相同数据的重复存储、各自管理,容易造成数据的不一致性,给数据的修改和维护带来了困难
- (2) 数据独立性差
- 文件系统中的文件是为某特定应用服务的,文件的逻辑结构对该应用程序来说是优化的,因此要想对现有的数据再增加些新的应用会很困难,系统不容易扩充
- 一旦数据的逻辑结构改变,必须修改应用程序,修改文件结构的定义。应用程序的改变,例如应用程序改用不同的高级语言编写,也将引起文件数据结构的改变。因此数据与程序之间仍缺乏独立性
- 可见,文件系统仍然是一个不具有弹件的无结构的数据集合,即文件之间是孤立的,不能反映现实世界事物之间的内在联系
数据库系统阶段
数据库系统的特点
数据结构化
- 整体数据的结构化是数据库的主要特征之一 (数据库系统与文件系统的本质区别)
- “整体”结构化是指,在数据库中的数据不再仅仅针对某一个应用,而是面向全组织;不仅数据内部结构化,整体也是结构化的,数据之间具有联系。这就要求在描述数据时不仅要描述数据本身,还要描述数据之间的联系
- 例如,一个学校的信息系统中不仅要考虑教务处的学生学籍管理、选课管理,还要考虑学生处的学生人事管理,同时还要考虑研究生院的研究生管理、人事处的教员人事管理,科研处的科研管理等。因此,学校信息系统中的学生数据就要面向各个处室的应用而不仅仅是教务处的一个学生选课应用
- 数据的结构用数据模型描述,无需程序定义和解释
- 数据可以变长
- 数据的最小存取单位是数据项 (文件系统中,数据的存取单位是记录,粒度不能细到数据项)
数据的共享性高,冗余度低,易扩充
- 数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户、多个应用共享使用
- 数据共享有利于:
- 减少数据冗余,节约存储空间
- 避免数据之间的不相容性与不一致性
- 数据的不一致性是指同一数据不同拷贝的值不一样。因为冗余性减小了,冗余副本也变少了,从而可以避免不一致性
- 使系统易于扩充
数据独立性高
- 物理独立性:指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变
- 逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变
- 数据独立性是由 DBMS 的二级映像功能来保证的
- 数据与程序的独立,把数据的定义从程序中分离出去,加上存取数据的方法又由 DBMS 负责提供,从而简化了应用程序的编制,大大减少了应用程序的维护和修改
数据由 DBMS 统一管理和控制
DBMS 提供的数据控制功能
- (1) 数据的安全性(Security)保护:保护数据,以防止不合法的使用造成的数据的泄密和破坏
- (2) 数据的完整性(Integrity)检查:将数据控制在有效的范围内,或保证数据之间满足一定的关系
- (3) 并发(Concurrency)控制:对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果
- (4) 数据库恢复(Recovery):将数据库从错误状态恢复到某一已知的正确状态
数据模型
- 在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟。数据模型应满足三方面要求:
- 能比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现
两大类数据模型
- (1) 概念模型也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计
- (2) 数据模型 (逻辑模型和物理模型)
- 逻辑模型主要包括网状模型 (Network Model)、层次模型 (Hierarchical Model)、关系模型 (Relational Model)、面向对象模型 (Object Oriented Model)等,按计算机系统的观点对数据建模,用于 DBMS 实现
- 物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法
- 客观对象的抽象过程—两步抽象
- 现实世界中的客观对象抽象为概念模型 (现实世界 → ( 数 据 库 设 计 人 员 ) \rightarrow_{(数据库设计人员)} →(数据库设计人员) 概念模型)
- 把概念模型转换为某一 DBMS 支持的数据模型 (概念模型 → ( 数 据 库 设 计 人 员 ) \rightarrow_{(数据库设计人员)} →(数据库设计人员) 逻辑模型 → ( D B M S ) \rightarrow_{(DBMS)} →(DBMS) 物理模型)
数据模型的组成要素
数据结构
- 数据结构:描述数据库的组成对象,以及对象之间的联系,即:
- 与数据类型、内容、性质有关的对象。例如网状模型中的数据项、记录;关系模型中的域、属性、关系
- 与数据之间联系有关的对象。例如网状模型中的系型 (Set Type)
- 数据结构是对系统静态特性的描述
数据库系统中,人们通常按照其数据结构的类型来命名数据模型。例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型
数据操作
- 数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则。包括:
- 查询、更新 (插入、删除、修改)
- 数据模型必须定义操作的确切含义、操作符号、操作规则 (如优先级)、实现操作的语言
- 数据操作是对系统动态特性的描述
完整性约束条件
- 数据的完整性约束条件:一组完整性规则的集合。
- 完整性规则:给定的数据模型中数据及其联系所具有的制约和储存规则。用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容
数据模型对完整性约束条件的定义
- 数据模型应该反映和规定本数据模型必须遵守的基本的通用的完整性约束条件
- 例如在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件
- 数据模型还应提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件
概念模型
概念模型的用途
- 概念模型用于信息世界的建模,是现实世界到机器世界的一个中间层次,是数据库设计的有力工具,数据库设计人员和用户之间进行交流的语言
对概念模型的基本要求
- 较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识
- 简单、清晰、易于用户理解
信息世界中的基本概念
- 实体 (Entity): 客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念
- 属性(Attribute): 实体所具有的某一特性。一个实体可以由若干个属性来刻画
- 码 / 键(Key): 唯一标识实体属性集的属性
- 例如学号是学生实体的码
- 域 (Domain): 属性的取值范围称为该属性的域
- 实体型(Entity Type): 用实体名及其属性名集合来抽象和刻画同类实体称为实体型
- 例如,学生 (学号,姓名,性别,出生年月,所在院系,入学时间) 就是一个实体型
- 实体集(Entity Set): 同一类型实体的集合
- 联系(Relationship): 现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系
- 实体内部的联系通常是指组成实体的各属性之间的联系
- 实体之间的联系通常是指不同实体集之间的联系
两个实体型之间的联系
- 一对一联系(1:1): 如果对于实体集 A A A 中的每一个实体,实体集 B B B 中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集 A A A 与实体集 B B B 具有一对一联系
- 实例: 一个班级只有一个正班长,一个班长只在一个班中任职
- 一对多联系(1: n n n): 如果对于实体集 A A A 中的每一个实体,实体集 B B B 中有 n n n 个实体( n ≥ 0 n≥0 n≥0)与之联系,反之,对于实体集 B B B 中的每一个实体,实体集 A A A 中至多只有一个实体与之联系,则称实体集 A A A 与实体集 B B B 有一对多联系
- 实例:一个班级中有若干名学生,每个学生只在一个班级中学习
- 多对多联系( m : n m:n m:n): 如果对于实体集 A A A 中的每一个实体,实体集 B B B 中有 n n n 个实体( n ≥ 0 n≥0 n≥0)与之联系,反之,对于实体集 B B B 中的每一个实体,实体集 A A A 中也有 m m m 个实体( m ≥ 0 m≥0 m≥0)与之联系,则称实体集 A A A 与实体 B B B 具有多对多联系
- 实例:课程与学生之间的联系:一门课程同时有若干个学生选修一个学生可以同时选修多门课程
- 实例:课程与学生之间的联系:一门课程同时有若干个学生选修一个学生可以同时选修多门课程
两个以上实体型之间的联系
- 两个以上实体型之间一对多联系: 若实体集 E 1 , E 2 , . . . , E n E_1,E_2,...,E_n E1,E2,...,En 存在联系,对于实体集 E j E_j Ej( j = 1 , 2 , . . . , i − 1 , i + 1 , . . . , n j=1,2,...,i-1,i+1,...,n j=1,2,...,i−1,i+1,...,n)中的给定实体,最多只和 E i E_i Ei 中的一个实体相联系,则我们说 E i E_i Ei 与 E 1 , E 2 , . . . , E i − 1 , E i + 1 , . . . , E n E_1,E_2,...,E_{i-1},E_{i+1},..., E_n E1,E2,...,Ei−1,Ei+1,...,En 之间的联系是一对多的
- 实例: 课程、教师与参考书三个实体型: 一门课程可以有若干个教师讲授,使用若干本参考书,每一个教师只讲授一门课程,每一本参考书只供一门课程使用
- 实例: 课程、教师与参考书三个实体型: 一门课程可以有若干个教师讲授,使用若干本参考书,每一个教师只讲授一门课程,每一本参考书只供一门课程使用
- 多个实体型间的一对一联系
- 两个以上实体型间的多对多联系
- 实例: 供应商、项目、零件三个实体型: 一个供应商可以供给多个项目多种零件, 每个项目可以使用多个供应商供应的零件, 每种零件可由不同供应商供给
- 实例: 供应商、项目、零件三个实体型: 一个供应商可以供给多个项目多种零件, 每个项目可以使用多个供应商供应的零件, 每种零件可由不同供应商供给
单个实体型内的联系
- 一对多联系
- 实例: 职工实体型内部具有领导与被领导的联系: 某一职工“领导”若干名职工, 一个职工仅被另外一个职工直接领导
- 实例: 职工实体型内部具有领导与被领导的联系: 某一职工“领导”若干名职工, 一个职工仅被另外一个职工直接领导
- 一对一联系
- 多对多联系
概念模型的一种表示方法
实体-联系方法 (E-R方法 / E-R模型)
- 用 E-R 图来描述现实世界的概念模型 (Entity-Relationship)
- 实体型: 用矩形表示,矩形框内写明实体名
- 属性: 用椭圆形表示,并用无向边将其与相应的实体连接起来
- 联系:
- 联系本身:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型( 1 : 1 1:1 1:1、 1 : n 1:n 1:n 或 m : n m:n m:n)
- 联系的属性:联系本身也是一种实体型,也可以有属性。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来
- 联系本身:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型( 1 : 1 1:1 1:1、 1 : n 1:n 1:n 或 m : n m:n m:n)
一个实例
用 E-R 图表示某个工厂物资管理的概念模型
- 实体:
- 仓库:仓库号、面积、电话号码
- 零件:零件号、名称、规格、单价、描述
- 供应商:供应商号、姓名、地址、电话号码、帐号
- 项目:项目号、预算、开工日期
- 职工:职工号、姓名、年龄、职称
- 实体之间的联系如下:
- (1) 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量
- (2) 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,仓库和职工之间是一对多的联系
- (3) 职工之间具有领导-被领导关系。即仓库主任领导若干保管员
- (4) 供应商、项目和零件三者之间具有多对多的联系
最常用的数据模型
非关系模型
- 在非关系模型中,实体用记录表示,实体的属性对应记录的数据项(或字段)。实体之间的联系在非关系模型中转换成记录之间的两两联系
- 非关系模型中数据结构的单位是基本层次联系,即两个记录以及它们之间的一对多(包括一对一)的联系
层次模型 (Hierarchical Model)
层次数据模型的数据结构
- 层次模型用树形结构来表示各类实体以及实体间的联系。满足下面两个条件的基本层次联系的集合为层次模型
- 有且只有一个结点没有双亲结点,这个结点称为根结点
- 根以外的其它结点有且只有一个双亲结点
- 每个记录类型可以定义一个排序字段,也称为码字段
- 没有一个子女记录值能够脱离双亲记录值而独立存在。任何记录值只有按其路径查看时,才能显出它的全部意义
多对多联系在层次模型中的表示
- 方法: 将多对多联系分解成一对多联系
- 分解方法
- 冗余结点法: 通过增设两个冗余结点将上图的多对多联系转换成两个一对多联系
- 虚拟结点法: 将上图中的冗余结点换为虚拟结点, 所谓虚拟结点就是一个指针,指向所替代的结点,可以减少对存储空间的浪费
- 冗余结点法: 通过增设两个冗余结点将上图的多对多联系转换成两个一对多联系
层次模型的数据操纵与完整性约束
- 层次模型的数据操纵:查询、插入、删除、更新
- 层次模型的完整性约束条件
- 无相应的双亲结点值就不能插入子女结点值
- 如果删除双亲结点值,则相应的子女结点值也被同时删除
- 更新操作时,应更新所有相应记录,以保证数据的一致性
层次数据模型的存储结构
- 邻接法:按照层次树前序遍历的顺序把所有记录值依次邻接存放,即通过物理空间的位置相邻来实现层次顺序
- 链接法
- 子女-兄弟链接法: 每个记录设两类指针,分别指向最左边的子女(每个记录型对应一个)和最近的兄弟
- 层次序列链接法: 按树的前序遍历的顺序链接各记录值
层次模型的优缺点
优点
- 层次模型的数据结构比较简单清晰
- 查询效率高,性能优于关系模型,不低于网状模型
- 层次数据模型提供了良好的完整性支持
缺点
- 多对多联系表示不自然
- 对插入和删除操作的限制多,应用程序的编写比较复杂
- 查询子女结点必须通过双亲结点
- 由于结构严密,层次命令趋于程序化
网状模型 (Network Model)
- 采用网状模型作为数据的组织方式
网状数据模型的数据结构
- 网状模型中子女结点与双亲结点的联系可以不唯一。要为每个联系命名,并指出与该联系有关的双亲记录和子女记录
多对多联系在网状模型中的表示
- 将多对多联系直接分解成一对多联系
- 例如:一个学生可以选修若干门课程,某一课程可以被多个学生选修,学生与课程之间是多对多联系. 为此引进一个学生选课的联结记录,由3个数据项组成,即学号、课程号、成绩,表示某个学生选修某一门课程及其成绩. 每个学生可以选修多门课程,显然对学生记录中的一个值,选课记录中可以有多个值与之联系,而选课记录中的一个值,只能与学生记录中的一个值联系。学生与选课之间的联系是一对多的联系,联系名为 S-SC, 同样,课程与选课之间的联系也是一对多的联系,联系名为 C-SC
- 例如:一个学生可以选修若干门课程,某一课程可以被多个学生选修,学生与课程之间是多对多联系. 为此引进一个学生选课的联结记录,由3个数据项组成,即学号、课程号、成绩,表示某个学生选修某一门课程及其成绩. 每个学生可以选修多门课程,显然对学生记录中的一个值,选课记录中可以有多个值与之联系,而选课记录中的一个值,只能与学生记录中的一个值联系。学生与选课之间的联系是一对多的联系,联系名为 S-SC, 同样,课程与选课之间的联系也是一对多的联系,联系名为 C-SC
网状数据模型的操纵与完整性约束
- 码:唯一标识记录的数据项的集合
- 例如,上例中的选课记录的码为 { 学 号 , 课 程 号 } \{学号, 课程号\} { 学号,课程号},因此数据库中不允许学号和课程号都相同的选课记录
- 一个联系中双亲记录与子女记录之间是一对多联系
- 支持双亲记录和子女记录之间某些约束条件
- 例如,有些子女记录要求双亲记录存在才能插入, 双亲记录删除时也连同删除。例如上图中选课记录就应该满足这种约束条件,学生选课记录值必须是数据库中存在的某一学生选修存在的某一门课的记录
网状数据模型的存储结构
- 网状数据模型的存储结构中关键是如何实现记录之间的联系
- 单向链接、双向链接、环状链接、向首链接…
- 单向链接、双向链接、环状链接、向首链接…
网状数据模型的优缺点
优点
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲
- 具有良好的性能,存取效率较高
缺点
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握
- DDL、DML语言复杂,用户不容易使用
关系模型 (Relational Model)
- 关系数据库系统采用关系模型作为数据的组织方式
关系数据模型的数据结构
- 在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
- 关系(Relation): 一个关系对应一张表
- 元组(Tuple): 表中的一行
- 属性(Attribute): 表中的一列即为一个属性,给每一个属性起一个名称即属性名
- 主码(Key): 表中的某个属性组 (若干属性),它可以唯一确定一个元组
- 域(Domain): 属性的取值范围
- 分量: 元组中的一个属性值
- 关系模式: 对关系的描述,一般表示为
关 系 名 ( 属 性 1 , 属 性 2 , … , 属 性 n ) 关系名\ (属性1,属性2,…,属性n) 关系名 (属性1,属性2,…,属性n)例如 学 生 ( 学 号 , 姓 名 , 年 龄 , 性 别 , 系 , 年 级 ) 学生\ (学号,姓名,年龄,性别,系,年级) 学生 (学号,姓名,年龄,性别,系,年级)- 在关系模型中,实体以及实体间的联系都是用关系来表示。例如,学生、课程、学生与课程之间的多对多联系:
学 生 ( 学 号 , 姓 名 , 年 龄 , 性 别 , 系 号 , 年 级 ) 课 程 ( 课 程 号 , 课 程 名 , 学 分 ) 选 修 ( 学 号 , 课 程 号 , 成 绩 ) 学生(学号,姓名,年龄,性别,系号,年级) \\课程(课程号,课程名,学分) \\选修(学号,课程号,成绩) 学生(学号,姓名,年龄,性别,系号,年级)课程(课程号,课程名,学分)选修(学号,课程号,成绩) - 关系必须是规范化的,满足一定的规范条件;最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表,例如下表中,工资和扣除是可分的数据项, 不符合关系模型要求
- 在关系模型中,实体以及实体间的联系都是用关系来表示。例如,学生、课程、学生与课程之间的多对多联系:
关系数据模型的操纵与完整性约束
- 关系数据模型的操作主要包括查询、插入、删除和更新数据。这些操作必须满足关系的完整性约束条件。关系的完整性约束条件包括:实体完整性,参照完整性和用户定义的完整性
- 关系模型中的数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合
- 存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明 “怎么干”,从而大大地提高了数据的独立性、提高了用户生产率
关系数据模型的存储结构
- 实体及实体间的联系都用表来表示
- 表以文件形式存储
- 有的DBMS一个表对应一个操作系统文件
- 有的DBMS自己设计文件结构
关系数据模型的优缺点
优点
- 建立在严格的数学概念的基础上
- 概念单一
- 实体和各类联系都用关系来表示
- 对数据的检索结果也是关系
- 关系模型的存取路径对用户透明
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作
缺点
- 存取路径对用户透明导致查询效率往往不如非关系数据模型
- 为提高性能,必须对用户的查询请求进行优化,增加了开发DBMS的难度
面向对象模型 (Object Oriented Model)
对象关系模型 (Object Relational Model)
半结构化数据模型 (Semi-structure) - XML
非结构化数据模型, 图模型
数据库系统结构
- 从数据库管理系统角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构
- 从数据库最终用户角度看(数据库系统外部的体系结构) ,数据库系统的结构分为: 单用户结构、主从式结构、分布式结构、客户/服务器、浏览器/应用服务器/数据库服务器多层结构等
数据库系统模式的概念
“型” (Type) 和 “值” (Value)
- 型 : 对某一类数据的结构和属性的说明
- 值 : 是型的一个具体赋值
- 例如,学生记录型: ( 学 号 , 姓 名 , 性 别 , 系 别 , 年 龄 , 籍 贯 ) (学号,姓名,性别,系别,年龄,籍贯) (学号,姓名,性别,系别,年龄,籍贯); 一个记录值: ( 900201 , 李 明 , 男 , 计 算 机 , 22 , 江 苏 ) (900201,李明,男,计算机,22,江苏) (900201,李明,男,计算机,22,江苏)
“模式” (Schema) 和 “实例” (Instance)
- 模式: 数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值
- 实例: 模式的一个具体值,同一个模式可以有很多实例
- 模式是相对稳定的,而实例随数据库中的数据的更新而变动。模式反映的是数据的结构及其联系,而实例反映数据库某一时刻的状态
- 例如:在学生选课数据库模式中,包含学生记录、课程记录和学生选课记录. 则 2003 年的一个学生数据库实例,包含了 2003 年学校中所有学生的记录、学校开设的所有课程的记录、所有学生选课的记录。2002 年度学生数据库模式对应的实例与 2003 年度学生数据库模式对应的实例是不同的. 各个时刻学生选课数据库的实例是不同的,而不变的是学生选课数据库模式
数据库系统的三级模式结构
- 数据库系统的三级模式结构是指数据库系统是由外模式 (External Schema)、模式 (Schema) 和 内模式 (Internal Schema) 三级构成
模式 / 逻辑模式
- 模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。数据库模式以某一种数据模型为基础,统一综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体
- 模式的地位:是数据库系统模式结构的中间层,一个数据库只有一个模式
- 与数据的物理存储细节和硬件环境无关
- 与具体的应用程序、开发工具及高级程序设计语言无关
- 定义模式时不仅要定义数据的逻辑结构,例如数据记录由哪些数据项构成,数据项的名字、类型,取值范围等,而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求
DBSM 提供模式描述语言(模式 DDL) 来严格地定义模式
外模式 / 子模式 / 用户模式
- 外模式是数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述;是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
- 外模式的地位:介于模式与应用之间
- 一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求;即使对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同
- 模式与外模式的关系:一对多,通常是模式的子集
- 外模式与应用的关系:一对多。同一外模式可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式
- 外模式的用途
- 保证数据库安全性的一个有力措施
- 每个用户只能看见和访问所对应的外模式中的数据,简化用户视图
DBSM 提供子模式描述语言(子模式 DDL) 来严格地定义子模式
内模式 / 存储模式
- 内模式是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,例如
- 记录的存储方式(顺序存储,按照 B+ 树结构存储,按 hash 方法存储)、索引的组织方式、数据是否压缩存储、数据是否加密、数据存储记录结构的规定
- 一个数据库只有一个内模式
DBSM 提供内模式描述语言 (内模式 DDL, 或者存储模式 DDL) 来严格地定义内模式
数据库的二级映像功能与数据独立性
- 数据库的三级模式是对数据的 3 个抽象级别, 它把数据的具体组织留给 DBMS 管理,使用户能逻辑地抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式
- 为了能够在系统内部实现这 3 个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像,正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性
- 外模式/模式映像 (逻辑独立性)
- 模式/内模式映像 (物理独立性)
外模式/模式映象
- 对于每一个外模式,数据库系统都有一个外模式/模式映象,定义外模式与模式之间的对应关系。这些映象定义通常包含在各自外模式的描述中
- 当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变;应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
模式/内模式映象
- 模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系,该映象定义通常包含在模式描述中
- 例如,说明逻辑记录和字段在内部是如何表示的
- 当数据库的存储结构改变时,数据库管理员修改模式/内模式映象,使模式保持不变;应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性
总结
数据库模式
- 在数据库的三级模式结构中,数据库模式,即全局逻辑结构是数据库的中心。它独立于数据库的其他层次,因此设计数据库模式结构时应首先确定数据库的逻辑模式
数据库的内模式
- 内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图,即外模式,也独立于具体的存储设备
- 将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率
数据库的外模式
- 外模式面向具体的应用程序,它定义在逻辑模式之上,独立于存储模式和存储设备
- 当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动
特定的应用程序
- 特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立
- 不同的应用程序有时可以共用同一个外模式
数据库的二级映像
- 保证了数据库外模式的稳定性。从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改
- 数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去
- 数据的存取由 DBMS 管理。用户不必考虑存取路径等细节,简化了应用程序的编制
数据库系统的组成
- 数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员组成
硬件平台及数据库
数据库系统对硬件资源的要求
- (1) 足够大的内存,存放操作系统、DBMS 的核心模块、数据缓冲区和应用程序
- (2) 足够大的外存:存放数据及其备份
- (3) 较高的通道能力,提高数据传送率
软件
数据库系统的软件主要包括:
- DBMS
- 支持 DBMS 运行的操作系统
- 与数据库接口的高级语言及其编译系统
- 以 DBMS 为核心的应用开发工具
- 为特定应用环境开发的数据库应用系统
人员
- 数据库管理员 (DBA)、系统分析员和数据库设计人员、应用程序员、用户
- 不同的人员涉及不同的数据抽象级别,具有不同的数据视图,如下图所示