用计算机来实现实体(Entity)和联系(Relationship)

很显然,E-R图可以准确地描述现实世界的事物及事物之间的联系,那么这些实体与联系通过计算如何来实现呢?实体以记录为基本单位存储在计算机内部。接下来将讨论联系如何通过计算机表示。

数据库常用的逻辑数据模型

层次模型

  • 数据结构:以一条包含实体所有属性值的记录为基本单位,记录之间的联系以树型结构来表示

    • 存储结构:
      • 邻接表法(前序穿越顺序存储)
      • 链接法(子女-兄弟链接法,层次序列链接法)
  • 操作与约束:

    • 查询(Query):通常需要从根结点出发做树的遍历
    • 插入(Insert):若无双亲结点则无法进行
    • 删除(Delete):删除某一结点则必须将子树删除
    • 修改(Update):修改必须保证数据的一致性
  • 特点

    • 结点的双亲是唯一的
    • 只能直接处理一对多(一对一)的实体联系
    • 遍历查看时,才能显出它的全部意义
    • 没有一个子女记录值能够脱离双亲记录值而独立存在
  • 多对多在层次模型里面的处理方法

    • 冗余结点法

      冗余结点法可以随意改变结点的存储位置,但增加了 额外存储空间,容易造成数据的不一致性

    • 虚拟结点法

      虚拟结点法改变结点存储位置后必须修改虚拟结点的 指针,但不会产生数据的不一致性

  • 优缺点

    • 优点:层次数据模型简单,对具有一对多的层次关系的部门描述自然、直观,容易理解
    • 性能优于关系模型,不低于网状模型
    • 层次数据模型提供了良好的完整性支持
  • 缺点:

    • 多对多联系表示不自然
    • 对插入和删除操作的限制多
    • 查询子女结点必须通过双亲结点

网状模型

  • 数据结构

    • 数据结构是网
    • 记录之间的联系用连线表达
    • 联系必须标注名称
    • 采用链式存储结构
  • 多对多关系的实现

  • 操作与约束

    • 支持码(对应实体标识符)
    • 双亲结点与子女结点间有一对多的联系
    • 支持双亲结点与子女结点间的某些约束
  • 优缺点

    • 优点
      • 能够更为直接地描述现实世界,如一个结点可以有多个双亲
      • 具有良好的性能,存取效率较高、
    • 缺点
      • 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越 来越复杂,不利于最终用户掌握
      • DDL、DML语言复杂,用户不容易使用

关系模型

  • 数据结构
    • 存储结构:实体和联系都作为数据文件来存储
      • 实体型:直接用关系(表)表示。
      • 属性:用属性名表示。
      • 一对一联系:隐含在实体对应的关系中。
      • 一对多联系:隐含在实体对应的关系中。
      • 多对多联系:直接用关系表示。
  • 操作与约束
    • 操作:查询、插入、删除、修改,这些数据操作都是集合操作操作对象和操作结果都是关系,即若干元组的集合
    • 约束:实体完整性、参照完整性、用户定义完整性
  • 优缺点
    • 优点
      • 建立在严格的数学概念的基础上 (集合)
      • 概念单一。数据结构简单、清晰,用户易懂易用
        • 实体和各类联系都用关系来表示。
        • 对数据的检索结果也是关系。
      • 关系模型的存取路径对用户透明
      • 具有更高的数据独立性,更好的安全保密性
      • 简化了程序员的工作和数据库开发建立的工作
    • 缺点:
      • 存取路径对用户透明导致查询效率往往不如非关系数据 模型。为提高性能,必须对用户的查询请求进行优化,增加 了开发数据库管理系统的难度

其他结构:

还有其他逻辑数据结构,比如面向对象模型,对象关系模型,这里暂且不讨论

数据库系统的模式

基本概念

  • 型(Type):对某一类数据的结构和属性的说明
  • 值(Value):是型的一个具体赋值
  • 例子:
    • 记录型:(学号,姓名,性别,系别,年龄,籍贯)
    • 该记录型的一个记录值:记录型: (学号,姓名,性别,系别,年龄,籍贯)
  • 模式(Schema)
    • 数据库逻辑结构和特征的描述
    • 反映的是数据的结构及其联系
    • 是型的描述,是相对稳定的
  • 模式的一个实例(Instance)
    • 模式的一个具体值
    • 反映数据库某一时刻的状态
    • 同一个模式可以有很多实例
  • 实例随数据库中的数据的更新而变动

