(一)数据库的基本概念
1. 数据、数据库
-
数据(Data): 数据是指现实世界中所有事物的记录和描述。这些记录和描述可以是数值、字符、图像、声音等形式。数据是信息的原始形式,是数据库中的基本单位。
-
数据库(Database): 数据库是一个有组织的、可存取的、可管理的数据集合。它存储了大量相关的数据,可以供一个或多个用户使用。数据库通过结构化的方式来保存数据,以便高效地存取和管理数据。
2. 数据库管理系统、数据库系统、数据库系统的组成
-
数据库管理系统(DBMS: Database Management System): DBMS是一个软件系统,用于创建、管理和操作数据库。它提供了一套完整的工具来定义、操作和维护数据库,并确保数据的完整性、安全性和一致性。
-
数据库系统(DBS: Database System): 数据库系统是一个更广泛的概念,包括数据库、数据库管理系统、应用程序和数据库管理员等所有相关组件。它是一个完整的系统,用于数据的存储、处理和管理。
-
数据库系统的组成:
- 硬件: 用于存储和运行数据库的软件和数据。
- 软件: 包括操作系统、数据库管理系统和相关应用程序。
- 数据: 数据库中存储的所有数据。
- 用户: 使用数据库系统的所有人员,包括数据库管理员、应用程序开发人员和最终用户。
3. 三级模式(概念模式、外模式、内模式)
-
概念模式(Conceptual Schema): 概念模式描述了数据库的逻辑结构和整体视图。它独立于任何物理存储设备,主要关注数据的类型、关系和约束。
-
外模式(External Schema): 外模式是数据库中数据的用户视图。不同的用户可以有不同的外模式,它描述了用户感兴趣的部分数据。
-
内模式(Internal Schema): 内模式描述了数据在数据库中的物理存储结构和访问方法。它包括数据的物理存储格式、索引、存储路径等。
4. 两级映像(概念模式/外模式、外模式/内模式)
-
概念模式/外模式映像(Conceptual/External Mapping): 这个映像定义了概念模式和外模式之间的对应关系,确保用户能够通过外模式访问概念模式中的数据。
-
外模式/内模式映像(External/Internal Mapping): 这个映像定义了外模式和内模式之间的对应关系,确保外模式中的数据能够映射到内模式的物理存储结构中。
5. 两级数据独立性(物理数据独立性、逻辑数据独立性)
-
物理数据独立性(Physical Data Independence): 物理数据独立性是指在不影响概念模式和外模式的情况下,能够改变数据的物理存储结构和访问方法。它使得数据库的物理层次可以在不改变逻辑结构的情况下进行优化和修改。
-
逻辑数据独立性(Logical Data Independence): 逻辑数据独立性是指在不影响外模式的情况下,能够改变概念模式。这意味着可以在不改变用户视图的情况下修改数据库的逻辑结构,如增加新表、删除表或修改表的结构。
(二)数据模型
1. 数据模型概念、分类、组成要素
-
数据模型(Data Model): 数据模型是对数据及其在信息系统中的组织、存储和管理方式的抽象。它描述了数据的结构、数据间的关系以及数据的约束和操作。
-
分类: 数据模型主要分为以下几类:
- 概念数据模型(Conceptual Data Model): 描述数据及其关系的高层抽象,不涉及具体的实现细节。E-R图就是一种常见的概念数据模型。
- 逻辑数据模型(Logical Data Model): 在概念模型的基础上,更详细地描述数据的结构和关系,但仍然不涉及物理存储细节。关系模型就是一种常见的逻辑数据模型。
- 物理数据模型(Physical Data Model): 描述数据在物理存储介质上的存储方式和访问方式,涉及具体的数据库实现细节。
-
组成要素:
- 数据结构: 数据库中数据的组织形式和结构。
- 数据操作: 对数据进行的各种操作,如查询、插入、更新和删除。
- 数据约束: 数据的完整性约束和一致性规则。
2. 概念数据模型E-R图(实体、属性、关系)
-
E-R图(Entity-Relationship Diagram): E-R图是一种图形化的概念数据模型,用于表示数据和数据之间的关系。
- 实体(Entity): 现实世界中可识别的对象或事物,在E-R图中用矩形表示。
- 属性(Attribute): 实体的特征或性质,在E-R图中用椭圆形表示,并连接到实体。
- 关系(Relationship): 实体之间的关联或联系,在E-R图中用菱形表示,并连接相关实体。
3. 层次数据模型
- 层次数据模型(Hierarchical Data Model): 层次数据模型采用树形结构组织数据,其中每个节点表示一个记录类型,节点之间的关系是父子关系。每个父节点可以有多个子节点,但每个子节点只能有一个父节点。
4. 网状数据模型
- 网状数据模型(Network Data Model): 网状数据模型采用图形结构组织数据,其中节点表示记录类型,边表示记录之间的关系。一个记录可以有多个父记录和子记录,形成复杂的网状结构。
5. 关系数据模型
- 关系数据模型(Relational Data Model): 关系数据模型采用二维表格结构组织数据,表中的行表示记录,列表示属性。关系模型中的数据由一组关系(表)组成,每个关系都有一个唯一的名称。
6. 面向对象数据模型
- 面向对象数据模型(Object-Oriented Data Model): 面向对象数据模型结合了面向对象编程的概念,将数据表示为对象,每个对象包含数据和操作。对象之间通过类和继承关系组织,支持复杂的数据结构和行为。
7. 层次数据模型、网状数据模型、关系数据模型、面向对象数据模型的区别
-
结构:
- 层次数据模型: 树形结构,父子关系明确。
- 网状数据模型: 图形结构,多对多关系。
- 关系数据模型: 二维表格结构,表之间通过键值关联。
- 面向对象数据模型: 对象结构,支持类和继承。
-
灵活性:
- 层次数据模型: 结构固定,查询简单,但灵活性差。
- 网状数据模型: 灵活性较高,但复杂度较大。
- 关系数据模型: 灵活性高,易于查询和操作。
- 面向对象数据模型: 最灵活,支持复杂数据和行为,但实现复杂。
-
适用场景:
- 层次数据模型: 适用于结构明确、层次分明的数据。
- 网状数据模型: 适用于复杂的多对多关系数据。
- 关系数据模型: 通用性强,适用于大多数业务应用。
- 面向对象数据模型: 适用于复杂的应用场景,尤其是需要数据和操作高度结合的情况。
这些数据模型各有优缺点,根据具体的应用需求选择合适的数据模型可以更好地管理和使用数据。
(三)关系数据库理论
1. 关系模型
(1)关系数据结构
- 关系数据结构: 在关系模型中,数据以二维表格(关系)的形式组织。每个关系由一个或多个元组(行)组成,元组由属性(列)定义。关系具有以下特性:
- 关系: 由表名和列名定义的表。
- 元组: 表中的一行数据。
- 属性: 表中的列,每个属性有一个名称和数据类型。
- 域: 属性取值的范围。
(2)关系操作
- 关系操作: 关系模型提供了多种操作来处理和查询数据,这些操作主要分为以下几类:
- 查询操作: 用于从关系中提取数据。
- 插入操作: 用于向关系中添加新元组。
- 删除操作: 用于从关系中删除元组。
- 更新操作: 用于修改关系中的元组。
(3)关系的完整性约束
- 关系的完整性约束: 为了保证数据的准确性和一致性,关系模型中定义了以下三种主要的完整性约束:
- 实体完整性: 每个关系的主键必须唯一且不能为空。
- 参照完整性: 外键必须引用一个存在的主键,确保关系之间的引用一致。
- 用户定义完整性: 由用户根据具体应用定义的其他约束条件。
2. 关系模式
(1)关系概念模式
- 关系概念模式: 是对数据库的逻辑结构进行抽象描述,包括关系的名称、属性及其数据类型、主键和外键等约束。
(2)关系内模式
- 关系内模式: 是对数据的物理存储结构和访问方法进行描述,涉及存储文件的结构、索引、存取路径等具体细节。
(3)关系外模式
- 关系外模式: 是数据库中数据的用户视图,不同的用户可以有不同的外模式,描述用户感兴趣的数据部分和视图。
3. 关系代数
(1)传统的集合运算
- 并运算(Union): 将两个关系的所有元组组合起来,去掉重复的元组。
- 差运算(Difference): 从一个关系中去掉另一个关系中存在的元组。
- 交运算(Intersection): 取两个关系中共同存在的元组。
(2)专门的关系运算
- 选择运算(Selection): 从关系中选择满足给定条件的元组。
- 投影运算(Projection): 从关系中选择特定的属性列,去掉其他列。
- 联接运算(Join): 将两个关系根据某些条件合并成一个新的关系。
(3)笛卡尔积运算
- 笛卡尔积运算(Cartesian Product): 将两个关系的所有元组合并成新的元组,结果关系的每个元组包含原两个关系中的一个元组。
4. 关系数据库规范化理论
(1)关系模式应满足的基本要求
- 关系模式应满足的基本要求: 关系模式应能有效地消除数据冗余,避免数据异常,确保数据的一致性和完整性。
(2)函数依赖
- 函数依赖(Functional Dependency): 是指在一个关系中,如果属性集X的值唯一确定属性集Y的值,则称Y函数依赖于X,记作X→Y。
(3)规范化
- 第一范式(1NF): 属性的值必须是不可分割的原子值。
- 第二范式(2NF): 在1NF基础上,消除部分依赖,即非主属性完全依赖于候选键。
- 第三范式(3NF): 在2NF基础上,消除传递依赖,即非主属性不依赖于候选键的非主属性。
- BC范式(BCNF): 在3NF基础上,所有决定因素都是候选键。
(4)关系分解原则
- 关系分解原则: 在规范化过程中将关系分解为更小的关系,需满足以下原则:
- 无损连接性: 分解后的关系能够无损地重构原始关系。
- 保持函数依赖: 分解后的关系应保持原始关系中的所有函数依赖。
(四)关系数据库标准查询语言SQL
1. SQL语言的组成、基本功能
-
SQL语言的组成:
- 数据定义语言(DDL: Data Definition Language): 用于定义数据库结构和模式,包括创建、修改和删除数据库对象(如表、