第3章 数据库基础
3.1 数据库基础概念
这一节把后面会反复用到的几个词说清楚:数据库、表、记录、字段、主键、外键、索引。
3.1.1 数据库
- 定义:数据库是一种有组织的数据集合,用于高效地存储、管理和检索数据。
- 作用:通过数据库管理系统(DBMS),用户可以方便地进行数据操作和管理。
3.1.2 表
- 定义:表是数据库中用于存储数据的基本单位,由行和列组成。
- 组成:每个表有多个字段(列),每个字段有特定的数据类型;表中的每一行称为记录。
3.1.3 记录和字段
- 记录:表中的一行,表示一条具体的数据项。
- 字段:表中的一列,表示数据项的一个属性。
3.1.4 主键
主键是表中的一个或多个字段,每条记录的主键值都不重复,靠它把记录唯一地认出来。
3.1.5 外键
外键是一个表里的字段,指向另一个表的主键,子表的每条记录都能在父表里找到对应项。
3.1.6 索引
索引是为加速检索建的结构,查得快了,写入时要多维护一份,存储也多占一块。
3.2 SQL语言简介
SQL(Structured Query Language,结构化查询语言)是用于管理和操作关系型数据库的标准语言。
3.2.1 SQL的基本语法
数据定义语言(DDL):用于定义和管理数据库结构。
- CREATE:创建数据库、表、视图等。
- ALTER:修改数据库、表结构。
- DROP:删除数据库、表、视图等。
数据操作语言(DML):用于查询和修改数据。
- SELECT:查询数据。
- INSERT:插入数据。
- UPDATE:更新数据。
- DELETE:删除数据。
数据控制语言(DCL):用于控制访问权限。
- GRANT:授予权限。
- REVOKE:撤销权限。
3.2.2 常用SQL操作
查询数据
sqlSELECT * FROM users WHERE age > 30;插入数据
sqlINSERT INTO users (name, age) VALUES ('Bob', 25);更新数据
sqlUPDATE users SET age = 26 WHERE name = 'Bob';删除数据
sqlDELETE FROM users WHERE name = 'Bob';
3.3 数据库设计原则
数据库设计上有四条原则,分别管结构怎么描述、数据怎么摆、约束怎么定、查询怎么加速:
3.3.1 实体-关系模型(ER模型)
ER 模型用实体和关系描述数据库的结构,设计时先用它把表和表之间的关系想清楚,再动手建表。
3.3.2 数据库规范化
规范化是把数据拆成冗余少、依赖关系明确的表,同一份数据只存一处,改动时不会出现几处不一致。
3.3.3 数据完整性
- 定义:数据完整性是确保数据库中数据的准确性和一致性。
- 种类:
- 实体完整性:每个表必须有一个主键,且主键值唯一。
- 参照完整性:外键值必须引用主键值,确保关系的有效性。
- 域完整性:字段值必须符合预定义的规则或范围。
3.3.4 数据库性能优化
- 定义:性能优化是提高数据库查询和操作效率的方法。
- 方法:
- 使用索引加速查询。
- 合理设计表结构和关系。
- 避免过多的嵌套查询。
3.4 数据库范式
数据库范式是数据库设计中用于规范化数据结构的一系列规则,目的是减少数据冗余,提高数据一致性。
3.4.1 第一范式(1NF)
- 定义:确保每列的值都是不可分割的原子值。
- 示例:一个表中每个字段只能包含单一值,而不能包含集合、数组等。
3.4.2 第二范式(2NF)
- 定义:满足1NF,并且表中的每个非主属性完全依赖于主键。
- 示例:消除部分依赖,将相关数据分拆到不同的表中。
3.4.3 第三范式(3NF)
- 定义:满足2NF,并且每个非主属性不传递依赖于主键。
- 示例:消除传递依赖,将相关数据进一步分拆。
3.4.4 BC范式(BCNF)
- 定义:满足3NF,并且每个主属性都完全依赖于候选键。
- 示例:确保所有主属性的依赖关系都是通过候选键直接建立的。