1.2 数据模型

思维导图:

前言:

**1.2.1 什么是模型**

- **定义**:模型是对现实世界中某个对象特征的模拟和抽象。例如,一张地图、建筑设计沙盘或精致的航模飞机都可以视为具体的模型。

- **具体模型与现实生活**:具体模型可以很容易地让人联想到现实生活中的事物。例如,航模飞机不仅模拟了飞机的起飞、飞行和降落,还抽象了其基本特征,如机头、机身、机翼和机尾。

**1.2.2 数据模型的定义**

- **数据模型**:数据模型也是一种模型,主要对现实世界中的数据特征进行抽象。具体来说,数据模型用于描述数据、组织数据和操作数据。

- **为什么需要数据模型**:计算机无法直接处理现实世界中的具体事物,所以需要先将这些事物数字化。数据模型是这一过程中用来表示和处理现实世界中的人、物、活动和概念的工具。简而言之,数据模型是对现实世界的模拟。

**1.2.3 数据模型与数据库系统**

- **基于数据模型的数据库系统**:现存的所有数据库系统都是基于某种数据模型构建的。

- **数据模型的重要性**:数据模型是数据库系统的核心和基础。为了更好地学习和理解数据库,首先需要了解数据模型的基本概念。

**总结**:数据库技术沿着数据模型的主线发展。数据模型为现实世界中的对象和概念提供了一个抽象的、数字化的表示方式,是数据库系统的基石。

**1.2.1 两类数据模型**

---

**数据模型的要求**:

**- **真实性**:真实地模拟现实世界。

  • **可理解性**:为人容易理解。
  • **实现性**:易于在计算机上实现。**

>由于难以全面满足上述要求,根据不同的使用对象和应用目的,数据库系统中通常会采用不同的数据模型。

---

**模型的分类**:

**1. **概念模型(Conceptual Model)**:

  • 也称为信息模型。
  • 从用户的角度对数据和信息进行建模。
  • 主要用于数据库设计阶段。**

**2. **逻辑模型和物理模型**:

  • **逻辑模型**:
  • 包括层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型和半结构化数据模型等。
  • 从计算机系统的角度对数据进行建模。
  • 主要用于数据库管理系统的实现。
  • **物理模型**:
  • 数据的底层抽象,描述数据在系统内部的表示和存取方式。
  • 描述数据在存储介质(如磁盘、磁带)上的存储和访问方式。
  • 面向计算机系统,其实现是DBMS的任务。**

---

**抽象过程**:

1. 从**现实世界**中抽象出信息结构(不依赖于特定的计算机系统) → **概念模型**。
2. 将概念模型转换为计算机上某个DBMS支持的数据模型 → **逻辑/物理模型**。

![抽象过程示意图](图1.7)

*图1.7 现实世界中客观对象的抽象过程*

---

**模型转换责任**:

**- 从**现实世界**到**概念模型**:由数据库设计人员完成。

  • 从**概念模型**到**逻辑模型**:可以由数据库设计人员完成,也可以使用数据库设计工具辅助完成。
  • 从**逻辑模型**到**物理模型**:主要由数据库管理系统完成。**

---

**后续内容预告**:

**- 接下来将首先介绍概念模型和数据模型的组成要素。

  • 然后,将深入探讨三个主要的数据模型。**

---

**总结**:数据模型是数据库系统的核心和基础。不同阶段和目的下需要采用不同的数据模型,从而更好地模拟和实现现实世界中的数据结构和组织方式。

1.2.2 概念模型

**- **定义与重要性**:

  • **桥梁**:概念模型是现实世界与机器世界的中介层。
  • **用途**:用于信息世界的建模,为数据库设计人员提供工具,也是他们与用户之间的交流媒介。
  • **特点**:需具有强大的语义表达能力,简单、明确、易于用户理解。**

