广告
返回顶部
首页 > 资讯 > 数据库 >如何进行数据库三大范式的分析
  • 786
分享到

如何进行数据库三大范式的分析

2024-04-02 19:04:59 786人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关如何进行数据库三大范式的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一: 引言     &n

这篇文章将为大家详细讲解有关如何进行数据库三大范式的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一: 引言

       作为一个数据库学习者,搞懂关系数据库的三大范式是很有用的。然而教科书上有关数据库范式的介绍都是采用学术性的定义,语法羞涩,让人难懂,故写下自己对数据库范式的理解,给初学者提供帮助,也备日后查看。下面不介绍规范化程度高于3NF的范式,因为其在实际应用中基本不会用到,原因也是很明显的(查询代价变大),因此,对于很多大型复杂的系统,其数据库设计都没有遵循所谓的范式,这也是为什么会出现所谓的逆规范化,好了,进入正题吧。

二: 范式介绍

    a:第零范式

         第零范式就是指没有使用任何范式的设计,其添加数据的行为非常诡异,看看下表便知:

         假设一个学生学习了三门课程,每门课程都有成绩,那么,采用第零范式的设计将会是如下情况                          

                           表a_0如何进行数据库三大范式的分析

         这样的话,会使得往表中添加数据变得非常麻烦,每次添加一个新的数据,都要添加相应的字段,而且,因为表中其他的记录可能不需要这么多字段,因此会浪费

         很多空间。如表a_1所示。

                       表a_1

如何进行数据库三大范式的分析

         由此可以看出,不对数据库任用任何范式是非常愚蠢的,因为不仅会产生大量无用的表字段,而且会使得表结构非常难以维护。由此,引出第一范式的介绍

    b:  第一范式

         第一范式就是在第零范式的基础上进行的改进,网上有很多人认为,所谓第一范式就是指表中的所有字段都是原子的、不可再分的,我个人认为此种理解也是正确的,原因不解释,我对第一范式的理解是,将

     第零范式中重复的字段抽取出来,作为表的数据,从而形成一个稳定的、冗余数据少得表结构。

        由此,可以得出符合第一范式的表结构应该是:

如何进行数据库三大范式的分析

        此时,表的结构变得稳定了,而且表中的冗余信息相对第零范式也少了很多。可是,第一范式只是关系数据库设计的最低满足的范式,第一范式中仍然有很多的冗余信息,由此,需要引入第二范     式。

    c: 第二范式

         第二范式是满足属性对主键是完全函数依赖的,因此,满足第二范式的表当然也是满足第一范式的,第二范式的目的就是消除表中的部分依赖。

         这里,有几个概念要解释下, 

              1: 完全函数依赖

                   设有属性集K和P,若K中的所有属性共同能够推出P中的任意属性,且对于K的任何真子集,都不能推出P中的任意属性,则成K完全函数依赖P。

              2: 部分函数依赖

                   与上相似,只是,K中存在真子集使得,该子集能推出p中任意属性。

         概念性的东西,往往都难懂,举个例子,方便大家理解:

         假如有一张学生成绩表,包含如下属性(学生Id,课程Id,课程分数,学生名字),其中,主键为(学生id,课程id),表中的数据如下:

如何进行数据库三大范式的分析

         那么,此时这张表的设计就不满足第二范式, 因为 主键(学生id,课程id) 能够唯一确定学生的姓名,因此,不满足属性完全函数依赖主键,因此不是第二范式。

         从上面的表数据易知,不满足第二范式的表至少有以下几个缺点:

             1:数据重复,浪费空间,因为每存一条记录,都要存学生的名字,这样就是得存在大量重复的数据。

             2: 插入异常,若学生还没有成绩,那么这个学生就没有名字。

             3:  更新异常,删除异常等

        解决方法:

             将student_name字段放入学生表中,即消除表中的部分依赖。

   d: 第三范式

       第三范式是指在满足第二范式的情况下,消除表中的传递依赖。

       所谓传递依赖,就是指x-->y,y-->z,那么可以得到y-->z.

       传递依赖常发生在主键、外键、外键相关的属性上,例如,假设有这样的表

               学生表(学生id,学生姓名,院系id,院系名)  ,此处主键为(学生id),外键为(院系id)

               院系表(院系id,院长名称),主键为 (院系id)

       很明显,此处存在传递依赖,因为 学生id  可以唯一确定  院系id,而 院系id 可以唯一确定 院系名。

       表中的数据如下 

       从上面的表数据易知,不满足第三范式的表至少有以下几个缺点:

            1 :  数据重复,浪费空间,因为学生表每存一条记录,都会记录住院系的名字,存在大量的重复数据。

            2:  插入异常,若新建一个院系,而该院系没有学生的话,该院系就没有名字。

            3:  更新异常,删除异常等                 

三: 数据库设计的经验

       1: 表的数目不要太多,一般20-30张就够了。如果表的数目太多,则可以考虑采用同化操作,即将大体相同的实体放入到一张表中。

       2:当数据库中的信息非常庞大时,不要使用外键(逆规范化),因为由此可能带来非常大的性能损失。

       3:一般以消耗存储空间来换取效率。

