数据库三大范式以及mysql存储引擎

本文详细阐述了数据库设计中的三个规范:第一范式确保每列数据的原子性;第二范式要求实体属性完全依赖于主键,避免多对多关系直接存储;第三范式则进一步消除非主键依赖,避免数据冗余。

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

数据库三范式:
第一范式,(一个表,每一列都是原子性;)  
    所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项。
    
比如一张用户表,用户信息,包括了姓名和电话,能够再进行拆分的,就不满足第一范式。

第二范式,(也就是说在表中存在多对多的关系,就不满足第二范式,必须再加一个中间表来区分)
          (要求一张表,只描述一件事)  
    要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性
要求数据库表中的每个实例或记录必须可以被唯一地区分。

比如订单表,既保存了订单信息又保存商品信息,那么就不满足第二范式。

第三范式,是第二范式的子集,第一和第二范式主要区分能不能拆成两张表,
而第三范式要求一个表中不能包含其他表已经包含的非主键信息。
如果能通过其他主键查到,那么就不能继续保存,否则就数据冗余。还可能造成更新丢失异常。


BC范式:一张表中,不能出现两组,两个组合关键字索引。
比如一张商品表包含了供应商名称,商品ID,供应商联系人,商品数量等字段。
那么当供应商刚签合同,还没供应商品数量的时候,就查不到供应商的信息,就会出现插入异常。  而且供应商名称,商品ID 能组合查到唯一,商品ID,供应商联系人也能组合查到唯一,这时候就应该分表。供应商表,和商品表。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值