返回顶部
首页 > 资讯 > 数据库 >Mysql数据库设计三范式的用法
  • 164
分享到

Mysql数据库设计三范式的用法

2024-04-02 19:04:59 164人浏览 安东尼
摘要

这篇文章主要讲解了Mysql数据库设计三范式的用法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。三范式1NF:字段不可分;2NF:有主键,非主键字段依赖主键;3NF:非主键字段

这篇文章主要讲解了Mysql数据库设计三范式的用法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

三范式

1NF:字段不可分;

2NF:有主键,非主键字段依赖主键;

3NF:非主键字段不能相互依赖;

解释:

1NF:原子性 字段不可再分,否则就不是关系数据库;

2NF:唯一性 一个表只说明一个事物;

3NF:每列都与主键有直接关系,不存在传递依赖;

第一范式(1NF)

即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只要数据库是关系型数据库(mysql/oracle/db2/infORMix/sysbase/SQL Server),就自动的满足1NF。数据库表的每一列都是不可分割的原子数据项,而不能是集合数组,记录等非原子数据项。如果实体中的某个属性有多个值时,必须拆分为不同的属性 。通俗理解即一个字段只存储一项信息。

Mysql数据库设计三范式的用法

关系型数据库: mysql/oracle/db2/informix/sysbase/sql server 非关系型数据库: (特点: 面向对象或者集合) NoSQL数据库: mongoDB/Redis(特点是面向文档)

第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要我们设计一个主键来实现(这里的主键不包含业务逻辑)。

即满足第一范式前提,当存在多个主键的时候,才会发生不符合第二范式的情况。比如有两个主键,不能存在这样的属性,它只依赖于其中一个主键,这就是不符合第二范式。通俗理解是任意一个字段都只依赖表中的同一个字段。(涉及到表的拆分)

看下面的学生选课表:

学号课程成绩课程学分
10001数学1006
10001语文902
10001英语853
10002数学906
10003数学996
10004语文892

表中主键为 (学号,课程),我们可以表示为 (学号,课程) -> (成绩,课程学分), 表示所有非主键列 (成绩,课程学分)都依赖于主键 (学号,课程)。 但是,表中还存在另外一个依赖:(课程)->(课程学分)。这样非主键列 ‘课程学分‘ 依赖于部分主键列 '课程‘, 所以上表是不满足第二范式的。

我们把它拆成如下2张表:

学生选课表:

学号课程成绩
10001数学100
10001语文90
10001英语85
10002数学90
10003数学99
10004语文89

课程信息表:

课程课程学分
数学6
语文3
英语2

那么上面2个表,学生选课表主键为(学号,课程),课程信息表主键为(课程),表中所有非主键列都完全依赖主键。不仅符合第二范式,还符合第三范式。

再看这样一个学生信息表:

学号姓名性别班级班主任
10001张三一班小王
10002李四一班小王
10003王五二班小李
10004张小三二班小李

上表中,主键为:(学号),所有字段 (姓名,性别,班级,班主任)都依赖与主键(学号),不存在对主键的部分依赖。所以是满足第二范式。

第三范式(3NF)

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主键字段。就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放(能尽量外键join就用外键join)。很多时候,我们为了满足第三范式往往会把一张表分成多张表。

即满足第二范式前提,如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。 通俗解释就是一张表最多只存两层同类型信息。

Mysql数据库设计三范式的用法

反三范式

没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,提高读性能,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率,因为在数据库的操作中查询的比例要远远大于DML的比例。但是反范式化一定要适度,并且在原本已满足三范式的基础上再做调整的。

看完上述内容,是不是对Mysql数据库设计三范式的用法有进一步的了解,如果还想学习更多内容,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql数据库设计三范式的用法

