6. 数据库设计基础知识

1 数据库基本概念

  • 数据(Data):描述事物的符号记录,具有多种形式。
  • 信息(Information):反映现实世界事物的存在方式或状态。
  • 数据库(Database, DB):长期存储在计算机内的数据集合。
  • 数据库系统(Database System, DBS):采用数据库技术存储大量相关联数据,方便用户访问的计算机系统。
    • 特点:数据共享、独立性、冗余度小、一致性高、易扩展。
  • DBMS:数据库系统的核心软件,管理数据的存储和访问。

1.1 数据库技术的发展

  1. 人工管理阶段
  • 数据量少,数据和程序一对一。
  1. 文件系统阶段
  • 数据量增加,数据独立性,数据冗余,数据不一致,数据孤立。
  1. 数据库系统阶段
  • 数据共享,数据独立性高,数据冗余少,数据一致性高。

1.2 数据模型

数据库的基础结构是数据模型,是用来描述数据的一组概念和定义。数据模型的三要素是数据结构、数据操作和数据的约束条件。

  • 数据结构:数据的组织方式。
  • 数据操作:对数据的操作。
  • 数据约束:数据的完整性和一致性。

数据库技术的发展

  1. 层次和网状数据库系统
  • 层次模型:树形结构表示数据。
  • 网状模型:多对多联系。
  1. 关系数据库系统
  • 关系模型:用表格结构表示数据及其关系。
  1. 第三代数据库系统
  • 面向对象模型、语义数据模型、XML 数据模型。
  • No SQL:支持简单 SQL 查询。

1.3 数据库管理系统(DBMS)

1.3.1 DBMS 功能

  • 数据定义:提供数据定义语言(DDL),描述数据库结构。
  • 数据操作:提供数据操纵语言(DML),实现数据库基本操作。
  • 数据库运行管理:运行期管理,多用户并发控制,安全性检查和存取控制。
  • 数据组织、存储和管理:组织、存储和管理数据,提高存取效率。
  • 数据库建立和维护:数据库的建立、数据转换、性能监测和分析。
  • 其他功能:与网络和其他软件系统的通信功能。

1.3.2 DBMS 特点

  • 数据结构化且统一管理:描述数据联系,实现数据共享。
  • 数据独立性:程序独立于数据存储,简化应用程序。
  • 数据控制功能
    • 数据安全性
      • 定义:保护数据库免受非法使用和破坏。
      • 措施:用户权限控制、数据加密、访问日志。
    • 完整性
      • 定义:确保数据正确性和相容性。
      • 措施:数据验证、约束检查。
    • 并发控制
      • 定义:协调多用户访问数据库。
      • 目标:保证数据完整性和一致性。
    • 故障恢复 (recovery from failure):主要是指恢复数据库本身,即在故障导致数据库状态不一致时,将数据库恢复到某个正确状态或一致状态。
      • 方法:冗余数据、事务日志、备份和恢复。

1.4 数据库三级模式

数据库系统体系结构

系统开发人员需要通过视图层、逻辑层和物理层三个层次上的抽象来对用户屏蔽系统的复杂性,简化用户与系统的交互。

  • 视图层(View Level):描述数据库部分数据。
  • 逻辑层(Logical Level):描述数据存储和组织方式。
  • 物理层(Physical Level):数据存储细节。

数据库三级模式概述

数据库三级模式:外模式、概念模式和内模式。

  • 外模式:用户视图,简化用户与系统的交互。
  • 概念模式:数据库的整体逻辑结构。
  • 内模式:数据的物理存储结构和存取方式。

模式间映射

  • 外模式与概念模式映射:简化用户交互。
  • 概念模式与内模式映射:逻辑到物理的转换。

数据库三级模式的作用

  • 简化用户与数据库的交互。
  • 屏蔽系统复杂性。
  • 提高数据独立性。
  • 支持数据共享。

总之,数据按外模式的描述提供给用户,按内模式的描述存储在磁盘上,而概念模式提供了连接这两极模式的相对稳定的中间观点,并使得两级的任意一级的改变都不受另一级的牵制。

2 关系数据库

2.1 关系数据库基本概念

关系数据库系统:支持关系数据模型的数据库系统。

