数据库概论.陈立军.01.数据库系统简介

数据库系统简介

  • 数据项:数据记录中最小的、不可分的有名数据单位(姓名、性别)
  • 数据元素 由若干个数据项组成
  • 数据与信息
    • 数据是信息的符号表示,或称载体
    • 信息是数据的内涵,是数据的语义解释

数据结构

  • 按照逻辑关系组织起来的一批数据,按一定的存储方法把它存储在计算机中,并在这些数据上定义了一个运算的集合
  • 逻辑结构:数据之间存在的逻辑关系
    • 表、树、图
  • 物理结构:数据在计算机内的存储方式
    • 顺序方式、链接方式

数据类型

  • 具有相同数据结构的数据属同一类,同一类数据的全体称为一个数据类型
  • 数据类型说明了数据在数据分类中的归属,用以限定该数据的变化范围

数据类型分类

  • 数据结构+算法=程序

数据独立性

  • 当数据结构发生变化时,通过系统提供的映象(转换)功能,使应用程序不必改变
  • 物理独立性:当数据存储结构发生变化时,使应用程序不必改变
  • 逻辑独立性:当数据逻辑结构发生变化时,使应用程序不必改变

数据管理

  • 数据定义、数据操作、数据约束
  • 数据定义
    • 逻辑结构、物理结构等
  • 数据操作
    • 查询、更新等
  • 数据约束
    • 对客观事物的合理反映、数据一致性等
  • 数据独立性的实现视角:将数据管理从应用程序中剥离出来
  • 数据管理:对数据的分类、组织、编码、存储、检索和维护

数据管理的发展阶段

  • 各阶段的技术及应用背景
    • 计算机应用范围
    • 外存储设备
    • 数据管理软件
  • 各个阶段的差别体现
    • 谁管理数据
    • 数据面向谁
    • 数据与应用的独立性

人工管理阶段

  • 计算机主要用于科学计算
    • 数据量小、结构简单,如高阶方程、曲线拟和等
  • 外存为顺序存取设备
    • 磁带、卡片、纸带
  • 磁带的特点
    • 廉价地存放大容量数据
    • 顺序访问;1%所需,100%访问
  • 没有操作系统,没有数据管理软件
    • 用户用机器指令编码通过纸带机输入程序和数据,程序运行完毕后,由用户取走纸带和运算结果,再让下一用户上机操作
  • 用户完全负责数据管理工作
    • 数据的组织、存储结构、存取方法、输入输出等
  • 数据完全面向特定的应用程序
    • 每个用户使用自己的数据,数据不保存,用完就撤走
  • 数据与程序没有独立性
    • 存取数据的子程序随着存储结构的改变而改变

文件系统阶段

  • 计算机不但用于科学计算,还用于管理
  • 外存有了磁盘、磁鼓等直接存取设备
    • 无须顺序存取
    • 由地址直接访问所需记录
  • 产生了操作系统
    • 管理和控制计算机软硬件资源的计算机程序
  • 文件系统的功能
    • 文件存储空间的管理
    • 目录管理
    • 文件读写管理
    • 文件保护
    • 向用户提供操作接口
  • 文件系统解放了用户对外存的访问
  • 文件系统提供了一定的物理独立性
  • 文件系统的 数据定义独立性
    • 数据与程序紧密结合
      • 数据的逻辑结构改变则必须修改应用程序
    • 数据分散管理
      • 许多文件,许多数据格式
    • 数据的语义信息只能由程序来解释
      • 数据的组织方式以及按何种含义进行处理,只有全权管理它的程序知道
    • 数据共享困难
      • 一个应用若想共享另一个应用生成的数据,必须同另一个应用沟通,了解数据的语义与组织方式
  • 文件系统的 数据完整性独立性
    • 由于数据存在很多副本,给数据的修改与维护带来了困难,容易造成数据的不一致性
    • 数据完整性难于维护
  • 文件系统的 数据操作独立性
    • 记录之间无联系
    • 用户自己编程实现
    • 对每个查询都重新编码
  • 困难的本质
    • 文件系统眼中的数据:字符流
    • 面对一串字符流,要从中找到目标对象,你需要对其解析、遍历、匹配等
  • 基于文件系统的查询
    • 分别组织几个文件,存储各类对象的记录
    • ad hoc query
  • 基于文件系统维护数据完整性
    • insert,delete
    • 很复杂,需要修改大量文件
    • 容易出错

数据库系统阶段

  • 外存有了大容量磁盘,光盘
  • 数据管理需求旺盛
    • 数据量大,关系复杂,共享性要求强(多种应用、不同语言共享数据)
  • 软件相对于硬件:从 Feature 到 future
    • 软件价格上升,硬件价格下降,编制和维护软件及应用程序成本相对增加,其中维护的成本更高,力求降低
  • 数据不是依赖于处理过程的附属品,而是现实世界中独立存在的对象