**- **信息世界的基本概念**:

  1. **实体 (Entity)**:客观存在的独特事物,例如一个职工、一个部门等。
  2. **属性 (Attribute)**:描述实体的特性,例如学生的学号、姓名等。
  3. **码 (Key)**:唯一标识实体的属性集。
  4. **实体型 (Entity Type)**:具有相同属性的实体的特性和性质的抽象表示。
  5. **实体集 (Entity Set)**:同一种类型实体的集合,例如所有学生。
  6. **联系 (Relationship)**:描述实体内部或实体之间的连接。包括一对一、一对多和多对多联系。**

**- **概念模型的表示方法 - 实体-联系方法**:

  • **背景**:PP.S.Chen在1976年提出。
  • **方法**:使用E-R图 (E-R diagram) 描述现实世界的概念模型。
  • **详细讲解**:关于如何从现实世界中抽取实体和联系以及如何建立E-R图将在第7章进行讲解。**

---

这样的笔记格式将重要信息简明扼要地展现出来,有助于复习和快速理解。

1.2.3 数据模型的组成要素

- **定义**:数据模型是一套精确定义的概念,用以描述系统的静态特性、动态特性及完整性约束。

数据模型主要由三部分组成:

**1. **数据结构**:

  • **定义**:描述数据库的组成对象以及对象之间的联系。
  • **内容**:
  • 对象的类型、内容、性质:例如,关系模型中的域、属性、关系等。
  • 数据之间的联系:例如,网状模型中的系型。
  • **重要性**:是描述数据模型性质的关键部分,如层次模型、网状模型和关系模型。
  • **目标**:描述系统的静态特性。**

**2. **数据操作**:

  • **定义**:对数据库对象的实例执行的允许操作及其规则的集合。
  • **种类**:主要包括查询和更新(插入、删除、修改)。
  • **要求**:数据模型应定义操作的确切含义、符号、规则及实现操作的语言。
  • **目标**:描述系统的动态特性。**

**3. **数据的完整性约束条件**:

  • **定义**:是一组完整性规则,用于保证数据的正确性、有效性和一致性。
  • **通用约束**:如关系模型中的实体完整性和参照完整性。
  • **特定约束**:例如,规定学生成绩不及格的科目数和教授的退休年龄。
  • **目的**:数据模型应反映其必须遵循的完整性约束,并提供定义完整性约束的机制。**

1.2.4 常用的数据模型

**概览**:
在数据库领域中,逻辑数据模型主要有以下几种:

1. **层次模型 (Hierarchical Model)**
2. **网状模型 (Network Model)**
3. **关系模型 (Relational Model)**
4. **面向对象数据模型 (Object-Oriented Data Model)**
5. **对象关系数据模型 (Object-Relational Data Model)**
6. **半结构化数据模型 (Semistructured Data Model)**

---

**- **层次模型与网状模型 (Format Models)**:

  • 在20世纪70-80年代初盛行。
  • 两者在使用和实现时都与数据库物理层的复杂结构有关。
  • 逐渐被关系模型取代,但因为很多早期应用是基于它们的,所以某些国家如美国和欧洲国家仍在使用。**

**- **面向对象数据模型**:

  • 20世纪80年代起,面向对象的方法在计算机领域产生了深远影响。
  • 促进了面向对象数据模型的研究和发展。
  • 为了支持面向对象模型,许多关系数据库厂商对关系模型做了扩展,产生了**对象关系数据模型**。**

**- **半结构化数据模型**:

  • 随Internet的发展,Web上的半结构化、非结构化数据变得越来越重要。
  • 产生了以XML为代表的半结构化和非结构化数据模型。**

**- **本章重点**:

  • 主要介绍层次模型、网状模型和关系模型。
  • 新型的数据模型会在第13章中进行详细讨论。**

---

****数据结构的角度**:

  • 数据模型主要由数据结构、数据操作和数据完整性约束条件组成。
  • 在这里,我们重点介绍三种模型的数据结构。**

****格式化模型的特点**:

  • 实体用记录表示,其属性对应于记录的数据项或字段。
  • 实体间的联系转换为记录之间的两两联系。
  • 数据结构的单位是基本层次联系。这意味着两个记录及它们之间的一对多(或一对一)联系。**

---

