精华内容
下载资源
问答
  • 2021-01-13 10:32:46

    第一范式:所有字段设计,都是不可分解的原子值。
    第二范式:确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
    第三范式:确保数据表中的每一列数据都和主键直接相关,而不能间接相关。比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。(减少数据冗余)

     

    引用:

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

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

    1.第一范式

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

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

    用户信息表

    编号姓名性别年龄联系电话省份城市详细地址
    1张红欣260378-23459876河南开封朝阳区新华路23号
    2李四平320751-65432584广州广东白云区天明路148号
    3刘志国210371-87659852河南郑州二七区大学路198号
    4郭小明270371-62556789河南郑州新郑市薛店北街218号

    上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。

    2.第二范式

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

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

    订单信息表

    订单编号商品编号商品名称数量单位价格客户所属单位联系方式
    0011挖掘机11200000¥张三上海玖智020-1234567
    0012冲击钻8230¥张三上海玖智020-1234567
    0023铲车2980000¥李四北京公司010-1234567

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

    而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。

    订单信息表

    订单编号客户所属单位联系方式
    001张三上海玖智020-1234567
    002李四北京公司010-1234567

    订单项目表

    订单编号商品编号数量
    00111
    00128
    00232

    商品信息表

    商品编号商品名称单位商品价格
    1挖掘机1200000¥
    2冲击钻230¥
    3铲车980000¥

    这样设计,在很大程度上减小了数据库的冗余。如果要获取订单的商品信息,使用商品编号到商品信息表中查询即可。

    3.第三范式

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

    比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。

    订单信息表

    订单编号订单项目负责人业务员订单数量客户编号
    001挖掘机刘明李东明1台1
    002冲击钻李刚霍新峰8个2
    003铲车郭新一艾美丽2辆1

    客户信息表

    客户编号客户名称所属公司联系方式
    1李聪五一建设13253661015
    2刘新明个体经营13285746958

    这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。

    更多相关内容
  • 在实际开发中最为常见的设计范式个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。 第一范式的合理遵循需要...
  • 数据库设计三大范式

    2017-10-13 17:04:54
    介绍数据库设计基本的三大范式,简练透彻的立即数据库设计范式
  • 数据库的设计范式数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入、删除和更新操作异常。第一范式:数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本...
  • 数据库设计三大范式五大约束
  • 数据库设计三大范式(例子图解)

    千次阅读 多人点赞 2019-04-25 20:44:42
    为了减少数据冗余,设计数据表时必须遵循一定的规则,在关系型数据库中这种规则就称为范式。 引用:http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html 1.第一范式1NF(确保每列保持原子性) 每一...

    范式定义:<设计表的规范>

    为了减少数据冗余,设计数据表时必须遵循一定的规则,在关系型数据库中这种规则就称为范式。

    引用:http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html

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

    • 每一列属性都是不可再分的属性值,确保每一列的原子性
    •  两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。

    根据实际需求设计的字段值不可再分解。比如“部门”和“角色”在需求中都较常用,应该分开两个字段。

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

    第二范式是说一张表中包含了多种不同的实体属性,那么要必须分成多张表

    一个数据库表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。订单表和商品表不能设计在一张表里,应该分开两个表,再加一个多对多的商品id和订单id关联表。(一个表只描述一件事情)

    3.第三范式3NF(在2NF的基础上加外键)

    第三范式(3NF):必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);

    例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户id即可(外键),而不能有其他的客户信息。因为其他的客户信息直接关联于用户id,而不是直接与订单id直接相关。

    订单表中的用户信息不直接设计字段,设计一个用户id字段再外键关联用户表即可。

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

    二、三范式在可以不满足在实际应用中!!

     

    转载:https://blog.csdn.net/qq_33862644/article/details/79692652

    总结:

    第1范式:每个表中都有1列,并且该列是不可拆分的最小单元

    第2范式:1张表只描述一件事情

    第3范式:用外键做表的关联

    【数据库五大约束】

    1.primary KEY:设置主键约束;
    2.UNIQUE:设置唯一性约束,不能有重复值;
    3.DEFAULT 默认值约束,height DOUBLE(3,2)DEFAULT 1.2 height不输入是默认为1,2
    4.NOT NULL:设置非空约束,该字段不能为空;
    5.FOREIGN key :设置外键约束。
     

     

    展开全文
  • 数据库设计三大范式.pdf
  • 关系型数据库设计三大范式总结

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

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

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

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

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

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

    在这里插入图片描述
    上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。

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

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

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

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

    而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。

    在这里插入图片描述

    这样设计,在很大程度上减小了数据库的冗余。如果要获取订单的商品信息,使用商品编号到商品信息表中查询即可。

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

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

    比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。

    在这里插入图片描述

    这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。

    另注:
    第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;
    第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
    第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。

    简单来说,就是:
    第一范式:具有原子性
    第二范式:主键列与非主键列遵循完全函数依赖关系
    第三范式:非主键列之间没有传递函数依赖关系

    第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分(主要针对联合主键的表);3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。

    展开全文
  • 数据库设计三大范式应用实例剖析.doc
  • 计算机等考三级数据库基础:数据库设计三大范式应用实例剖析.docx
  •  数据库设计三大范式(重点):  第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的小单元,也是确保每一列的原子性;  例如:userInfo:山东省烟台市 131777368781 userAds:山东0省烟台市 ...
  • 1. 第一范式 1NF 设R为任一给定关系, 如果R中每个列与行的 交点处的取值都是不可再分的基本元素,则R为第一范式。 2. 第二范式 2NF 由于第一范式冗余高,插入操作异常,删除操作异常,于是便有了第二范式。 ...

    1. 第一范式 1NF

    设R为任一给定关系, 如果R中每个列与行的 交点处的取值都是不可再分的基本元素,则R为第一范式。

    2. 第二范式 2NF 

    由于第一范式冗余高,插入操作异常,删除操作异常,于是便有了第二范式。

    设R为任一给定关系,若R为1NF, 且其所有非主属性都完全函数依赖于候选关键字,则R为第二范式。

    在上表中,在没有拆分之前,学生上课信息表的主键为(SN0,CNO),但其中的课程信息却不依赖于SNO,所以要将学生上课信息表拆分为学生上课成绩表与课程表,这两张表通过课程编号CNO进行关联,即实现第二范式。

    3. 第三范式 3NF

    设R为任一给定关系,若R为2NF, 且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式。
    在上图未折分之前,通过课程编号CNO推出授课名称CTITLE,而通过授课名称CTITLE又可以分别推出授课老师INAME和授课地点IPLACE,这样就造成了传递依赖,所以要拆分成两张表,通过授课老师INAME关联起来,即实现第三范式。

    4. 第三范式的特殊形式 BCNF

    设R为任一给定关系,X、Y为其属性集,F为其函数依赖集,若R为3NF,且其F中所有函数依赖X→Y(Y 不属于X)中的X必包含候选关键字,则R为BCNF。

    在上图未拆分之前,候选关键字为(SNO,CTITLE)和(SNO,INAME),同时在上表中可以通过授课老师INAME推断出课程名称CTITLE,但授课老师INAME却不包含候选关键字,所以要拆分成右边的形式,即满足BC范式。

    展开全文
  • mysql数据库设计规范之数据库设计三范式
  • 数据库设计三大范式 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。 而通常我们用的最多的就是第一...
  • 数据库设计三大范式(举例详解)

    千次阅读 2022-04-26 20:11:09
    数据库设计三大范式。为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就被称为范式范式是符合某一种设计要求的总结。因此要设计一个结构合理的关系型数据库,就...
  • 数据库设计三大范式和五大约束

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

    万次阅读 多人点赞 2018-08-09 12:14:46
    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 目前关系数据库有六种范式:第一范式(1NF)、第二范式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,783
精华内容 28,313
关键字:

数据库设计三大范式