数据库系统阶段的特点

  • 有了数据库管理系统
  • 面向全组织,面向现实世界
  • 独立性较强
  • 由 DBMS 统一存取,维护数据语义及结构
    • DBMS:DataBase Management System ,数据库管理系统
  • 面向全组织的数据结构
    • 支持全企业的应用不是某一个应用
    • 数据反映了客观事物间的本质联系,而不是着眼于面向某个应用,是有结构的数据
    • 文件系统只是记录的内部有结构,一个文件的记录之间是个线性序列,记录之间无联系
    • 数据库系统眼中的数据:结构化数据
  • 数据的冗余度小,易扩充
    • 冗余度小
      • 数据面向整个系统,而不是面向某一应用,数据集中管理,数据共享
    • 集中管理
      • 节省存储空间,减少存取时间,避免数据之间的不相容性和不一致性
    • 易扩充性
      • 每个应用选用数据库的一个子集,只要重新选取不同子集或者加上一小部分数据,就可以满足新的应用要求
  • 数据库的高数据独立性
    • 把数据库定义和描述从应用程序中分离出去
    • 数据描述是分级的(全局逻辑、局部逻辑、存储)
    • 数据存取由系统管理,用户不必考虑存取路径等细节,从而简化了应用程序(SQL)
  • 统一的数据控制功能
    • 安全性控制(Security)
      • 保护数据以防止不合法的使用所造成的数据泄露和破坏
      • 措施:用户标识与鉴定,存取控制
    • 完整性控制(Integrity)
      • 数据的正确性、有效性、相容性
      • 措施:完整性约束条件定义和检查
    • 并发控制(Concurrency)
      • 对多用户并发操作加以控制,防止其互相干扰而得到错误的结果并使数据库完整性遭到破坏
      • 措施:封锁
    • 恢复控制(Recovery)
      • 将数据库从故障中恢复到某个一致状态
      • 措施:冗余

数据库与文件系统的对比

数据模型

  • 数据建模过程
    • 用户 -- 计算机
    • 现实世界 --(概念化)-- 信息世界 -- (形式化)-- 计算机世界
    • 应用 -- 概念数据模型 -- 结构数据模型

数据模型定义

  • 数据模型:数据库系统中用于提供信息表示和操作手段的形式构架

概念数据模型

  • 用户的观点来对数据和信息建模
  • 用于组织信息世界的概念,表现从现实世界中抽象出来的事物以及它们之间的联系
  • 这类模型强调其语义表达能力,概念简单、清晰,易于用户理解
  • 概念数据模型是现实世界到信息世界的抽象,是用户与数据库设计人员之间进行交流的语言
  • 例子
    • E/R 模型:实体、联系、属性
    • ODL:属性、管线、类

结构数据模型

  • 计算机实现的观点来对数据建模
    • 是信息世界中的概念和联系在计算机世界中的表示方法
  • 有严格形式化定义,以便于在计算机上实现
    • 层次模型、网状模型、关系模型、面向对象模型
  • 结构数据模型的三要素
    • 数据结构、数据操作、数据约束条件
  • 数据结构:描述系统的静态特性,即组成数据库的对象类型
    • 数据本身:类型、内容、性质。如关系模型中的域、属性,关系等
    • 数据之间的联系。如关系模型中的外码
    • 一般按数据结构的类型来命名数据模型
  • 数据操作:描述系统的动态特性
    • 一般有检索、更新(插入、删除、修改)操作
    • 数据模型要定义操作含义、操作符号、操作规则,以及实现操作的语言
  • 数据约束条件:完整性规则的集合
    • 规定数据库状态及状态变化所应满足的条件
    • 保证数据的正确、有效、相容
