不满足第二范式(2NF)的反例

第二范式(2NF)要求数据库表必须满足第一范式(1NF),并且所有非主键属性都必须完全依赖于整个主键,而不能只依赖于主键的一部分。

反例:学生选课表
考虑以下学生选课表:

复制
学生选课(学号, 课程号, 学生姓名, 课程名称, 成绩)
假设主键是复合主键(学号, 课程号),那么:

满足依赖:成绩完全依赖于整个主键(学号+课程号),因为成绩是由特定学生和特定课程共同决定的

不满足依赖:

学生姓名只依赖于学号(主键的一部分)

课程名称只依赖于课程号(主键的另一部分)

问题分析
这个设计违反了2NF,因为:

学生姓名、系别只依赖于学号(主键的一部分)

课程名称只依赖于课程号(主键的另一部分)

解决方案
要使其满足2NF,应该将其分解为三个表:

学生表(学号, 学生姓名)

课程表(课程号, 课程名称)

选课关系表(学号, 课程号, 成绩)

这样每个非主键属性都完全依赖于整个主键。

第二范式刻画的是两个表之间多对多关系
第三范式刻画的是两个表之间一对多关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值