数据库三范式(联合主键)

本文详细介绍了数据库设计中的三大范式——第一范式、第二范式和第三范式,强调了联合主键在第二范式中的应用。通过实例解释了联合主键如何避免数据冗余和提高查询效率,同时也讨论了反范式化在特定场景下的优缺点。文章还探讨了在MySQL InnoDB中缺少主键的影响,指出每个表都应该设置主键以优化性能和数据管理。
摘要由CSDN通过智能技术生成

数据库设计的三大范式~联合主键

什么是范式

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中,这种规则就是范式。范式是符合某一种级别的关系模式的集合。关系型数据库中的关系必须满足一定的要求,即满足不同的范式。

目前关系型数据库有六种范式,分别为:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。要求最低的范式是第一范式。第二范式在第一范式的基础上又进一步的添加了要求,其余范式依次类推。

一般说来,数据库只需满足第三范式就行了,而通常我们用的最多的就是第一范式、第二范式、第三范式,也就是接下来要讲的“三大范式”。

第一范式

第一范式(1NF)用来确保每列的原子性,要求每列(或者每个属性值)都是不可再分的最小数据单元(也称为最小的原子单元)。

举例:

员工编号 员工姓名 部门岗位 员工工资
EM71001 张无忌 网络部软件开发工程师 8000
EM71002 楚天南 运营部运营总监 8100
EM71003 梁萧 销售部售货员 8300

上表中的部门岗位字段不符合第一范式,可以拆分为“部门”和“岗位”两个字段。

分解后方便我们对部门和岗位进行单独查询

员工编号 员工姓名 部门 岗位 员工工资
EM71001 张无忌 网络部 软件开发工程师 8000
EM71002 楚天南 运营部 运营总监 8100
EM71003 梁萧 销售部 售货员 8300

不符合第一范式导致问题

  • 部门和岗位作为一个表中一个字段进行设计,当我们需要对某个员工的部门或者岗位无法进行单独查询获取数据。

第二范式

在说明第二范式之前我们需要先了解什么是联合主键,什么是复合主键

什么是联合主键和复合主键

联合主键就是用2个或2个以上的字段组成主键。形式上复合主键就是联合主键,由多个字段作为主键,将记录形成一个唯一性。

场景1:

可以这么理解,比如,你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以了,但是,现在要求可能会有补 充订单,使用相同的订单号,

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值