2.1.1 关系的基本术语

  1. 属性(Attribute):描述事物特征。例如学生通过学号、姓名、性别、系别、年龄、籍贯等属性来描述。
  2. 域(Domain):属性值范围。
  3. 目或度 (Degree): 目或度指的是一个关系中属性的个数。
  4. 候选码(Candidate Key):唯一标识元组,则称该属性或属性组为候选码。
  5. 主码(Primary Key):或称主键,若一个关系有多个候选码,则选定其中一个作为主码。
  6. 主属性 (Prime Attribute): 包含在任何候选码中的属性称为主属性。不包含在任何候选码中的属性称为非主属性 (Non-Prime Attribute)。
  7. 外码(Foreign Key):引用其他关系属性。
  8. 全码(All-Key):关系模型的所有属性组是这个关系模式的候选码,称为全码。
  9. 笛卡尔积:数学表达式:A × B = {(a,b) | a ∈ A ∧ b ∈ B}

2.1.2 关系数据库模式

  • 关系模式:关系数据库的结构描述。
  • 定义:关系模式 R(U,D,dom,F)R(U, D, \text{dom}, F),其中 RR 为关系名,UU 为属性名集合,DD 为属性域,dom\text{dom} 为属性值域,FF 为函数依赖集合。

2.1.3 关系的完整性约束

  • 实体完整性(Entity Integrity):主键唯一且非空。
  • 参照完整性(Referential Integrity):外码引用存在。
  • 用户定义完整性(User Defined Integrity):特定应用约束。

2.2 关系运算

  • 关系运算:操作对象和操作结果都是集合。
  • 5 种基本运算
    • 并集运算符:∪
    • 交集运算符:∩
    • 笛卡尔积运算符:×
    • 选择运算符:σ
    • 投影运算符:π
  • 其他运算可以通过基本的关系运算导出。

关系代数运算符

  • 集合运算符
    • 并(Union)U
      • 合并两个关系模式相同的关系。
    • 交(Intersection) ∩
      • 找出同时属于两个关系的元组。
    • 差(Difference)差集运算符:-
      • 找出属于第一个关系而不属于第二个关系的元组。
    • ×
  • 比较运算符
    • >
    • <
    • =
  • 逻辑运算符
    • 逻辑与:∧
    • 逻辑或:∨
    • 逻辑非:¬
  • 专门的关系运算符
    • 选择运算符:σ
    • 投影运算符:π
    • 连接(Join) 连接运算符:⨝
      • θ 连接:从 R 与S 的笛卡尔积中选取属性满足一定条件的元组
      • 等值连接:基于等值条件的连接。
      • 自然连接 (Natural Join) :基于相同属性的连接。自然连接是一种特殊的等值连接。
      • 广义投影(Generalized Projection):扩展连接运算。
      • 外连接(Outer Join)
        • 左外连接:保留左关系所有元组。
        • 右外连接:保留右关系所有元组。
        • 全外连接:保留两个关系所有元组。
    • 除(Division)除法运算符:÷
      • 找出满足特定条件的关系。

聚集运算

  • 聚集函数:对关系中的元组进行聚集计算。
  • 常用聚集函数:sum(求和)、avg(平均值)、min(最小值)、max(最大值)、count(计数)。

2.3 关系数据库设计基本理论

2.3.1函数依赖

  • 定义:一个关系中属性间值的相等与否体现的相互关系。
  • 类型:完全函数依赖、部分函数依赖、传递函数依赖。

2.3.2 多值依赖

  • 定义:属性组之间的值依赖关系。
  • 特性:传递性、闭包性质。

2.3.3 规范化

  • 目的:减少数据冗余、提高数据一致性。
  • 范式:1NF、2NF、3NF、BCNF、4NF 和 5NF。
    • INF:一个关系模式中每个分量都是不可再分的数据项。
    • 2NF:每个非主属性完全函数依赖主码。
    • 3NF:3NF(Third Normal Form, 第三范式),消除部分函数依赖。
    • BCNF:BCNF(Boyce Codd Normal Form, 巴克斯范式),消除部分函数依赖和传递函数依赖。
    • 4NF:关系模式中每个非平凡且非函数依赖的多值依赖满足一定条件。
  • 过程:分解关系模式,消除数据冗余和异常。

3 数据库设计

3.1 数据库设计的基本步骤

  • 用户需求分析:分析和定义用户需求。
  • 概念结构设计:形成独立于计算机系统的企业信息模型。
  • 逻辑结构设计:将概念模型转化为数据库管理系统支持的逻辑模型。
  • 物理结构设计:在计算机中实现逻辑模型。
  • 数据库实施:建立数据库,组织数据入库。
  • 数据库运行和维护:试运行和维护数据库。

