绪论
数据模型
数据模型是数据库系统的核心和基础。它是现实世界的模拟。
三要素:数据结构、数据操作、数据约束
概念模型
信息模型,按用户的观点来对数据和信息建模。
- 实体:客观存在并可相互区别的事物
- 属性:实体所具有的某一特性
- 码:唯一标识实体的属性集
- 实体型:
逻辑模型和物理模型
- 逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型···
- 物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或者是磁带上的存储方式和存取方法。
客观对象的抽象过程–两步抽象
1、客观对象抽象为概念模型
2、把概念模型转换为某一DBMS支持的数据模型
常用的数据模型
- 非关系模型
- 层次模型
- 网状模型
- 关系模型
- 面向对象模型
- 对象关系模型
层次模型
使用树状结构来表示各类实体以及实体间的联系。
要求:
- 有且只有一个结点没有双亲结点,这个结点称为根节点
- 根以外的其他结点有且只有一个双亲结点
根据上述的要求,可以确认层次模型其实是父与子之间一对多的联系。每个结点表示的是记录类型,记录类型之间的联系用结点之间的连线表示。
层次模型的特点
- 结点的双亲是唯一的
- 只能直接处理一对多的实体联系
【如果一个结点有多个双亲结点的话,只能通过引入冗余数据或者创建非自然的数据结构来解决】 - 每个记录类型可以定义一个排序字段(码字段)
【方便查找,并且查找效率高】 - 任何记录值只有按其路径查看时,才能显出它的全部意义
【可以直观的知道其一脉相承的父子关系,结构严密】 - 没有一个子女记录值能够脱离双亲记录值而独立存在
【例如:插入操作时,要先找到其父结点值;删除操作时,其子结点会一并被删除】 - 查询子女结点必须通过双亲结点
多对多联系在层次模型中的表示
基本思路是:将多对多联系分解成一对多联系
冗余结点法:就是将存在多对多联系的结点拆分成一对多联系的模式。会产生多个根节点,同时该多个根结点也表示子结点。
虚拟结点法:就是将存在多对多联系的结点拆分,产生多个根结点。每个根节点连接一个虚拟结点【该虚拟结点就是上述拆开的子节点】
增删查改与完整性约束
- 无相应的双亲结点值就不能插入子女结点值
- 如果删除双亲结点值,则相应的子女结点值也会被删除
- 更新操作时,应更新所有相应记录,以保证数据的一致性
层次数据模型的存储结构
邻接法
按照层次树前序遍历将所有的记录值一次邻接存储,通过物理空间的位置相邻来实现层次顺序
链接法
用指针来反映数据之间的层次联系
网状模型
要求:
- 允许一个以上的结点无双亲结点
- 一个结点可以有多个双亲结点
层次模型可以看成是网状模型的一个特例
关系模型
用二维表来表示实体及其联系:行、列
用表格表示实体集,用列表示属性,表结构表示实体的型
用表间的特定的冗余信息表示实体间的联系(主键和外键)
行、列是无序的
列不可再分
没有重复行
关系规范化要求:关系的每一个分量必须是一个不可分的数据项 不允许表中还有表
关系模型的存储结构
实体及实体间的联系都用表来表示
表以文件形式存储
数据库系统结构
在数据模型中有“型”和“值”的概念。型是指对某一类数据的结构和属性的说明。值是型的一个具体赋值
数据库系统内部的体系结构:采取三级模式结构
数据库系统外部的体系结构:
- 单用户结构
- 主从式结构
- 分布式结构
- 客户|服务器
- 浏览器|应用服务器|数据库服务器多层结构
数据库系统的三级模式结构
模式(逻辑模式)
对数据库中的全部数据的逻辑结构和特征的描述,它仅仅涉及到的是型的描述,不涉及到具体的值。
模式的定义:
- 数据的逻辑结构(包括了数据项的名字、类型、取值范围···)
- 数据之间的联系
- 数据有关的安全性、完整性要求
模式(schema):反映的是数据的结构及其联系
实例(instance):模式的一个具体值,实例会随着数据库中的数据的更新而变动
模式是相对稳定的,而实例是相对变动的
一个数据库只有一个模式,可以将模式视为是数据库数据在逻辑级上的视图。
==模式是数据库系统模式结构的中间层==
- 与数据的物理存储细节和硬件环境无关
- 与具体的应用程序、开发工具及高级程序设计语言无关
外模式(子模式、用户模式)
数据库用户的数据视图,是用户使用的局部数据的逻辑结构和特征的描述
==外模式介于模式和应用之间==
- 模式与外模式的关系:一对多
- 外模式通常是模式的子集
- 一个数据库可以拥有多个外模式。
- 对模式中同一数据,在外模式中的结构、类型、长度、保密级别都不同(这倒是让我想起了在同一个项目下使用不同数据库存储不同的数据)
- 外模式与应用的关系:一对多
- 同一外模式可以为某个用户的多个应用系统所使用
- 但是一个应用程序只能使用一个外模式
外模式的用途
- 保证数据库安全性
- 每个用户只能看见和访问所对应的外模式中的数据
内模式(存储模式)
是数据物理结构和存储方式的描述(不同数据库的内部实现方式)
是数据在数据库内部的表示方式
- 记录的存储方式(顺序存储、按照B树结构存储、按照hash方式存储)
- 索引的组织方式
- 数据是否压缩存储
- 数据是否加密
- 数据存储记录结构的规定
一个数据库只有一个内模式
数据库的二级映像功能与数据独立性
二级映像在DBMS内部实现这三个抽象层次的联系和转换
- 外模式|模式映像
- 模式|内模式映像
外模式|模式映象
定义外模式与模式之间的对应关系。映象定义通常包含在各自外模式的描述中。
模式描述的是数据的全局逻辑结构;外模式描述的是数据的局部逻辑结构。
同一个模式下可以有任意多个外模式。
保证数据的逻辑独立性:应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性。
模式|内模式映象
定义了数据全局逻辑结构与存储结构之间的对应关系。通常包含在模式描述中。
数据库中模式|内模式映象是唯一的。
保证了数据的物理独立性:当数据库的存储结构改变了,只要修改模式|内模式映象使得模式保持不变,应用程序就不会受到影响。
数据库模式
- 全局逻辑结构
- 设计数据库模式结构时应该首先确定数据库的逻辑模式
数据库的内模式
- 依赖其全局逻辑结构
- 独立于数据库的用户视图(外模式)
- 独立于具体的存储设备
- 将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,提高空间使用率。
数据库的外模式
- 面向的是具体的应用程序
- 定义在逻辑模式之上
- 独立于存储模式和存储设备
- 当应用需求发生较大的变化时,相对应外模式不能满足其视图要求时,该外模式就得做出相应改动。
- 设计外模式时应充分考虑到应用的扩展性
特定的应用程序
- 是在外模式描述的数据结构上编制的
- 依赖于特定的外模式
- 与数据库的模式和存储结构独立
- 不同的应用程序有时可以共用一个外模式
数据库系统的组成
硬件平台及数据库
足够大的内存
存放操作系统、数据库管理系统的核心模块、数据缓冲区和应用程序
足够大的外存
可以用作数据的备份
较高的通道能力,提高数据传送率
软件
DBMS
数据库管理系统是为数据库的建立、使用和维护配置的系统软件
支持DBMS运行的操作系统
与数据库接口的高级语言和配套的编译系统
以DBMS为核心的应用开发工具
为特定应用环境开发的数据库应用系统
人员
数据库管理人员DBA
系统分析员和数据库设计人员
应用程序员
用户
一些问题
文件系统和数据库系统都能管理数据,也都支持通过应用程序访问数据,两种方式在数据独立性上有何不同?
数据管理文件系统阶段和数据库系统阶段“数据独立性”有何不同?
在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段,其中数据独立性最高的阶段是数据库系统。数据库阶段用数据模型表示复杂的数据,有较高的数据独立性。数据库系统为用户提供了方便的用户接口,用户可使用查询语言或终端命令操作数据库,也可以用程序方式操作数据库。数据库管理系统提供了数据控制功能。
文件系统和数据库系统之间的区别:
(1) 文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据;
(2) 文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离;
(3) 文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据;
(4) 文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。
文件系统和数据库系统之间的联系:
(1) 均为数据组织的管理技术;
(2) 均由数据管理软件管理数据,程序与数据之间用存取方法进行转换;
(3) 数据库系统是在文件系统的基础上发展而来的。
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
数据库系统在管理数据时采用的分层管理的思想,也就是三级模式两级映像的架构,这么做起到了什么作用?
采用三级模式和二级映像的原因:
1)保证了数据的独立性。将模式与内模式、模式与外模式分开保证了数据的物理独立性和逻辑独立性
2)简化了用户接口,按照外模式编写应用程序或敲入命令,不需了解内部结构
3)有利于数据共享,不同应用可共用一个外模式,减少了数据冗余
4)有利于数据的安全保密,在外模式限定下进行操作,不能对限定数据操作,保证了其他数据的安全