mysql 07数据库三范式——个人笔记

表的设计模式

表关系

  • 一对一
  • 一对多
  • 多对一
  • 多对多

第一范式(1NF)

  • 需要保证原子性即数据列一对一
用户id 姓名 性别  年龄  联系方式 家庭住址        张三  男    18   tel:13888888888 qq 123456 家庭住址:dfdsaf

第一范式
用户id  姓名 性别 年龄  手机 qq 省份 市区 县  # 直到每个列不能继续拆分为止  

第二范式(2NF)

  • 在第一范式的基础上要求所有列必须和主键有关系 消除补分依赖
商品id 商品名称 价格 商品详情 重量 有效期 分类 分类描述  # 分类描述 并不依赖于主键  需要拆分 

存在问题: 
	数据冗余 : 每条记录含有相同的信息  
	删除异常: 删除分类描述 把商品也删掉了  
	插入异常: 不知道分类  商品没法保存
	更新异常: 更新分类信息 所有的商品信息都得更新  

拆分以后:

商品id 商品名称  价格 重量 商品详情 有效期 分类id       # 一个商品只属于一个分类的 情况   一个分类里边有多个商品 
 
分类id 分类名称  分类描述 

第三范式(3NF)

  • 3NF 满足第二范式基础上 消除传递依赖 多对多
商品名称 价格 商品详情 重量 有效期 分类 分类描述   分类描述并不依赖于主键   
分类id 分类名称  分类描述     

分类id  商品id     
2		1
3		1

反范式

  • 牺牲空间换区搜索时间的提升
在商品表上多加一个字段   总价  总价等于单价乘以数量     好处是 一张表就可以得到结果  坏处是  冗余   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值