mysql数据库设计六范式与反范式

1 第一范式(1NF)

数据库表的每一列都是不可分割的原子数据项,即列不可拆分。不满足第一范式的数据库不是关系型数据库。

2 第二范式(2NF)

定义:不存在仅依赖于主键一部分的属性(不能存在部分依赖于主键)
或:建立在第一范式的基础上,要求数据库表中的每个实例或记录必须是可以唯一被区分的, 即唯一标识。
例子:选课关系(学号,课程名称,成绩,学分),学号与课程名称是主键,其不满足2NF,因为课程名称和学分是一对一,学分与另一个主键学号没有关联,即存在了部分依赖于主键

3 第三范式(3NF)

定义:建立在第二范式的基础上,非主键属性必须直接依赖于主键属性而不能传递依赖。
例子:一个表,主键是a列,还有b列和c列,其中b列与a列直接相关,而c列与b列直接相关,进而与主键a列相关,存在了传递,多以不符合3DF

4 巴斯-科德范式(BCNF)

可以看做第三范式的子集
BC范式(BCNF):符合3NF,并且主属性不依赖于主属性。

还可以这么说:若一个关系达到了第三范式,并且它只有一个候选码,或者它的每个候选码都是单属性,则该关系自然达到BC范式。

满足BCNF条件:
1、所有非主属性对每一个候选键都是完全函数依赖;
2、所有的主属性对每一个不包含它的候选键,也是完全函数依赖;
3、没有任何属性完全函数依赖于非候选键的任何一组属性;

5 第四范式 (4NF)

第四范式:要求把同一表内的多对多关系删除。

6 第五范式(5NF)

第五范式:从最终结构重新建立原始结构。

7 反范式

没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值