关于如何进行数据库三大范式的分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 如何进行数据库三大范式的分析

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行数据库三大范式的分析
    这篇文章将为大家详细讲解有关如何进行数据库三大范式的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一: 引言     &n...
    99+
    2022-10-19
  • 数据库的三大范式
    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
  • 如何深入理解关系型数据库的三大范式
    该文章,GitHub已收录,欢迎老板们前来Star! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual 数据库范式 一、什么是数据库范式 设计关系数据库时...
    99+
    2018-01-24
    如何深入理解关系型数据库的三大范式
  • Facebook是如何对大数据进行分析的
    这篇文章主要介绍“Facebook是如何对大数据进行分析的”,在日常操作中,相信很多人在Facebook是如何对大数据进行分析的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Facebook是如何对大数据进行...
    99+
    2023-06-10
  • 如何进行NewSQL数据库TiDB的分析
    本篇文章给大家分享的是有关如何进行NewSQL数据库TiDB的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。下面要介绍的是数据库领域的后起...
    99+
    2022-10-19
  • 如何进行大数据平台的搭建和数据分析
    如何进行大数据平台的搭建和数据分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  行内人士皆知,大数据分析平台的搭建有利于帮助企业构建统一的数据存储和数据处理...
    99+
    2023-06-02
  • 如何对数据库模式进行规范化处理
    这篇文章将为大家详细讲解有关如何对数据库模式进行规范化处理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对数据库模式进行规范化处理,是在数据库设计的“逻辑设计阶段”。数据...
    99+
    2022-10-18
  • 详解Python进行数据相关性分析的三种方式
    目录相关性实现NumPy 相关性计算SciPy 相关性计算Pandas 相关性计算线性相关实现线性回归:SciPy 实现等级相关排名:SciPy 实现等级相关性:NumPy 和 Sc...
    99+
    2022-11-10
  • 如何进行Java语言规范线程形式的分析
    如何进行Java语言规范线程形式的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在一开始接触Java的时候我们没有很注意Java语言规范,其实这是不对的。下面我们就来看看开...
    99+
    2023-06-17
  • PHP中如何进行大数据存储和分析?
    PHP是一门广泛应用于Web开发领域的编程语言,其开放源代码的特性和易于学习使用的优点,使得PHP具有被广泛使用的特点。随着互联网的快速发展,数据的增长和存储已经成为了一个越来越大的难题。在这背景下,PHP开发者需要掌握大数据存储和分析的技...
    99+
    2023-05-21
    数据分析 PHP 大数据存储
  • PHP中如何进行大数据处理和分析?
    PHP是一种广泛使用的服务器端脚本语言,它被用于web应用程序的开发。对于大量数据的处理和分析,PHP同样具备非常强大的能力。在这篇文章中,我们将探讨如何使用PHP进行大数据处理和分析。PHP的数据类型在处理和分析大数据时,首先需要了解PH...
    99+
    2023-05-21
    数据分析 PHP 大数据处理
  • 如何用Python进行大数据挖掘和分析
    今天就跟大家聊聊有关如何用Python进行大数据挖掘和分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。大数据无处不在。在时下这个年代,不管你喜欢与否,在运营一个成功的商业的过程中都...
    99+
    2023-06-05
  • Python进行数据相关性分析的三种方式是什么
    本文小编为大家详细介绍“Python进行数据相关性分析的三种方式是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python进行数据相关性分析的三种方式是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。相...
    99+
    2023-06-30
  • PHP中如何进行数据可视化和大数据分析?
    随着互联网和大数据的不断发展,数据分析和可视化已经成为了各种行业中非常重要的一个环节。而在现代Web应用程序中,PHP作为一种强大的服务器端语言,也提供了许多工具和库来帮助开发人员进行数据可视化和大数据分析。在本文中,我们将探讨如何使用PH...
    99+
    2023-05-22
    可视化 大数据 分析
  • 如何进行数据库的架构整体分析
    这期内容当中小编将会给大家带来有关如何进行数据库的架构整体分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  很少谈架构方面的事情,主要是因为这确实是个对知识面和知识深...
    99+
    2022-10-19
  • 如何进行大数据发展趋势和Spark的分析
    本篇文章为大家展示了如何进行大数据发展趋势和Spark的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。大数据发展趋势和Spark介绍大数据是随着计算机技术、通信技术、互联网技术的发展而产生的一种...
    99+
    2023-06-02
  • 怎样进行mysql数据库的分析
    怎样进行mysql数据库的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、数据库是什么?数据库是管理数据的一类软件。对数据的管理体现在两个方面,第一是描述数据,即一条...
    99+
    2023-06-22
  • 如何在Java中使用Numpy进行大数据分析?
    随着数据量的不断增长,大数据分析已经成为了现代社会中非常重要的工作之一。而Java作为一门非常流行的编程语言,也越来越多地被用于数据分析和处理方面。本文将为您介绍如何使用Java中的Numpy库进行大数据分析。 一、什么是Numpy Num...
    99+
    2023-10-12
    大数据 对象 numpy
  • 如何使用PHP进行大数据分析和处理?
    随着互联网和移动设备应用的普及,现在数据的规模越来越大,迅速增长。对于企业和政府机构来说,如何对这些海量的数据进行分析和处理,提取出有价值的信息是一个非常重要的问题。PHP语言是一种广泛应用于Web开发的开源语言。尽管它被广泛用作Web编程...
    99+
    2023-05-21
    PHP 处理 大数据分析
  • 如何在Mysql数据库中数据表使用外键与三范式
    这篇文章将为大家详细讲解有关如何在Mysql数据库中数据表使用外键与三范式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。数据表优化将商品信息表进行优化1.创...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作