【MySQL】数据库设计规范

1、键和相关属性的概念

范式的定义会用到主键和候选键,数据库的键由一个或多个属性组成。数据表中集中常见的键和属性的定义:

  • 超键:能唯一标识元组的信息叫做超键
  • 候选键:如果超键不包括对多余的属性,那么这个超键就是候选键
  • 主键:用户可以从候选键中选一个作为主键
  • 外键:如果数据表R1中的某属性集不是R1的主键,而是另一个数据表R2的主键,那么这个属性集就是数据表R1的外键
  • 主属性:包含在任一候选键中的属性称为主属性
  • 非主属性:与主属性相对,指的是不包含在任何一个候选键中的属性

2、数据库三范式

第一范式:字段不可再次拆分

例如:student表

字段名字段类型
idint
student_infovarchar(100)

表中的 student_info 可以拆分为更小粒度的字段

第二范式:建立在第一范式的基础上,属性完全依赖于主键

不能部分依赖,
例如:对于复合主键(A,B),C 不能只依赖于 A

第三范式:建立在第二范式的基础上,属性直接依赖于主键

不能间接依赖
例如:不能 C 依赖于 B,B依赖于 A

范式是为了降低冗余,有时候为了提高运行效率可以适当增加冗余。

3、反范式的适用场景

当冗余信息有价值很或者能大幅度提高查询效率的时候,才会采用反范式的优化

  1. 增加冗余字段
  2. 历史快照

历史数据的需要:

在现实生活中,我们经常需要一些冗余信息,比如订单中的收货人信息,电话、姓名、地址等。每次发生的订单收货信息都属于历史快照,需要进行保存,但是用户可以随时修改自己的信息,这是保存这些冗余信息是非常有必要的

数据仓库;

数据仓库通常存储历史数据,对增删改的实时性要求不强,对数据历史的分析需求强,这是适当允许数据的冗余度,更方便进行数据分析

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值