数据库的三大范式及其重要性,详细易懂

目录

一.前言

二.  三大范式

      2.1 第一范式(1NF)---列不可再分

       2.2 第二范式(2NF)---主键关系

       2.3  第三范式(3NF)---外键关系

三.为什么要遵循三大范式


一.前言

        数据库是现代信息系统中的核心组成部分,它的设计和优化对系统的性能和数据完整性有着重要影响。在数据库设计中,三大范式是一种重要的规范,它可以帮助我们有效地组织和管理数据。本文将介绍数据库的三大范式,包括第一范式、第二范式和第三范式,并解释它们的重要性和应用场景。

二.  三大范式

      2.1 第一范式(1NF)---列不可再分

           第一范式是数据库设计中的基本要求,它要求每个数据表中的每个字段都是原子的,即不能再分解为更小的数据单元。这样可以避免数据冗余和数据更新异常的问题。

           举例:

                有以下一张表,当然这张表是不遵循第一范式的,因为列还可以再分

IDnamesextelphoneaddress
1张三13155436923湖南省长沙市岳麓区天顶街道

           ----问题:双十一要求查询哪个省份的纸巾买的最多??

                        我们是不是要根据前面的省份进行查询,如果地址是上方这样的话,我们就要进行截取,并且有些自治区等并不是前面三个字,所以就不是很方便,所以我们在淘宝等购物平台表设计是以下设计的:它会有一个地址表:

IDprovincecityaddressdetailed-address
1湖南省长沙市岳麓区天顶街道
          我们在购物的时候填写地址也是先选择省份然后选择其它的,这样的表才符合数据库的第一范式

       2.2 第二范式(2NF)---主键关系

            第二范式要求数据表中的每个非主键字段完全依赖于主键,而不是依赖于其他非主键字段。这样可以避免数据冗余和更新异常的问题。

        举例:

                这个就是一个主键的约束,每一个表都有一个主键,有以下一张表

bid(主键)bnamewidpressdata
1《中秋的起由》1张三出版社1990-2-3

       2.3  第三范式(3NF)---外键关系

        第三范式要求数据表中的每个非主键字段都不依赖于其他非主键字段,而是直接依赖于主键。这样可以进一步减少数据冗余和更新异常的问题

        举例:

                第三范式,就是外键约束,比如下面两张表;

bid(主键)bnamewid(外键)pressdata
1《中秋的起由》1张三出版社1990-2-3
                 作者表的两个属性是依赖于作者ID而不是书籍ID
wid(主键)wnamewnationlity
1张三中国
 表设计如下
CREATE TABLE books (
    bid INT PRIMARY KEY,
    bname VARCHAR(255),
    wid INT,
    press VARCHAR(255),
    data DATE,
    FOREIGN KEY (wid) REFERENCES authors(wid)
);

CREATE TABLE authors (
    wid INT PRIMARY KEY,
    wname VARCHAR(255),
    wnationality VARCHAR(255)
);

三.为什么要遵循三大范式

        遵循三大范式有以下几个重要的原因:

  1. 数据的一致性:通过遵循三大范式,可以确保数据的一致性。数据存储在多个表中,每个表都有特定的目的和结构,这样可以避免数据冗余和不一致的问题。

  2. 数据的完整性:三大范式可以帮助我们保持数据的完整性。通过将数据分解为更小的、原子的数据单元,可以避免数据更新异常和数据丢失的问题。

  3. 数据的查询效率:遵循三大范式可以提高数据库的查询效率。通过将数据分解为多个表,可以减少数据的冗余,提高查询的速度和效率。

但是并不是所有的表,数据库都要符合三大范式,这个是根据自己的公司情况以及具体形势来决定,总之,是否符合三大范式取决于具体的业务需求和性能要求。在设计数据库时,需要根据实际情况综合考虑系统需求、性能要求、数据复杂性和系统扩展性等因素,并权衡范式的优劣。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值