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

目录

一.前言

二.  三大范式

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

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

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
数据库三大范式是指在设计关系型数据库时需要遵循的规范,以确保数据的完整性和一致性。具体而言,第一范式(1NF)要求每个字段只能包含原子性的值,第二范式(2NF)要求每个非主键字段都必须完全依赖于主键,第三范式(3NF)要求每个非主键字段之间不能相互依赖。下面是三大范式详细介绍和示例: 1. 第一范式(1NF):要求关系中的每个属性都是不可再分的原子值,即每个属性都不可再分成更小的部分。例如,一个人的姓名和姓氏应该作为两个不同的属性存储,而不是将它们合并成一个属性。 2. 第二范式(2NF):在满足第一范式的基础上,要求关系中的非主键属性必须完全依赖于主键,而不能存在部分依赖关系。例如,如果一个订单号确定一个产品和数量,则产品和数量应该作为一个表的属性,而不是将它们作为订单表的属性。 3. 第三范式(3NF):在满足第二范式的基础上,要求关系中的非主键属性之间不能存在传递依赖关系。例如,如果一个订单号确定一个产品类型,则产品类型和产品描述应该作为不同的表的属性,而不是将它们作为订单表的属性。 下面是一些SQL语句的示例: 1. 创建表时指定主键: ``` CREATE TABLE orders ( order_id INT PRIMARY KEY, product_name VARCHAR(50), quantity INT, price DECIMAL(10,2), customer_id INT ); ``` 2. 添加外键: ``` ALTER TABLE orders ADD CONSTRAINT fk_customer FOREIGN KEY (customer_id) REFERENCES customers(customer_id); ``` 3. 查询语句: ``` SELECT order_id, product_name, quantity, price FROM orders WHERE customer_id = 1; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值