上一篇
按照关系型数据库的基本原理
- 行业动态
- 2025-05-15
- 4
关系型数据库基于表结构存储数据,通过主外键关联,支持ACID事务,使用SQL操作,遵循规范设计确保数据一致性。(4
核心概念
关系型数据库(RDBMS)以关系模型为基础,通过二维表结构存储数据,利用集合运算和谓词逻辑进行数据操作,其核心特点包括:
- 数据结构化:数据以表(Table)的形式组织,表由行(记录)和列(字段)组成。
- 键约束:通过主键(Primary Key)唯一标识记录,外键(Foreign Key)维护表间关联。
- 数据完整性:支持实体完整性(主键非空且唯一)、参照完整性(外键关联)和用户定义完整性(自定义规则)。
数据结构与操作
组件 | 说明 |
---|---|
表(Table) | 存储同类实体的数据集合,如“学生表”包含学号、姓名、年龄等字段。 |
字段(Column) | 表的最小数据单位,定义数据类型(如INT、VARCHAR)和约束(如NOT NULL)。 |
记录(Row) | 表中的一行数据,表示一个实体实例(如一个学生的信息)。 |
索引(Index) | 加速查询的数据结构(如B+树),可基于主键或普通字段创建。 |
示例表结构:
CREATE TABLE Student ( StudentID INT PRIMARY KEY, -主键 Name VARCHAR(50) NOT NULL, Age INT CHECK (Age >= 18), -用户定义完整性 MajorID INT, FOREIGN KEY (MajorID) REFERENCES Major(MajorID) -外键关联 );
数据完整性约束
约束类型 | 作用 |
---|---|
主键约束 | 确保每条记录唯一且非空(如学生表中的学号)。 |
外键约束 | 维护表间引用关系(如学生表的MajorID必须存在于专业表的主键中)。 |
非空约束 | 指定字段不能为NULL(如姓名字段)。 |
唯一约束 | 保证字段值唯一(如邮箱地址)。 |
检查约束 | 定义字段需满足的条件(如年龄必须≥18)。 |
关系代数与SQL
关系型数据库通过关系代数(如选择σ、投影π、连接⨝)描述操作,而SQL是其标准化语言,常见操作分类:
- DQL(数据查询):
SELECT FROM Student WHERE Age > 20;
- DML(数据操纵):
UPDATE Student SET Age = Age + 1 WHERE StudentID = 1;
- DDL(数据定义):
CREATE TABLE
、ALTER TABLE
、DROP TABLE
。 - DCL(数据控制):
GRANT
、REVOKE
权限管理。
范式与规范化
为减少数据冗余和异常,关系模型需满足范式:
| 范式级别 | 要求 |
|————–|————————————————————————–|
| 第一范式(1NF) | 字段不可再分(如不可将“地址”存为一列,应拆分为街道、城市等)。 |
| 第二范式(2NF) | 满足1NF且非主属性完全依赖主键(如订单表不应含商品详情,需拆分订单项表)。 |
| 第三范式(3NF) | 满足2NF且非主属性不依赖其他非主属性(如学生表中不应含导师姓名,需关联教师表)。 |
事务与并发控制
关系型数据库通过事务(Transaction)保证操作的原子性、一致性、隔离性和持久性(ACID):
- 原子性:事务要么全部成功,要么全部回滚。
- 隔离性:不同事务互不干扰(如锁机制防止脏读、不可重复读)。
- 示例事务:
BEGIN TRANSACTION; UPDATE Account SET Balance = Balance 100 WHERE AccountID = 1; UPDATE Account SET Balance = Balance + 100 WHERE AccountID = 2; COMMIT; -或ROLLBACK;
优缺点与适用场景
优点 | 缺点 | 适用场景 |
---|---|---|
数据一致性强,支持复杂查询 | 扩展性差(水平扩展困难) | 金融系统、ERP、管理系统等需要事务支持的场景 |
ACID特性保障可靠性 | 读写性能受限于硬件资源 |
问题与解答
问题1:什么是参照完整性?它有什么作用?
解答:参照完整性通过外键约束保证表间数据一致性,学生表的MajorID
必须对应专业表的MajorID
,避免出现无效的专业引用,若删除专业表中的数据,可通过ON DELETE CASCADE
级联删除学生表中关联的记录。
问题2:为什么需要数据库规范化?未规范化可能带来什么问题?
解答:规范化通过分解表结构消除数据冗余和更新异常,未规范化的订单表若包含商品详情,修改商品信息时需更新所有相关订单记录,易导致数据不一致;而规范化后可通过关联商品表避免此问题