《数据库思维导图》
一、数据库概念与基础
1.1 数据与信息
- 数据:事实的符号记录,可以被识别和存储。
- 信息:经过处理和组织的数据,具有意义和价值。
1.2 数据库 (Database, DB)
- 定义:长期存储在计算机内、有组织的、可共享的大量数据的集合。
- 特点:
- 持久性:数据长期存储。
- 共享性:数据可以被多个用户或应用程序共享。
- 数据独立性:数据与应用程序分离。
- 数据完整性:数据的准确性和一致性。
- 数据安全性:保护数据免受未经授权的访问和修改。
1.3 数据库管理系统 (Database Management System, DBMS)
- 定义:用于管理数据库的软件系统,提供数据定义、数据操作、数据控制等功能。
- 主要功能:
- 数据定义:定义数据库的结构和约束。
- 数据操作:实现数据的增删改查。
- 数据控制:保证数据的完整性、安全性。
- 事务管理:保证数据的并发访问和一致性。
- 数据存储管理:负责数据的物理存储和访问。
1.4 数据库系统 (Database System, DBS)
- 定义:由数据库、数据库管理系统、应用程序和用户组成。
- 组成:
- 数据库 (DB)
- 数据库管理系统 (DBMS)
- 应用程序 (Applications)
- 数据库管理员 (DBA)
- 用户 (Users)
二、数据库模型
2.1 层次模型
- 特点:以树形结构组织数据,一个父节点可以有多个子节点,但一个子节点只能有一个父节点。
- 优点:查询效率高,结构简单。
- 缺点:数据冗余度高,灵活性差,不易扩展。
2.2 网状模型
- 特点:允许一个节点有多个父节点,结构复杂。
- 优点:可以表示复杂的数据关系,灵活性较高。
- 缺点:实现复杂,维护困难。
2.3 关系模型
- 特点:以关系(表)的形式组织数据,通过键(Key)建立关系。
- 概念:
- 关系 (Relation):二维表,由行(元组)和列(属性)组成。
- 元组 (Tuple):表中的一行,代表一个实体。
- 属性 (Attribute):表中的一列,代表实体的特征。
- 键 (Key):用于唯一标识元组的属性或属性组合。
- 主键 (Primary Key):唯一标识表中每个元组的属性或属性组合,不能为空。
- 外键 (Foreign Key):一个表中的属性,作为另一个表的主键,用于建立表之间的联系。
- 域 (Domain):属性的取值范围。
- 优点:结构简单,易于理解和使用,数据独立性高,灵活性好。
- 缺点:查询效率相对较低。
2.4 面向对象模型
- 特点:将数据和操作封装成对象,强调对象的行为和属性。
- 概念:
- 对象 (Object):包含数据和操作的实体。
- 类 (Class):对象的抽象,定义了对象的属性和方法。
- 继承 (Inheritance):子类继承父类的属性和方法。
- 多态 (Polymorphism):同一个方法在不同的对象上表现出不同的行为。
- 优点:能够更好地处理复杂的数据类型和关系,代码重用性高。
- 缺点:实现复杂,查询效率较低。
2.5 NoSQL 模型
- 特点:非关系型数据库,通常不使用 SQL 作为查询语言。
- 类型:
- 键值存储 (Key-Value Store):以键值对形式存储数据,如 Redis, Memcached。
- 文档数据库 (Document Database):以文档形式存储数据,如 MongoDB。
- 列式数据库 (Column-Family Database):以列族形式存储数据,如 Cassandra, HBase。
- 图数据库 (Graph Database):以图的形式存储数据,如 Neo4j。
- 优点:高可扩展性,高可用性,灵活的数据模型。
- 缺点:数据一致性相对较弱,缺乏标准化的查询语言。
三、关系数据库设计
3.1 需求分析
- 了解用户的需求,确定数据库的功能和数据。
3.2 概念结构设计
- 采用实体-关系模型 (Entity-Relationship Model, E-R Model) 描述数据库的概念结构。
- E-R 图:
- 实体 (Entity):现实世界中可以区分的对象,用矩形表示。
- 属性 (Attribute):实体的特征,用椭圆形表示。
- 关系 (Relationship):实体之间的联系,用菱形表示。
- 联系类型:
- 一对一 (1:1)
- 一对多 (1:N)
- 多对多 (M:N)
3.3 逻辑结构设计
- 将 E-R 图转换为关系模式。
- 关系模式:表的结构,包括表名、属性名和属性类型。
- 范式理论:
- 第一范式 (1NF):属性是原子性的,不可再分。
- 第二范式 (2NF):在 1NF 的基础上,非主属性完全依赖于主键。
- 第三范式 (3NF):在 2NF 的基础上,非主属性不传递依赖于主键。
- BCNF (Boyce-Codd Normal Form):在 3NF 的基础上,所有属性都完全依赖于每一个候选键。
- 规范化:通过范式分解,减少数据冗余,提高数据完整性。
- 反规范化:为了提高查询效率,允许适度的数据冗余。
3.4 物理结构设计
- 选择合适的存储结构和索引,优化数据库性能。
- 索引:
- B-Tree 索引
- Hash 索引
- 全文索引
- 分区:将一个大表分割成多个小表,提高查询效率。
- 存储引擎的选择:MySQL (InnoDB, MyISAM), SQL Server, Oracle 等。
四、SQL 语言
4.1 数据定义语言 (DDL)
- CREATE:创建数据库、表、索引等。
- ALTER:修改数据库、表、索引等。
- DROP:删除数据库、表、索引等。
4.2 数据操作语言 (DML)
- SELECT:查询数据。
- INSERT:插入数据。
- UPDATE:修改数据。
- DELETE:删除数据。
4.3 数据控制语言 (DCL)
- GRANT:授权。
- REVOKE:取消授权。
4.4 查询语句
- SELECT 语句的完整语法:
sql SELECT column1, column2, ... FROM table_name WHERE condition GROUP BY column1, column2, ... HAVING group_condition ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ... LIMIT offset, row_count;
- 常用函数:
- 聚合函数:COUNT, SUM, AVG, MAX, MIN
- 字符串函数:SUBSTRING, CONCAT, LENGTH
- 日期函数:NOW, DATE, YEAR, MONTH, DAY
4.5 事务
- 定义:一组 SQL 语句,要么全部执行成功,要么全部执行失败。
- ACID 特性:
- 原子性 (Atomicity):事务是一个不可分割的整体。
- 一致性 (Consistency):事务必须保证数据库从一个一致性状态到另一个一致性状态。
- 隔离性 (Isolation):并发执行的事务之间互相隔离。
- 持久性 (Durability):事务一旦提交,其结果将永久保存在数据库中。
- 事务控制:
- START TRANSACTION
- COMMIT
- ROLLBACK
五、数据库管理与维护
5.1 备份与恢复
- 全量备份:备份整个数据库。
- 增量备份:备份自上次全量备份或增量备份以来发生变化的数据。
- 差异备份:备份自上次全量备份以来发生变化的数据。
- 恢复:将数据库恢复到备份时的状态。
5.2 性能优化
- 查询优化:
- 索引优化
- SQL 语句优化
- 避免全表扫描
- 硬件优化:
- 增加内存
- 使用 SSD
- 优化网络
5.3 安全管理
- 用户权限管理:
- 创建用户
- 授予权限
- 回收权限
- 数据加密:
- 静态数据加密
- 传输数据加密
- 防火墙:防止未经授权的访问。
5.4 监控与维护
- 监控数据库的性能和状态。
- 定期维护数据库,清理垃圾数据。
- 及时处理数据库故障。