前/言
Meeting summary report
数据库模式分解是关系数据库规范化理论中的核心概念,它是通过将一个大表(关系模式)拆分成多个小表来消除数据冗余和操作异常的过程。
01
定义和目的
01
基本定义
模式分解是指将一个关系模式R(U)分解为若干个较小的关系模式ρ={R₁(U₁), R₂(U₂), ..., Rₖ(Uₖ)}的过程,其中U₁∪U₂∪...∪Uₖ=U。
简单说就是把一个大表拆成多个小表,这些小表通过外键关联起来。
02
分解的目的
消除数据冗余:相同数据不再重复存储;
减少更新异常:避免插入、删除、修改时出现不一致;
提高数据一致性:确保数据的完整性和准确性;
优化存储空间:减少不必要的重复数据占用空间;
02
分解方式
01
无损连接分解
分解后的关系通过自然连接可以完全恢复原始关系,不丢失任何信息。
特点:
能够通过连接操作完全还原原始数据;
通常通过保留公共属性(外键)实现;
02
保持函数依赖分解
分解后的关系能够保持原始关系中的所有函数依赖。
特点:
所有原始的函数依赖关系在新模式中仍然有效;
保证数据完整性约束不被破坏;
03
案例分析
01
学生选课系统
A
原始表(StudentCourse)
存在问题:
数据冗余:张三的姓名、系别、系主任重复存储;
更新异常:如果计算机系更换主任,需要修改多条记录;
插入异常:新成立的系还没有学生时,无法记录系主任信息;
删除异常:删除所有学生后,系信息也会丢失;
B
分解步骤(规范到3NF)
1.识别函数依赖:
学号 姓名, 系别;
系别 系主任;
课程号 课程名;
(学号, 课程号) 成绩;
2.分解为三个表:
3.进一步分解为四个表(更规范的3NF):
学生表 Student(学号, 姓名, 系别);
系表 Department(系别, 系主任);
课程表 Course(课程号, 课程名);
选课表 SC(学号, 课程号, 成绩);
*分解后优势:
消除冗余:学生和系信息只存储一次;
避免更新异常:修改系主任只需修改Department表中的一条记录;
解决插入异常:可以单独添加系信息而不需要学生;
防止删除异常:删除学生不会丢失系信息;
文字丨手敲
领取专属 10元无门槛券
私享最新 技术干货