层次模型
  • 结构表示实体之间联系
  • 树由结点连线组成
    • 结点:实体型
    • 连线:两实体型间的一对多联系
  • 树的特性
    • 每棵树有且仅有一个结点无父结点,称为树的根
    • 树中的其它结点都有且仅有一个父结点
  • 层次模型的特点
    • 结构简单,易于实现
    • 支持的联系种类太少
      • 只支持二元一对多联系
      • 只允许实体集间的一种联系,不支持实体集间的多种联系
    • 数据操纵不方便
      • 子结点的存取只能通过父结点来进行
      • 插入、删除复杂,父结点的删除导致子结点的删除,丢失必要的信息
  • 代表产品:IBM 的 IMS 数据库1969 年研制成功
  • IMS 的数据存储
    • 邻接法:自顶向下、自左向右排列(层次遍历
    • 层次序列法:自顶向下、自左向右链接(中序遍历
    • 子女-兄弟指引元法:指向最大的子女,指向最近的兄弟(每个结点包括数据域、两个指针)
网状模型
  • 是一个满足下列条件的有向图
    • 可以有一个以上的结点无父结点
    • 至少有一个结点有多于一个的父结点(排除树)
  • 存储结构
    • 通过指针表达联系
  • 特点
    • 表达的联系种类丰富
    • 性能良好,存取效率高
    • 结构复杂,语言复杂
  • 典型代表:IDMS,IMAGE
关系模型
  • 二维表来表示实体及其相互联系
  • 特点
    • 简单:表的概念直观、单一,用户易理解
    • 非过程化的数据请求:数据请求可以不指明路径
    • 数据独立性高:用户只需提出”做什么”,无须说明 “怎么做”
    • 坚实的理论基础:(曾经的)效率低
面向对象模型
  • 嵌套表:用嵌套表表示复杂实体(我的类型我定义)
    • 平面表:把嵌套表展开

数据库模式

元数据

  • 元数据(meta-data):描述数据的数据
    • 描述数据的含义和性质,以便更好地理解、管理和使用数据的数据,信息检索的入口
  • 例子
数据 元数据
数据库概论 课程名
《数据库系统概念》 参考教材

数据库模式

  • 模式:数据的抽象,数据的描述
    • 模式:数据管理的基石
  • 数据字典:存取和管理数据的依据
    • 对于数据模型中的数据对象或者项目的描述的集合

实例与模式的关系

  • 例子
1
2
3
4
5
class person{
string name;
string address;
};
person TOM;
  • TOM 是变量
  • person 是其类型
  • TOM 在某时刻的实例

数据库模式的分级设计

  • Why
    • 提高数据的物理独立性逻辑独立性
    • 将数据库的用户观点(用户看到的数据库)与数据库的物理方面(实际存储的数据库)区分开来
三级模式
  • 由 CODASYL 美国数据系统语言协商会提出
  • 三级模式:外模式模式存储模式
  • 三级模式之间有两级映象

  • 外模式(Sub-Schema)
    • 用户的数据视图
    • 数据的局部逻辑结构模式的子集
  • 模式(Schema)
    • 所有用户的公共数据视图
    • 数据库中全体数据的全局逻辑结构特性的描述
  • 内模式(Storage Schema)
    • 存储模式,数据的物理结构存储方式
    • 位置、压缩、分区、合并、索引
两级模式映像
  • 外模式 / 模式映象
    • 定义某个外模式和模式之间的对应关系
    • 映象定义通常包含在各外模式
    • 当模式改变时,修改外模式 / 模式映象,使外模式保持不变,从而应用程序可以保持不变,称为数据的逻辑独立性
  • 模式 / 内模式映象
    • 定义数据逻辑结构与存储结构之间的对应关系
    • 存储结构改变时,修改模式 / 内模式映象,使模式保持不变,从而应用程序可以保持不变,称为数据的物理独立性

数据库系统的构成

几个相关概念

  • 数据库
    • 数据的集合
    • 由 DBMS 统一管理,多用户共享
  • 数据库管理系统 DBMS
    • 系统软件,对数据库进行统一管理控制
  • 数据库系统
    • 带有数据库的整个计算机系统,包括硬件、软件、数据、人员

DBMS 的层次结构

DBMS 的数据定义功能

  • DDL 语言
    • Data Description Language
    • 描述外模式、模式、内模式(源模式)
  • 模式翻译程序
    • 把源模式翻译成目标模式,存入数据字典中
    • 源模式 --(模式翻译程序)-- 目标模式(保存在数据字典中)

DBMS 的数据存取功能

  • DML 语言
    • Data manipulation Language
    • 对数据库进行检索、插入、修改、删除
  • DML 类型
    • 宿主型:DML不独立使用,嵌入到高级语言(主语言)程序中使用
    • 自含型:独立使用,交互式命令方式
  • DML 语句执行方式
    • 宿主型:预编译和增强编译
    • 自含型:解释执行

DBMS的数据控制功能

  • 数据库运行管理
    • 并发控制、存取控制、完整性约束条件检查和执行,日志组织和管理,事务管理和自动恢复
  • 数据组织存储和管理
    • 用户数据、索引、数据字典的组织、存储和管理,包括文件结构、存取方式、数据之间联系的实现
  • 数据库建立和维护功能
    • 数据的装入、转换、卸出
    • 数据库的转储、恢复、性能监视和分析

数据库系统的用户

  • 最终用户
    • 通过应用系统的用户接口(菜单等)使用数据库
  • 应用程序员
    • 通过应用系统的用户接口(菜单等)使用数据库
  • 系统分析员
    • 负责应用系统的需求分析和规范定义,确定系统软硬件配置,参与数据库模式设计
  • 数据库管理员 DBA
    • 负责数据库的全面管理和控制

数据库系统的用户界面

  • 面向浏览器的基于菜单的界面
  • 基于表单的界面
  • 图形用户界面
  • 自然语言界面
  • 语音输入和输出
  • 面向DBA的界面

DBA 的职责

  • 建库
    • 确定模式、外模式、存储结构、存取策略
    • 负责数据的整理和装入
  • 用库
    • 定义完整性约束条件
    • 规定数据的保密级别、用户权限
    • 监督和控制数据库的运行情况
    • 制定后援和恢复策略,负责故障恢复
  • 改进
    • 监督分析系统的性能(空间利用率,处理效率)
    • 数据库重组织,物理上重组织,以提高性能
    • 数据库重构造,设计上较大改动,模式和内模式修改

数据管理能力成熟度评估模型

  • DCMM:Data Capability Maturity Model

数据库的若干研究方向

  • 新的数据库管理系统
  • 新的数据库应用
  • 特种数据库
  • 领域数据库

新的数据模型

  • 面向对象数据库
  • 对象-关系数据库
  • XML数据库
  • 图数据库
  • 序列数据库
  • 数组数据库
  • 矩阵数据库

新的体系结构

  • 分布式数据库
    • 网络+数据库,对等(P2P)数据库,集群
  • 并行数据库
    • 数据划分、操作并行
  • NoSQL 数据库
    • 互联网应用:海量、快速、多样
    • CAP、存储模型、分区、容错、map/reduce
  • 数据流管理系统
    • 实时监视:传感网络、股市行情、交通状况…

新的硬件平台

  • 主存数据库
  • 闪存数据库
  • 嵌入数据库
  • GPU,FPGA,多核处理器

新的数据库应用

  • 商业智能
    • 从事务型操作转向分析型操作
    • 决策支持:数据仓库、数据挖掘、OLAP
  • 信息集成
    • “turn the Web into database”
    • 各式信息门户、知识图谱
  • 社会测量
    • 社会媒体,社会网络,推荐系统

移动数据库

  • 分布式数据库的扩展
  • 传感网络、物联网
  • 手机、汽车、PDA...
  • 信息访问的即时性和就地性
  • 移动:数据库+无线网络(偶尔断连)

主动数据库

  • 被动服务命令驱动
  • 主动服务事件驱动
  • 实时监控系统:异常情况主动处理 ...
  • 信息推送系统:RSS 新闻聚合服务
  • 大规模触发器、复杂事件处理

演绎数据库

  • 人工智能 + 数据库
  • 专家系统
  • 事实+推理规则
  • 规则计算:递归查询

时态数据库

  • 快照数据库:只记录实体的当前信息
  • 管理被处理事件的历史性信息
  • 管理数据库系统中元事件的时态信息
  • 数据仓库的前驱?

模糊数据库

  • 处理模糊对象:高矮胖瘦、好恶优劣…
  • 模糊数学:L.A.Zadeh
  • 模糊隶属函数
  • 模糊专家系统,模拟计算 ......

实时数据库

  • 对数据的 “定时” 存取和对 “短暂有效” 数据的存取
  • 工厂生产过程控制、证券交易、雷达跟踪 ...
  • 给数据和事务安装定时装置
  • 基于优先级调度事务的执行

概率数据库

  • 关键之一:概率查询的合理定义
  • 关键之二:对 Possible world 的高效搜索算法

领域数据库

  • 生物数据库
    • 序列、图、高维数据…
  • 空间数据库
    • 几何数据、空间查询
  • 多媒体数据库
  • 天文数据库:虚拟天文台
  • CAD数据库
    • 面向对象数据库

DBMS 的运行过程

  • Step1:用户向 DBMS 发出调用数据库数据的命令
  • Step2:DBMS 对命令进行语法检查、语义检查、存取权限检查决定是否执行该命令
  • Step3:DBMS 执行查询优化,把命令转换为一串单记录的存取操作序列
  • Step4:执行存取操作序列(反复执行以下各步,直至结束)
  • Step5:DBMS 首先在缓冲区内查找记录,若找到转10,否则转6
  • Step6:DBMS 查看存储模式,决定从哪个文件存取哪个物理记录
  • Step7:DBMS 根据 6 的结果,向操作系统发出读取记录的命令
  • Step8:操作系统执行读取数据的命令
  • Step9:操作系统数据数据库存储区送到系统缓冲区
  • Step10:DBMS 根据用户命令数据字典的内容导出用户所要读取的数据格式
  • Step11:DBMS 将数据记录从系统缓冲区传送到用户工作区
  • Step12:DBMS将执行状态信息返回给用户

补充内容

  • 多维数组的应用场景
    • 联机分析处理、多维分析
      • 通过关系数据库的多表连接实现,效率比较低
      • 多维数组,数组定位快,但是比较稀疏
    • 多维数组体现了局部性
      • 存储时空数据
      • 通常出现在科研领域:遥感数据、图像数据等
  • 搜索引擎查询和数据库查询的区别
    • 数据库查询:局部化查询