SQL范式

作者: zjbao123 | 来源:发表于2016-12-15 11:51 被阅读169次

范式(数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。

满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

第一范式

第一范式(1NF):如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF(即R符合第一范式)。简单的说,就是每一个列(属性)只有一个,没有重复。

要求

1.必须有主键来加以识别。

2.每个字段只能存放单一的值并确保有数据没有重复的组。

例如:

姓名 班级 课程
小明 1班 数学,语文
小红 2班 英语
小明 2班 数学

里面还有重复组并且没有存放单一的值,并不符合第一范式,我们给其增加主键学号加以区别:

学号 姓名 班级 课程
101 小明 1班 数学
101 小明 1班 语文
201 小红 2班 英语
202 小明 2班 数学

第二范式

首先要满足第一范式。它的规则是要求数据表里的所有数据都要和该数据表的主键有完全依赖关系。例如有表:

货物 供应商ID 供应商 价格 供应商地址
毛巾 01 世纪联华 10.0 星光大道
牙刷 01 世纪联华 5.0 星光大道
毛巾 02 十足 12.0 月光大道

可知,这里的主键有货物和供应商ID,价格和两个主键都有关,可是供应商地址只和供应商ID有依赖关系。那么不符合第二范式,我们可以将其修改为两张表:

供应商ID 供应商 供应商地址
01 世纪联华 星光大道
02 十足 月光大道
货物 供应商ID 价格
毛巾 01 10.0
牙刷 01 5.0
毛巾 01 12.0

这样就符合了第二范式要求的表内数据和表内主键完全依赖的关系。

第三范式

在第二范式的基础上,要求所有非键属性都只和候选键有相关性,也就是说非键属性之间应该是独立无关的。
从上述表来说,供应商和供应商地址是相关的,知道了供应商也就知道了供应商地址(不考虑一厂多址的情况)。可以分为:

供应商ID 供应商
01 世纪联华
02 十足
供应商ID 供应商地址
01 星光大道
02 月光大道

相关文章

  • SQL范式

    范式(数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据...

  • SQL范式设计

    六种范式 从低到高分别是: 1NF(第一范式), 2NF(第二范式), 3NF(第三范式), BCNF(巴斯-科德...

  • sql 三范式

    数据库结构设计三范式 第一范式 是对属性的原子性,要求属性具有原子性,不可再分解。 错误设计: StuIdStuN...

  • SQL入门知识大纲

    SQL •范式 第一范式◾目标是确保每列的原子性。每列都是不可再分的最小数据单元 ◦ 第二范式◾目标是要求每个...

  • mysql 问题整理

    SQL 优化 范式 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些...

  • 数据库三范式

    SQL范式越高,冗余越低。第一范式(1NF):确保每一列的原子性如果每一列都是不可再分的最小数据单元,则满足第一范...

  • SQL必知必会(设计范式)

    数据库的设计范式都包括哪些 我们在设计关系型数据库模型的时候,需要对关系内部各个属性之间联系的合理化程度进行定义,...

  • MySQL三大范式和反范式

    MySQL三大范式和反范式 第一范式 第二范式 第三范式 反范式

  • SQL必知必会(反范式设计)

    BCNF(巴斯范式) 如果数据表的关系模式符合 3NF 的要求,就不存在问题了吗?我们来看下这张仓库管理关系 wa...

  • SparkSQL的3种Join实现

    原文引言 Join是SQL语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余、...

网友评论

      本文标题:SQL范式

      本文链接:https://www.haomeiwen.com/subject/hqlapttx.html