很显然,E-R图可以准确地描述现实世界的事物及事物之间的联系,那么这些实体与联系通过计算如何来实现呢?实体以记录为基本单位存储在计算机内部。接下来将讨论联系如何通过计算机表示。
数据库常用的逻辑数据模型
层次模型
数据结构:以一条包含实体所有属性值的记录为基本单位,记录之间的联系以树型结构来表示
- 存储结构:
- 邻接表法(前序穿越顺序存储)
- 链接法(子女-兄弟链接法,层次序列链接法)
- 存储结构:
操作与约束:
- 查询(Query):通常需要从根结点出发做树的遍历
- 插入(Insert):若无双亲结点则无法进行
- 删除(Delete):删除某一结点则必须将子树删除
- 修改(Update):修改必须保证数据的一致性
特点
- 结点的双亲是唯一的
- 只能直接处理一对多(一对一)的实体联系
- 遍历查看时,才能显出它的全部意义
- 没有一个子女记录值能够脱离双亲记录值而独立存在
多对多在层次模型里面的处理方法
冗余结点法
冗余结点法可以随意改变结点的存储位置,但增加了 额外存储空间,容易造成数据的不一致性
虚拟结点法
虚拟结点法改变结点存储位置后必须修改虚拟结点的 指针,但不会产生数据的不一致性
优缺点
- 优点:层次数据模型简单,对具有一对多的层次关系的部门描述自然、直观,容易理解
- 性能优于关系模型,不低于网状模型
- 层次数据模型提供了良好的完整性支持
缺点:
- 多对多联系表示不自然
- 对插入和删除操作的限制多
- 查询子女结点必须通过双亲结点
网状模型
数据结构
- 数据结构是网
- 记录之间的联系用连线表达
- 联系必须标注名称
- 采用链式存储结构
多对多关系的实现
操作与约束
- 支持码(对应实体标识符)
- 双亲结点与子女结点间有一对多的联系
- 支持双亲结点与子女结点间的某些约束
优缺点
- 优点
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲
- 具有良好的性能,存取效率较高、
- 缺点
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越 来越复杂,不利于最终用户掌握
- DDL、DML语言复杂,用户不容易使用
- 优点
关系模型
- 数据结构
- 存储结构:实体和联系都作为数据文件来存储
- 实体型:直接用关系(表)表示。
- 属性:用属性名表示。
- 一对一联系:隐含在实体对应的关系中。
- 一对多联系:隐含在实体对应的关系中。
- 多对多联系:直接用关系表示。
- 存储结构:实体和联系都作为数据文件来存储
- 操作与约束
- 操作:查询、插入、删除、修改,这些数据操作都是集合操作,操作对象和操作结果都是关系,即若干元组的集合
- 约束:实体完整性、参照完整性、用户定义完整性
- 优缺点
- 优点
- 建立在严格的数学概念的基础上 (集合)
- 概念单一。数据结构简单、清晰,用户易懂易用
- 实体和各类联系都用关系来表示。
- 对数据的检索结果也是关系。
- 关系模型的存取路径对用户透明
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作
- 缺点:
- 存取路径对用户透明导致查询效率往往不如非关系数据 模型。为提高性能,必须对用户的查询请求进行优化,增加 了开发数据库管理系统的难度
- 优点
其他结构:
还有其他逻辑数据结构,比如面向对象模型,对象关系模型,这里暂且不讨论
数据库系统的模式
基本概念
- 型(Type):对某一类数据的结构和属性的说明
- 值(Value):是型的一个具体赋值
- 例子:
- 记录型:(学号,姓名,性别,系别,年龄,籍贯)
- 该记录型的一个记录值:记录型: (学号,姓名,性别,系别,年龄,籍贯)
- 模式(Schema)
- 数据库逻辑结构和特征的描述
- 反映的是数据的结构及其联系
- 是型的描述,是相对稳定的
- 模式的一个实例(Instance)
- 模式的一个具体值
- 反映数据库某一时刻的状态
- 同一个模式可以有很多实例
- 实例随数据库中的数据的更新而变动
数据库系统的三级模式结构
三级模式是对数据的三个抽象级别
模式:
- 模式(Schema,也称逻辑模式)
- 数据库中全体数据的逻辑结构和特征的描述
- 所有用户的公共数据视图,综合了所有用户的需求
- 一个数据库只有一个模式
- 模式的地位:是数据库系统模式结构的中间层
- 与数据的物理存储细节和硬件环境无关
- 与具体的应用程序、开发工具及高级程序设计语言无关
- 模式的定义
- 数据的逻辑结构(数据项的名字、类型、取值范围等)
- 数据之间的联系
- 数据有关的安全性、完整性要
外模式:
- 外模式(External Schema,也称子模式或用户模式)
- 数据库用户(包括应用程序员和最终用户)使用的局部数据 的逻辑结构和特征的描述
- 数据库用户的数据视图,是与某一应用有关的数据的逻辑表 示
- 外模式的地位:介于模式与应用之间
- 模式与外模式的关系:一对多
- 外模式通常是模式的子集
- 一个数据库可以有多个外模式。反映了不同的用户的应用需 求、看待数据的方式、对数据保密的要求
- 对模式中同一数据,在外模式中的结构、类型、长度、保密 级别等都可以不同
- 外模式与应用的关系:一对多
- 同一外模式也可以为某一用户的多个应用系统所使用,
- 但一个应用程序只能使用一个外模式。
- 外模式的用途
- 保证数据库安全性的一个有力措施。
- 每个用户只能看见和访问所对应的外模式中的数据
内模式
- 内模式(Internal Schema,也称存储模式)
- 是数据物理结构和存储方式的描述
- 是数据在数据库内部的表示方式
- 记录的存储方式(顺序存储,按照B树结构存储,按 hash方法存储)
- 索引的组织方式
- 数据是否压缩存储
- 数据是否加密
- 数据存储记录结构的规定
- 一个数据库只有一个内模式
数据库的二级映像
二级映象在DBMS内部实现三级模式结构的联系和转换
数据的逻辑独立性——应用程序(外模式)与数据库的 逻辑结构(模式)是相互独立的。即数据的逻辑结构发生改变,应用程序不用改变
外模式/模式映象是为了保证数据的逻辑独立性
外模式/模式映象定义了外模式与模式之间的对应 关系
当模式改变时,数据库管理员只需修改有关的外模 式/模式映象,使外模式保持不变
应用程序是依据数据的外模式编写的,从而应用程 序不必修改,保证了数据与程序的逻辑独立性,简 称数据的逻辑独立性
数据的物理独立性——应用程序(外模式)与存储在磁盘上的数据库(文件)中的存储结构(内模式)是相互独立的。 即数据文件的组织方式改变不需要修改应用程序
模式/内模式映象的用途 ——保证数据的物理独立性
模式/内模式映象定义了数据全局逻辑结构与存储 结构之间的对应关系
当数据库的存储结构改变了(例如选用了另一种存 储结构),数据库管理员修改模式/内模式映象, 使模式保持不变
应用程序是依据数据的外模式编写的,从而应用程 序不必修改,保证了数据与程序的物理独立性,简 称数据的物理独立性。
总结
- 层次模型:树型结构,多对多联系需要拆分,联系使用指针表达
- 网状模型:网状结构,多对多联系需要拆分,联系使用指针表达
- 关系模型:基于关系,联系直接用关系表示、
- 三级模式与两级映像
- 模式:全体数据的逻辑结构和特征的描述
- 外模式:局部数据的逻辑结构和特征的描述
- 内模式:数据的物理结构和存储方式的描述
- 外模式/模式映象:逻辑独立性
- 模式/内模式映像:物理独立性