总结: 数据模型为我们提供了一个框架来思考如何在数据库中表示和组织数据。从层次模型到半结构化数据模型,每种模型都有其特定的应用和优势。在设计数据库时,选择合适的数据模型至关重要,因为它直接影响到数据的组织、存储和检索效率。

1.2.5 层次模型

---

**定义与历史背景**
层次模型是数据库系统中的早期数据模型,其数据组织方式是树形结构。它的典型代表是IBM公司1968年推出的IMS(Information Management System)。这是一个大型的商用数据库管理系统,曾被广泛应用。

---

****1.层次模型的数据结构**

  • **基本特点**
  1. 有且仅有一个无双亲节点的根节点。
  2. 除根节点外的节点有且仅有一个双亲节点。
  • **组织方式**
  • 每个节点代表一个记录类型。
  • 记录类型间的联系用有向边表示,表现为父子之间的一对多关系。
  • 每个记录类型包含多个字段,字段表示实体的属性。
  • 记录类型和字段必须具有唯一的名称。
  • 同一记录类型中各个字段不能同名。
  • 记录类型可以定义排序字段,称为码字段,用于唯一地标识记录值。
  • 层次模型中有兄弟节点和叶节点,兄弟节点共享同一个父节点,而叶节点无子节点。**

**例子**:图1.9展示了一个层次模型,其中有多个节点如R₁、R₂等,它们之间存在层次关系。

---

****2.层次模型的数据操纵与完整性约束**

  • **基本操作**
  1. 查询
  2. 插入
  3. 删除
  4. 更新
  • **完整性约束**
  • 插入操作需要相应的父节点存在。
  • 删除一个父节点会同时删除其所有子节点。**

**例子**:如图1.11所示,删除某个教研室会导致其下的所有教员信息丢失。

---

****3.层次模型的优缺点**

  • **优点**
  1. 数据结构简单,清晰。
  2. 高查询效率,因为记录之间的联系常由指针实现。
  3. 提供良好的完整性支持。
  • **缺点**
  1. 非层次性联系难以表示。
  2. 表示多对多联系或多双亲节点的联系较为困难。
  3. 查询子节点必须通过父节点。
  4. 命令程序化,导致灵活性降低。**

---

**结论**
层次模型适合描述具有一对多的层次联系的实体。其直观性和易理解性是其突出的优点,但在某些复杂的实际应用中,它的局限性也较为明显。

1.2.6 网状模型

---

****简介**:

  • 网状模型反映非层次性的事物联系,解决层次模型在表示非树形结构时的不足。
  • 典型代表为DBTG系统(亦称CODASYL系统)。**

---

**1. 数据结构**

**定义**: 在数据库中,网状模型满足:
(1) 允许一个以上的结点无双亲。
(2) 一个结点可以有多于一个的双亲。

****特性**:

  • 与层次模型比较,网状模型更具普遍性。
  • 允许多个结点没有双亲,结点可有多个双亲,还可有复合联系。
  • 层次模型是网状模型的特例。**

**示例**: 图1.12展示了网状模型的不同形式。

**应用场景**: 学生选课系统中,学生与课程之间存在多对多的关系,通过引入选课记录来组织数据。

---

**2. 数据操纵与完整性约束**

**- 网状模型比层次模型拥有较为宽松的完整性约束条件。

  • DBTG提供了多种完整性概念和语句,如:
  1. 记录码概念:唯一标识记录的数据项集合。
  2. 确保父-子关系为一对多关系。
  3. 支持父-子记录之间的约束条件。**

---

**3. 优缺点**

****优点**:

  1. 直观地描述现实世界。
  2. 存取效率高,性能良好。**

****缺点**:

  1. 结构复杂,难以掌握。
  2. DDL和DML复杂,需要嵌入高级语言中,难以掌握和使用。
  3. 需要选择合适的存取路径,加重了编程负担。**

---

**总结**: 网状模型提供了一个能够更为直观地描述非层次性事物联系的方法。尽管它具有较高的存取效率和能够准确描述多对多的关系等优点,但其结构的复杂性和对程序员的要求较高使其使用受到一定限制。

