10、数据库规范化与设计全解析

数据库规范化与设计全解析

1. 数据库规范化深入探究

在数据库操作中,若要获取项目 - 课程、项目 - 学生以及学生 - 课程的组合,可运用 Fagin 定理将连接依赖(JD)分解为以下投影:
- ProgramStructure {Pgm#, Crs#, CrsSeqn} PK[Pgm#, Crs#] 或 PK[Pgm#, CrsSeqn]
- ProgramStudentMap {Pgm#, Stud#} PK[Pgm#, Stud#]
- StudentSchedule {Stud#, Crs#, Term#, …} PK[Stud#, Crs#, Term#]

这里使用了有意义的关系名称,且这三个关系将替代 ProgramStudCourseMap 关系。每个新关系实现了二元关系,即三元关系(由 ProgramStudCourseMap 表示)被三个二元关系(由 ProgramStructure、ProgramStudentMap 和 StudentSchedule 表示)所取代。在 ProgramStructure 关系中,引入 CrsSeqn 属性是为了方便特定专业课程的排序,这并非规范化过程的必要部分。而在 StudentSchedule 关系中,将 Term# 属性提升为主键的一部分,是为了增加灵活性,例如学生可以重复选课以获得更好的成绩。

最终的规范化关系如下:
- Program {Pgm#, PgmName, …} PK[Pgm#]
- Course {Crs#, CrsName, …} PK[Crs#]
- Student {Stud#, StudFName, StudLName, StudGPA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值