美文网首页
sql学习笔记4-三大范式

sql学习笔记4-三大范式

作者: 风一样的我1 | 来源:发表于2020-10-10 22:39 被阅读0次

1、第一范式(1NF)

第一范式即表的字段必须原子性,不可以再分割。如果实体中的某个属性具有多个值时,必须拆分为多个属性。如在统计某商品的进销存信息时,不能将“销售”作为一个字段,因为销售包括了数量和金额甚至其它信息。
当然,表格字段设计得越详细,在做某些实际操作时会越方便,但也并不绝对。总之,范式应根据不同的业务场景而设计。

2、第二范式(2NF)

在满足1NF的前提下,除主键以外的任意一列,都完全依赖于主键(而不能是部分依赖)。

  • 完全依赖:由一个或者一组联合属性能推出Y,即说Y完全依赖于X;
  • 部分依赖:由一组联合属性的部分能推出Y,即说Y部分依赖于X,一般有联合主键时出现。那么此时不符合2NF的要求。
    举例说明。
CREATE TABLE order(product_id int, product_name varchar(20),
                   customer_id int,customer_name varchar(20), 
                    PRIMARY KEY(product_id, customer_id));

上表中,product_id和customer_id都部分依赖于联合主键,因此不符合2NF。要满足2NF,需要作拆表的操作。

CREATE TABLE order(order_id int, product_id int,
                   customer_id int, 
                   PRIMARY KEY(order_int));
CREATE TABLE  product(product_id int, product_name varchar(20),
                   PRIMARY KEY(product_id));
CREATE TABLE  customer(customer_id int, customer_name varchar(20),
                   PRIMARY KEY(customer_id));

3、第三范式(3NF)

在满足2NF的 前提下,除开主键列的其他列之间不能有传递依赖关系。
如在以下的order表中,order_id为主键,但是customer_name还依赖于customer_id,造成了信息冗余,因此不满足第三范式。

CREATE TABLE order(order_id int, product_id int,
                   customer_id int,
                   customer_name varchar(20) 
                   PRIMARY KEY(order_int));

更改的方法是将customer_name添加到customer表中。

总结,1NF告诉我们在设计表时要尽量依据业务的需要进行设计(不能过粗也不能过细),2NF和3NF告诉我们只有主键能且完全决定其它属性。

相关文章

  • sql学习笔记4-三大范式

    1、第一范式(1NF) 第一范式即表的字段必须原子性,不可以再分割。如果实体中的某个属性具有多个值时,必须拆分为多...

  • 物理学思维之古典宇宙观

    学习笔记摘要 科学 范式

  • SQL范式

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

  • Oracle SQL 学习笔记4- 子查询

    子查询可以解决的问题类型 在实际编写sql的过程中,我们往往会遇到一些比较复杂的sql场景,这个时候,我们需要用到...

  • SQL学习笔记——数据库设计三范式

    数据库设计范式:数据库表的设计依据。教你怎么进行数据库表的设计。 第一范式:要求任何一张表必须有主键,没一个字段原...

  • Learn SQL| Codecademy第二节学习笔记

    1、Learn SQL| Codecademy第一节学习笔记 2、学习记录☞Learn SQL| Codecade...

  • mysql 操作的常用命令

    sql:SHOWVARIABLESLIKE'character%' mysql学习笔记-常用命令常用sql:SHO...

  • SQL范式设计

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

  • sql 三范式

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

  • SQL入门知识大纲

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

网友评论

      本文标题:sql学习笔记4-三大范式

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