1.2.7 关系模型

****概述**:

  • 关系模型是数据库中最重要的数据模型。
  • 1970年,E.F.Codd首次提出关系模型,为数据库技术奠定理论基础。
  • 1981年,Codd获得ACM图灵奖。
  • 20世纪80年代,大部分新的数据库管理系统都支持关系模型。**

---

****1.关系模型的数据结构**:

  • **基于数学**: 关系模型基于严格的数学概念。
  • **关系**: 一张二维表;例:学生登记表。
  • **元组**: 一张表中的一行。
  • **属性**: 一张表中的一列;例:学号、姓名、年龄等。
  • **码**: 可以唯一确定一个元组的属性组;例:学号。
  • **域**: 同一数据类型的值的集合,决定了属性的取值范围。
  • **分量**: 元组中的一个属性值。
  • **关系模式**: 描述关系的方式,表示为"关系名(属性1,属性2,...,属性n)"。
  • **规范性**: 关系中的每一个分量必须是不可分的数据项。**

---

****2.关系模型的数据操纵与完整性约束**:

  • **数据操纵**: 包括查询、插入、删除和更新。
  • **完整性约束**:
  • 实体完整性
  • 参照完整性
  • 用户定义的完整性
  • **操作方式**: 关系模型中的数据操作基于集合,操作对象和结果均为关系。**

---

****3.关系模型的优缺点**:
**优点**:

  1. 基于严格的数学概念。
  2. 概念单一,数据结构简单、清晰。
  3. 存取路径对用户透明,具有高度的数据独立性。**

****缺点**:

  1. 查询效率可能较低。
  2. 系统内部的查询优化增加了DBMS的开发难度。**

---

****1.3 数据库系统的结构**:

  • 从应用开发人员角度看,数据库系统通常采用三级模式结构。
  • 从最终用户角度看,数据库系统的结构有多种,如单用户、主从式、分布式、客户-服务器等。
  • 本章将详细介绍数据库系统的模式结构。**

---

总结:

---

****重点**:

  1. **定义**:数据模型是一个用于描述、构造和操作数据库的概念框架,它定义了所需的数据结构、关系及操作约束。
  2. **关系模型**: 理解关系模型的组成(如关系、元组、属性、码等)及其规范性要求是核心内容。
  3. **完整性约束**: 包括实体完整性、参照完整性和用户定义的完整性。
  4. **三级模式结构**:外模式、概念模式和内模式的理解与区别。
  5. **其他数据模型**: 除关系模型外,还需了解层次模型、网状模型、对象关系模型等。**

---

****难点**:

  1. **规范化**: 理解不同的规范化级别(如第一范式、第二范式等)及其为何需要。
  2. **查询优化**: 虽然对于大部分应用开发者不是直接内容,但理解其背后的原理对于数据库性能优化是关键。
  3. **完整性约束的应用**: 在实际应用中如何有效地使用和维护这些约束。
  4. **数据模型转换**: 如何从概念模型(如E-R图)转换到关系模型。**

---

****易错点**:

  1. **混淆术语**:如将"关系"与"关系数据库"、"元组"与"记录"等概念混淆。
  2. **规范化过程**:在进行数据库设计时,可能会错误地跳过某些规范化步骤或将数据模型规范化到不适当的级别。
  3. **完整性约束的违反**:在进行数据操作时,可能会违反某些约束条件,如插入违反实体完整性的数据。
  4. **误解数据模型的用途**:如将关系模型与对象关系模型混淆,或将它们用于不适合的场景。**

---

总体来说,理解数据模型的基础概念是关键,但同时也需要注意其中的细节和特定的应用场景,以避免常见的误区和错误。

相关推荐
vvvae12347 小时前
分布式数据库
数据库
雪域迷影7 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹8 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人8 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky8 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa8 小时前
【MySQL 06】表的增删查改
数据库·mysql
向上的车轮9 小时前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长10 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
全栈师10 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle
Data 31710 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop