精华内容
下载资源
问答
  • 三大范式

    2017-10-03 15:38:36
    三大范式

    数据库三大范式

    简介

    数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。

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

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

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

    常见的三大范式

    第一范式(1NF)(确保每列保持原子性、无重复的列)
    第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。
    第二范式(2NF)(确保表中的每列都和主键相关、属性完全依赖于主键【消除部分子函数依赖】)
    第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
    第三范式(3NF)(确保每列都和主键列直接相关,而不是间接相关、属性不依赖于其它非主属性【消除传递依赖】)
    第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
    展开全文
  • 数据库设计三大范式

    万次阅读 2016-10-20 21:59:49
    数据库设计三大范式  为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须...

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

    在实际开发中最为常见的设计范式有三个:

    1.第一范式(确保每列保持原子性)

    第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

    第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第一范式,如下表所示。
    这里写图片描述
    上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。

    2.第二范式(确保表中的每列都和主键相关)

    第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

    比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所示。

    订单信息表
    这里写图片描述
    这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。

    而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。
    这里写图片描述
    这样设计,在很大程度上减小了数据库的冗余。如果要获取订单的商品信息,使用商品编号到商品信息表中查询即可。

    3.第三范式(确保每列都和主键列直接相关,而不是间接相关)

    第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

    比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。
    这里写图片描述
    这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。

    展开全文
  • 数据库三大范式

    万次阅读 多人点赞 2018-08-15 16:31:51
    数据库三大范式 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。 1.第一范式(1NF):列不可...

    数据库三大范式

    数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。

    1.第一范式1NF:列不可再分

    1.每一列属性都是不可再分的属性值,确保每一列的原子性

    2.两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据

     

    2.第二范式(2NF)属性完全依赖于主键

    第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主键

     

     

    3.第三范式(3NF)属性不依赖于其它非主属性    属性直接依赖于主键

    数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a-->b-->c  属性之间含有这样的关系,是不符合第三范式的。

    比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)

    这样一个表结构,就存在上述关系。 学号--> 所在院校 --> (院校地址,院校电话)

    这样的表结构,我们应该拆开来,如下。

       (学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)

    总结三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 11、Mysql的三范式 1、第一范式:保证列具有原子性,不可再分 表一 表二 表一 address 不满足第一范式,里面的字段可以再分,而表二满足第一范式,...3、第三范式:每列和主键都有直接关系,限制一张表中的一对多关

    11、Mysql的三大范式

    1、第一范式:保证列具有原子性,不可再分

    表一

    在这里插入图片描述

    表二

    在这里插入图片描述

    表一 address 不满足第一范式,里面的字段可以再分,而表二满足第一范式,里面的所有字段不能再分(birthday其实也可以分,忽略一下)

    2、第二范式:满足第一范式的基础上,具有唯一性,添加主键外键等,限制表中多对多的关系

    表一
    在这里插入图片描述

    表二

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    表一 里面的字段 不满足第二范式,里面的字段里面是多对多的关系,而表二满足第二范式,里面的字段已经通过外键关联了

    3、第三范式:每列和主键都有直接关系,限制一张表中的一对多关系

    表一
    在这里插入图片描述

    表二
    在这里插入图片描述

    在这里插入图片描述

    表一 里面看出来role是一对多的关系,不满足第三范式,而表二里面是把表分开,每列和主键都有直接关系

    以上结论自己分析出来的,如有不对评论指出,你的反馈是我成长的动力,谢谢







    花开一千年,花落一千年,花叶永不见

    展开全文
  • 数据库的三大范式+BC范式

    千次阅读 多人点赞 2019-02-26 22:15:29
    数据库有三大范式和BC范式,我们来详细探讨一下: 首先三大范式: 第一范式 第一范式(1NF):表中所有属性都不能再分,都应该是原子值。 这也是数据表的最低的最基本的要求。 第二范式 第二范式(2NF):在满足第一...
  • 三大范式解析:

    2019-08-15 14:56:18
    三大范式解析: 新人很难读懂三大范式,接下来根据自己的理解解析一下,很多不足,多多指教。 (1)第一范式1NF: 原子性:表中每列不可再拆分。比如你的身份证号码,他是固定的长度,分开就不能表示身份证id,像这样的...
  • 三大范式理解

    2020-04-11 14:22:33
    而通常我们用的最多的就是第一范式(1NF)、第二范式(2NF)、第三范式(3NF),也就是本文要讲的“三范式”。 第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项。 举例说明: 在上面的表中,...
  • 数据库三大范式介绍

    千次阅读 2020-10-23 17:00:48
    (1)三范式是什么? 数据库设计表时,有三种规则或者原则,叫做三范式 ...第三范式(3NF):在第二范式的基础上,每列都和主键直接相关(数据比较少冗余的) – 使用外键 所有属性都完全依赖于学号,所.
  • 关于三大范式的认识

    2018-06-07 17:37:50
    范式引入这个概念,是学习了三范式但是还是不是很能区分第二范式和第三范式的区别。在这里作为自己的理解,当作笔记来区分一下三范式。第一范式所谓第一范式,就是指字段值不可分割,体现了字段的原子性。第...
  • 数据库设计-三大范式

    万次阅读 2021-02-07 16:19:37
    第一范式例子第二范式例子第三范式例子 数据库设计概述 目的:减少数据冗余 在设计和数据库有关的系统时,数据库表的设计至关重要,这些设计关系整个系统的架构,需要精心的仔细考虑。 数据库的设计主要包含了设计...
  • 数据库设计三大范式和五约束

    千次阅读 多人点赞 2020-08-30 11:20:00
    一、三大范式: 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中...
  • 三大范式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,344
精华内容 39,337
关键字:

三大范式