三张图搞透第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的区别

三张图搞透第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的区别第一范式:  列1唯一确定列2、列3、列4…,即列不能再分成其它几列。  假设列1:订单名,列2:商品名,一个订单名里可以有多个商品名,所以这样就不符合第一范式。第二范式:  首先符合1NF,另外包含两部分内容,一是表必须有一个(及以上)主键;二是没有包含在主键中的列必须全部依赖于全部主键,而不能只依赖于主键的一部分而不依赖全部主键。  定义听起来有点绕,不慌,直接看图,只有全部的非…

大家好,又见面了,我是你们的朋友全栈君。

第一范式(1NF)


三张图搞透第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的区别

  列1唯一确定列2, 列3, 列4, ...,即列2, 列3, 列4, ...不能再分裂出其它列。

  假设有关系模式列1: 订单名; 列2: 商品。一个订单下可以有多个商品,即列2: 商品可以分裂成商品A, 商品B, 商品C, ...,所以列1: 订单名; 列2: 商品这样的关系模式不符合第一范式。

第二范式(2NF)


三张图搞透第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的区别

  满足2NF的前提是必须满足1NF。此外,关系模式需要包含两部分内容,一是必须有一个(及以上)主键;二是没有包含在主键中的列必须全部依赖全部主键,而不能只依赖于主键的一部分而不依赖全部主键。

  定义听起来有点绕,不慌,直接看图,只有全部的非主键列依赖于全部主键,才满足第二范式。

第三范式(3NF)


三张图搞透第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的区别

  满足3NF的前提是必须满足2NF。另外关系模式的非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列m既依赖于全部主键,又依赖于非主键列n的情况。

  定义听起来还是有点绕,不慌,直接看图,只要非主键内部存在传递依赖,就不满足第三范式。

  假设存在关系模式主键1: 课程编号; 列1: 教师名; 列2: 教师家庭地址。显然满足第一范式和第二范式,但是教师家庭地址传递依赖于教师名,所以不满足第三范式。

示例:

  设有课程关系模式如下:R(C#, Cn, T, Ta)(其中C#为课程号,Cn为课程名,T为教师名,Ta为教师地址),并且假定不同的课程号可以有相同的课程名,每门课程只有一位任课教师,但每名教师可以有多门课程。关系R范式最高达到()。

A)1NF
B)2NF
C)3NF
D)BCNF

【正确答案】B

【解析】

  一个“课程号”确定一个“课程名”,确定一个“教师名”,确定一个“教师地址”,所以符合第一范式;

  “课程号”是无重复的,所以“课程号”是主键,“课程名”、“教师名”、“教师地址”均是可重复的,所以它们都是非主键列并完全依赖于主键“课程号”,所以符合第二范式;

  非主键列“教师地址”传递依赖于非主键列“教师名”,所以不符合第三范式,故选B。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142209.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月24日 上午10:40
下一篇 2022年5月24日 上午10:40


相关推荐

  • debian6下载_印象笔记下载安装

    debian6下载_印象笔记下载安装安装debian真是费劲周折,从网上下载的是debian6.04的CD版本,只下载了CD1,里面包含的软件非常少,所以很多软件都需要自己动手安装了。一、下载镜像可以到Debian的官网http://cdimage.debian.org/debian-cd/6.0.6/i386/iso-cd/去下载最新的6.06版本,因为官网下载太慢,所以我到六维空间上面下了个6.04版本的CD1。CD1只

    2022年10月19日
    5
  • js替换html中的字符串,js怎么替换字符串?

    js替换html中的字符串,js怎么替换字符串?在js中,可以使用str.replace()方法来替换字符串。replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串;然后返回一个新的字符串。replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。语法:stringObject.replace(regexp/substr,replacement)返回值一个新的字符串…

    2022年5月18日
    44
  • typescript类型定义_浅基础的类型及特点

    typescript类型定义_浅基础的类型及特点基础类型TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。布尔值最基本的数据类型就是简单的true/false值,在JavaScri

    2022年8月7日
    7
  • ups不间断电源介绍_ups不间断电源设备有哪几部分组成

    ups不间断电源介绍_ups不间断电源设备有哪几部分组成本文简单介绍UPS(不间断电源)的相关知识。1概述UPS(UninterruptedPowerSupply),即不间断电源,是将蓄电池与主机相连接,通过主机逆变器等模块电路,将蓄电池中直流(DC,DirectCurrent)电转换成市电交流(AC,AlternatingCurrent)电的系统设备。UPS主要用于给单台计算机、计算机网络系统或其它电力电子设备如电磁阀、压力变送器…

    2025年7月12日
    6
  • java邮箱匹配_Java邮箱正则表达式

    java邮箱匹配_Java邮箱正则表达式s w 0 1 w a zA Z0 9 a zA Z0 9 a zA Z s 这个是一个企业级的程序里 copy 出来的 合法 E mail 地址 1 必须包含一个并且只有一个符号 2 第一个字符不得是 或者 3 不允许出现 或者 4 结尾不得是字符 或者 5 允许 前的字符中出

    2025年11月11日
    4
  • navicat premium 15 mac 激活码【2021.8最新】

    (navicat premium 15 mac 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsa…

    2022年3月25日
    73

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号