【MySQL】数据库设计规范

文章介绍了数据库设计规范,包括键和属性的概念,如超键、候选键、主键和外键,以及数据库三范式:第一范式、第二范式和第三范式,强调了范式在减少冗余中的作用。同时,讨论了反范式的应用场景,如历史快照和数据仓库,指出在某些情况下,适当冗余可以提高查询效率和数据分析便利性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、键和相关属性的概念

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

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

2、数据库三范式

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

例如:student表

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

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

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

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

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

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

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

3、反范式的适用场景

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

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

历史数据的需要:

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

数据仓库;

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值