本文链接: https://lsjlt.com/news/44896.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mysql数据库设计三范式的用法
    这篇文章主要讲解了Mysql数据库设计三范式的用法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。三范式1NF:字段不可分;2NF:有主键,非主键字段依赖主键;3NF:非主键字段...
    99+
    2024-04-02
  • Mysql数据库设计三范式实例解析
    三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物; 3NF:每列...
    99+
    2022-06-01
    Mysql 数据库 三范式
  • MySQL数据库范式化设计的方法
    这篇文章主要讲解了“MySQL数据库范式化设计的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库范式化设计的方法”吧!一、设计范式问题: 什么是范式化设计,为什么需要反规范...
    99+
    2023-06-30
  • MySQL系列数据库设计三范式教程示例
    目录一、数据库设计三范式相关知识说明1、什么是设计范式?2、为什么要学习数据库的三个范式?3、三范式都有哪些?二、数据库表的经典设计方案一对一怎么设计?一、数据库设计三范式相关知识说...
    99+
    2024-04-02
  • 数据库设计的范式规范
    关系型数据库的设计遵循六大范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。 第一范式 1NF 1NF,即数...
    99+
    2024-04-02
  • 数据库的三范式
    简单来说可以把它粗略的理解为一张数据表的表结构所符合的某种设计标准的级别。就像英语46级,相对代表了英语水平的高低。 满足这些规范的数据库是简洁的,结构明晰的,同时,不会发生增删改操作异常。 数据库范式分为 1NF 2NF 3NF BC...
    99+
    2022-02-13
    数据库的三范式
  • mysql数据库设计规范
    一、数据库设计规范1.使用innodb引擎2.数据库和表的字符集统一使用utf83.所有表和字段添加注释4.单表数据量控制...
    99+
    2019-12-06
    mysql数据库设计规范
  • 数据库三范式:
    第一范式(1NF):字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)   数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必须作为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,必须设计成两...
    99+
    2015-12-14
    数据库三范式:
  • 数据库范式:数据库设计的指南针
    数据库范式概述 数据库范式是一组规则,旨在确保数据库的有效性和效率。这些规则规定了数据应该如何组织和存储,以避免数据冗余、更新异常和插入异常。以下是对每个范式的简要介绍: 第一范式 (1NF) 1NF 要求每个数据项只能出现一次,且在表中...
    99+
    2024-03-07
    数据库范式、数据建模、数据完整性、数据一致性
  • 数据库的三大范式
    1.为什么需要数据库设计2.范式(Normal Formal)2.1范式概述2.2键和相关属性的概念2.3第一范式(1NF)2.4第二范式(2NF)2.5第三范式(3NF)2.6范式的优缺点 3.反范式化3.1概述3.2 反...
    99+
    2023-08-16
    数据库 设计规范 mysql
  • MySQL数据库表设计规范
    一、数据库设计 1、一般都使用 INNODB 存储引擎,除非读写比率...
    99+
    2014-11-16
    MySQL数据库表设计规范
  • MySQL 数据库范式化设计理论总结
    目录一、设计范式1.第一范式(1NF)2.第二范式(2NF)3.第三范式 (3NF)二、范式化设计三、反规范化设计四、设计总结一、设计范式 问题: 什么是范式化设计,为什么需要反规范...
    99+
    2024-04-02
  • 数据库范式:三大范式、BC范式和反范式化
    一、什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范。为了让各个属性间的关系更加合理,减少数据冗余。 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约束,可也会导致数据表的增加,从而让数据库...
    99+
    2015-06-13
    数据库范式:三大范式 BC范式和反范式化
  • 精讲数据库三范式
    1NF:字段不可分; 例:表1、用户ID姓名地区1小明广东省广州市2小红江苏省南京市地区字段可分为:省、市如下:表2、用户ID姓名省份城市1小明广东省广州市2小红江苏省南京市表1不符合第一范式,表...
    99+
    2024-04-02
  • SqlServer 数据库 三大范式
    1 概述 一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对...
    99+
    2024-04-02
  • 数据库设计规范
    (如果两个关联的列的数据类型不一样,在关联的时候会进行隐式转换,造成列上索引失效,查询效率大幅降低)没特殊需求的情况下,统一使用innodb统一字符集可以避免由于字符集转换产生的乱码,数据库和表字符集统一使...
    99+
    2024-04-02
  • MySQL数据库的设计规范与原则
    今天小编就为大家带来一篇有关MySQL数据库的设计规范与原则的文章。小编觉得总结全面到位,为此分享给大家做个参考。一起跟随小编过来看看吧。1、数据库命名规范采用26个英文字母(区分大小写)和0-9的自然数(...
    99+
    2024-04-02
  • 数据库三范式和反范式是什么
    这篇文章主要介绍了数据库三范式和反范式是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在日常开发过程中,我们需要对Mysql数据库进行操...
    99+
    2024-04-02
  • MySQL数据库设计规范有哪些
    本篇文章给大家分享的是有关MySQL数据库设计规范有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、数据库设计以下所有规范会按照【高危】...
    99+
    2024-04-02
  • MySQL数据库设计规范是什么
    这篇“MySQL数据库设计规范是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作