首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《一》 数据库模式分解

/

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表中的一条记录;

解决插入异常:可以单独添加系信息而不需要学生;

防止删除异常:删除学生不会丢失系信息;

文字丨手敲

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OhE4mvobzKCXHxOIt2okOxRA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券