关系型数据库设计三大范式

1.何为数据库范式?

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同
规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

简单来讲,就是数据库设计的一系列规范,每一级范式都是基于前一范式的基础上,范式层级越高,数据库质量越高。(本文指涉及前三大范式)

2.第一范式

定义:数据表中所有字段都是单一属性,不可再分。即第一范式要求数据库的表都是二维表。

例如:妹子表

姓名身高体重住址美丑联系方式
翠花1.748中国很美手机、微信
姓名身高体重住址美丑手机微信
翠花1.748中国很美1239887

两张表记录的信息都是一样的,然而表一中的联系方式可细分为手机号和微信号来存储。表二则将两个相关信息分开存储,保证了最小单元不可再分,满足了第一范式。

3.第二范式

定义:每个非主属性由整个主键函数决定,不能由主键的部分决定。非关键字段对主键完全依赖,消除部分函数依赖。即存在组合关键字中的字段决定非关键字的情况。

例如:商品表

名称供应商名称价格重量供应商电话有效期分类
奶茶娃哈哈4.0300ml666一年饮料

存在依赖关系:(名称)——>(价格,重量,有效期)
(供应商)——>(供应商电话)

ID名称价格重量有效期分类
1奶茶4.0300ml一年
供应商ID商品ID
11
ID供应商名称电话
1奶茶666

4.第三范式

定义:表中所有非主属性对任何候选关键字都不存在传递依赖,则满足第三范式。
讲人话就是:除了主键,其他任何字段都不对其他的字段造成依赖关系。看看例子就明白了。

例如:商品表

名称价格重量有效期分类分类描述
奶茶4.0300ml一年饮料很好喝

存在依赖关系:(名称)——>(分类)——>(分类描述)
再数据量大的时候,如果很多商品式一个分类的话,那么分类和分类描述就会出现大量的数据冗余。同时野会存在数据的插入更新及删除异常。

商品ID名称价格重量有效期
1奶茶4.0300ml一年
分类ID分类分类描述
1饮料很好喝
分类ID商品ID
11
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库设计三⼤范式 数据的概念 数据的概念 对象object,也称为实体型。在现实世界中具有相同性质、遵循相同规则的⼀类事物的抽象称为对象。对象是实体集数据化的结果,⽐如学 ⽣、⽼师、课程等是对象。 实例instance 是指对象中的每⼀个具体的事物,例如学⽣张三、李四。 属性attribute 是实体的某⼀⽅⾯特征的抽象表⽰,例如学⽣的姓名、性别、班级、年龄等。 主码primary key 能够唯⼀标识⼀个实体。 次码secondary key 指实体中不能唯⼀标识实体的属性。 域domain 指属性的取值范围,⽐如性别中的男、⼥。 完整性 指存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。 什么是范式 什么是范式 当⼀个关系中的所有分类都是不可再分的数据项时,该关系是规范化的。不可再分的数据项,即不存在组合数据项和多项数据项。⼀ 个低⼀级的关系模式,通过模式分解可以转换为若⼲⾼⼀级范式的关系模式的集合,这个过程就叫规范化。⼆维数据表可以分为5级范式为 1NF、2NF、3NF、4NF、5NF。第⼀范式满⾜最低的要求条件,第五范式满⾜最⾼要求的条件。 第⼀范式条件:必须不包含重复组的关系,即每⼀列都是不可拆分的原⼦项。 如以下表存在可再分项(⾼级职称),所以不满⾜第⼀范式规范化转换为规范化的第⼀范式⽅法很简单,将表分别从横向、纵向展开即可。将⾼级职称横向展开即可以得到满⾜第⼀范式的表结构。 第⼆范式条件:关系模式必须满⾜第⼀范式,并且所有⾮主属性都完全依赖于主码。注意,符合第⼆范式的关系模型可能还存在数据冗余、 更新异常等问题。 举例如关系模型(职⼯号,姓名,职称,项⽬号,项⽬名称)中,职⼯号->姓名,职⼯号->职称,⽽项⽬号->项⽬名称。显然依赖关 系不满⾜第⼆范式,常⽤的解决办法是差分表格,⽐如拆分为职⼯信息表和项⽬信息表。 第三范式的条件:关系模型满⾜第⼆范式,所有⾮主属性对任何候选关键字都不存在传递依赖。即每个属性都跟主键有直接关系⽽不是间接 关系,像:a-->b-->c。⼀般数据库设计中,⼀般要求达到3NF,第四第五较少涉及。 ⽐如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)这样⼀个表结构,就存在上述关系。 学号--> 所在院校 --> (院校地址,院校电话)。我们应该拆开来,如下: (学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话) 数据库的事务性 数据库的事务性 除了数据库设计三⼤范式之外,事务处理也是保证数据完整性的重要⼿段。事务是单独的⼯作单元,该单元可以包含多个操作以完成 ⼀个完整的任务。锁是在多⽤户环境中对数据访问的限制。事务和锁确保了数据的完整性。 事务处理 提交commit,当所有的操作步骤都被完整执⾏后,称该事务被提交。 回滚rollback,由于某⼀操作步骤执⾏失败,导致所有步骤都没有被提交,则事务必须回滚,即回到事务执⾏前的状态。 事务ACID属性 事务处理的特性,每⼀个事务都有他们所共有的特性,叫做ACID特性,分别是原⼦性atomicity,⼀致性consistency、隔离性 Isolation,持久性Durability。 1. 原⼦性,事务的原⼦性表⽰事务执⾏过程中,把事务作为⼀个⼯作单元处理,⼀个⼯作单元可能包括若⼲个操作步骤,每个操作步骤 都必须完成才算完成,若因任何原因导致其中的⼀个步骤操作失败,则所有步骤操作失败,前⾯的步骤必须回滚。 2. ⼀致性,事务的⼀致性保证数据处于⼀致状态。如果事务开始时系统处于⼀致状态,则事务结束时系统也应处于⼀致状态,不管事务 成功还是失败。 3. 隔离性,事务的隔离性保证事务访问的任何数据不会受到其他事务所做的任何改变的影响,直到该事务完成。 4. 持久性,事务的持久性保证加⼊事务执⾏成功,则它在系统中产⽣的结果应该是持久的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值