数据库系统的三级模式结构

三级模式是对数据的三个抽象级别

模式:

  • 模式(Schema,也称逻辑模式)
    • 数据库中全体数据的逻辑结构和特征的描述
    • 所有用户的公共数据视图,综合了所有用户的需求
  • 一个数据库只有一个模式
  • 模式的地位:是数据库系统模式结构的中间层
  • 与数据的物理存储细节和硬件环境无关
  • 与具体的应用程序、开发工具及高级程序设计语言无关
  • 模式的定义
  • 数据的逻辑结构(数据项的名字、类型、取值范围等)
  • 数据之间的联系
  • 数据有关的安全性、完整性要

外模式:

  • 外模式(External Schema,也称子模式或用户模式)
    • 数据库用户(包括应用程序员和最终用户)使用的局部数据 的逻辑结构和特征的描述
    • 数据库用户的数据视图,是与某一应用有关的数据的逻辑表 示
  • 外模式的地位:介于模式与应用之间
  • 模式与外模式的关系:一对多
    • 外模式通常是模式的子集
    • 一个数据库可以有多个外模式。反映了不同的用户的应用需 求、看待数据的方式、对数据保密的要求
    • 对模式中同一数据,在外模式中的结构、类型、长度、保密 级别等都可以不同
  • 外模式与应用的关系:一对多
  • 同一外模式也可以为某一用户的多个应用系统所使用,
  • 但一个应用程序只能使用一个外模式。
  • 外模式的用途
  • 保证数据库安全性的一个有力措施。
  • 每个用户只能看见和访问所对应的外模式中的数据

内模式

  • 内模式(Internal Schema,也称存储模式)
    • 是数据物理结构和存储方式的描述
    • 是数据在数据库内部的表示方式
      • 记录的存储方式(顺序存储,按照B树结构存储,按 hash方法存储)
      • 索引的组织方式
      • 数据是否压缩存储
      • 数据是否加密
      • 数据存储记录结构的规定
  • 一个数据库只有一个内模式

数据库的二级映像

二级映象在DBMS内部实现三级模式结构的联系和转换

  • 数据的逻辑独立性——应用程序(外模式)与数据库的 逻辑结构(模式)是相互独立的。即数据的逻辑结构发生改变,应用程序不用改变

  • 外模式/模式映象是为了保证数据的逻辑独立性

    • 外模式/模式映象定义了外模式与模式之间的对应 关系

    • 当模式改变时,数据库管理员只需修改有关的外模 式/模式映象,使外模式保持不变

    • 应用程序是依据数据的外模式编写的,从而应用程 序不必修改,保证了数据与程序的逻辑独立性,简 称数据的逻辑独立性

  • 数据的物理独立性——应用程序(外模式)与存储在磁盘上的数据库(文件)中的存储结构(内模式)是相互独立的。 即数据文件的组织方式改变不需要修改应用程序

  • 模式/内模式映象的用途 ——保证数据的物理独立性

    • 模式/内模式映象定义了数据全局逻辑结构与存储 结构之间的对应关系

    • 当数据库的存储结构改变了(例如选用了另一种存 储结构),数据库管理员修改模式/内模式映象, 使模式保持不变

    • 应用程序是依据数据的外模式编写的,从而应用程 序不必修改,保证了数据与程序的物理独立性,简 称数据的物理独立性。

总结

  • 层次模型:树型结构,多对多联系需要拆分,联系使用指针表达
  • 网状模型:网状结构,多对多联系需要拆分,联系使用指针表达
  • 关系模型:基于关系,联系直接用关系表示、
  • 三级模式与两级映像
    • 模式:全体数据的逻辑结构和特征的描述
    • 外模式:局部数据的逻辑结构和特征的描述
    • 内模式:数据的物理结构和存储方式的描述
    • 外模式/模式映象:逻辑独立性
    • 模式/内模式映像:物理独立性