第二范式

定义:数据库的表中不存在非关键字段任一候选关键字段部分函数依赖

如果非关键字段对这个组合关键字中的某一个字段存在依赖关系,就称之为部分函数依赖。

注意:组合关键字段,由两个或两个以上的字段来标识这一行数据

以下面的商品表为例来说明:

商品名称供应商价格描述重量供应商电话有效期分类
可乐饮料一厂3.00250g88888882020.12饮料
可乐饮料二厂3.00250g6666662020.12饮料

由于供应商和商品之间是多对对的关系,所以只有使用商品名称+供应商才能唯一标识出一件商品。

上表中存在以下的部分函数依赖关系:

  • (商品名称) 决定 (价格, 描述, 重量, 商品有效期)
  • (供应商) 决定 (供应商电话)

这会导致数据的操作异常,以及数据的冗余。

  • 如果饮料一厂没有提供任何数据,该表则找不到饮料一厂的信息(供应商、供应商电话)
  • 如果把饮料一厂所提供的可乐这些商品删除掉之后,同样找不到饮料一厂的信息
  • 饮料一厂所提供多种商品,如果更新饮料一厂供应商电话,势必需同时更新多条商品的供应商电话
  • 饮料一厂所提供多种商品,供应商的电话在该表中势必会重复多次显示,造成数据冗余

解决方式,将不符合第二范式的表进行拆分:

将商品信息单独拿出来,存放到一张表中:

商品ID商品名称价格描述重量有效期分类
1可乐3.00250g2020.12饮料

将供应商信息存储到另外一张表中:

供应商ID供应商名称供应商电话
1饮料一厂8888888
2饮料二厂666666

再建立一张表存放供应商与商品之间的关系:

供应商ID商品ID
11

拆分之后的表,已经成为了这种单关键字的表,也也不存在复合关键字,也就不存在部分函数依赖关系,就符合第二范式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值