6.3.2 数据需求分析

  • 信息需求分析:确定系统中保存信息及其完整性。
  • 处理要求:确定系统功能和性能要求。
  • 系统要求:确定安全性、使用方式等要求。

3.3 概念结构设计

  • 定义:分析和定义信息及其关系。
  • 工具:E-R图。

3.4 逻辑结构设计

  • 定义:将概念模型转化为逻辑模型。
  • 模型:模式结构设计、子模式设计、应用设计。

3.4.1 ER 图转换为关系模式

  • 实体转换:实体名对应关系模式名称,实体属性为关系模式的属性。
  • 联系转换:一对一、一对多、多对多联系分别转换为独立关系模式或增加属性。

3.4.2 关系模式规范化

  • 目的:消除数据冗余,更新异常。
  • 步骤:
    1. 确定各关系模式的数据依赖。
    2. 确定关系模式的范式。
    3. 根据规范化理论,调整关系模式。

3.4.3 确定完整性约束

  • 定义:确保数据的正确性。
  • 方法:SQL标准约束、主码约束。

3.4.4 确定用户视图

  • 定义:从用户角度建立视图模式。
  • 考虑:用户需求、使用权限。

3.4.5 反规范化

对关系模式进行修正,对部分影响性能的关系模式进行处理,包括分解、合并、增加冗余属性等。

3.5 物理结构设计

一般来说,物理设计的主要工作步骤包括确定数据分布、存储结构和访问方式。

3.6 数据库实施阶段

根据逻辑和物理设计的结果,在计算机上建立起实际的数据库结构,数据加载(或称装入),进行试运行和评价的过程,叫作数据库的实施(或称实现)。

3.7 数据库运行和维护

数据库维护工作的主要内容包括对数据库性能的监测和改善、故障恢复、数据库的重组和重构。在数据库运行阶段,对数据库的维护主要由 DBA 完成。

6.4 应用程序与数据库的交互

在应用系统中,需要高级程序语言来完成与用户之间的交互,用户不能直接访问后台的数据库。因此数据库管理系统需要提供程序级别的接口来访问数据。

6.4.1 库函数级别访问接口

  • 定义:数据库提供的最底层访问数据接口。
  • 工具:Oracle 数据库的 OCI。
  • 特点:强依赖特定数据库,开发效率不高。

6.4.2 嵌入式 SQL 访问接口

  • 定义:将 SQL 语句直接写入高级程序语言。
  • 工具:C、COBOL、Java、Ada。
  • 特点:需要编译,效率低。

6.4.3 通用数据接口标准

  • ODBC(Open Database Connectivity)
    • 定义:为解决异构数据库间数据共享而产生的。
    • 组成:DAO、RDO、ADO。
    • 优点:统一访问不同数据库系统。
    • 应用:ADO、DAO、RDO。

6.4.4 ORM 访问接口

对象关系映射 (Object Relational Mapping, 简称 ORM 或 O/RM 或 O/R mapping) 是一种程序设计技术,用于实现面向对象编程语言里不同类型系统数据之间的转换。

  • 特点:降低数据库访问复杂度。
  • 工具:Hibernate、Mybatis、JPA(Java Persistence API)。

7 NoSQL 数据库

7.1 NoSQL 数据库概述

  • NoSQL 数据库:最常见的解释是 Non-Relational,Not Only SQL也被很多人接受。泛指非关系型的数据库,不保证关系数据库的 ACID 特性。
  • 优势:灵活、可扩展性、高性能、易部署。

7.2 NoSQL 数据库类型

  1. 列式存储数据库
    • 特点:按列存储数据,适合分析型查询。
  2. 键值对存储数据库
    • 特点:通过键值对存储数据,简单易部署。
  3. 文档型数据库
    • 优势:存储半结构化文档,灵活。
  4. 图数据库
    • 适用:社交网络数据、生物信息网络。

7.3 NoSQL 数据库特点

  • 灵活的数据模型:支持多种数据结构。
  • 高可用性:易于扩展和复制。
  • 简单的数据模型:易于理解和使用。
  • 对数据类型要求低:容易映射复杂值。

7.4 NoSQL 数据库体系框架

NoSQL 整体框架分为 4 层,由下至上分为数据持久层 (Data Persistence)、 数据分布层(Data Distribution Model)、 数据逻辑模型层 (Data Logical Model) 和接口层 (Interface), 层次之间相辅相成,协调工作。

8 我的参考

数据库_哔哩哔哩_bilibili