三张图搞透第一范式(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


相关推荐

  • 指定目标TCP端口的traceroute命令tcptraceroute mailserver 25等价traceroute -T mailserver -p 25

    指定目标TCP端口的traceroute命令tcptraceroute mailserver 25等价traceroute -T mailserver -p 25tcptraceroute(1)-LinuxmanpageNametcptraceroute-AtracerouteimplementationusingTCPpacketsSynopsistcptraceroute[-nNFSAE][-iinterface][-ffirstttl][-llength][-qnumberofqueries][-ttos][-mmaxttl][-psourceport]…

    2022年6月20日
    72
  • 【数据增强】Cutout「建议收藏」

    【数据增强】Cutout「建议收藏」论文:ImprovedRegularizationofConvolutionalNeuralNetworkswithCutout.Github:https://github.com/uoguelph-mlrg/Cutout.Cutout的出发点和随机擦除一样,也是模拟遮挡,目的是提高泛化能力,实现上比RandomErasing简单,随机选择一个固定大小的正方形区域,然后采用全0填充就OK了,当然为了避免填充0值对训练的影响,应该要对数据进行中心归一化操作,norm到0。(如果你还不了

    2026年3月9日
    3
  • 数据绑定以及Container.DataItem几种方式与使用方法分析[通俗易懂]

    数据绑定以及Container.DataItem几种方式与使用方法分析[通俗易懂]灵活的运用数据绑定操作绑定到简单属性:绑定到集合:'runat="server">绑定到表达式:绑定到方法返回值:绑定到Hashtable:绑定到Arr

    2022年7月2日
    28
  • C语言 文件读写的实现

    C语言 文件读写的实现关于C语言的文件读写,我将介绍下面这几种方式:字符的读写:使用fgetc()函数和fputc()函数;字符串的读写:使用fgets()函数和fputs()函数;格式化的读写(主要用于文本文件):使用fscanf()函数和fprintf()函数。字符读写:1.fputc()函数fputc(c,fp);//用于将一个字符写入文件其中,…

    2022年5月5日
    54
  • 【Java】输入—Scanner用法(全)[通俗易懂]

    【Java】输入—Scanner用法(全)[通俗易懂]Scanner用法目录1、输入整数、字符串数组2、输入二维数组3、输入字符串4、输入字符串分割为数组5、连续输入数字和字符串6、换行输入数字和字符串7、换行输入数字和字符串(需要包含空格)1、输入整数、字符串数组第一行输入n,m第二行输入n个整数第三行输入m个字符串//导入包importjava.util.Scanner;import…

    2022年7月16日
    13
  • javaweb酒店管理系统设计与实现_酒店管理信息系统分析与设计

    javaweb酒店管理系统设计与实现_酒店管理信息系统分析与设计随着人们生活质量的提高和对网络的依赖,对酒店的需求量越来越大并且更需要网络来实现预订酒店等功能,它作为一个服务性行业,从客房的营销即客人的预定开始,到入住登记直到最后退房结账,整个过程应该能够体现以宾客为中心,提供快捷方便服务,给宾客感受一种顾客至上的享受,提高管理水平,简化各种复杂操作,在最短时间内完成酒店业务规范操作,这样才能令旅客舒适难忘。目前,我国酒店服务业信息化管理的进程缓慢,跟国外的酒店相比管理依然落后。在激烈的酒店业竞争中,如何能把握机会,保持自己的优势,立于不败之地呢?这就需要提供最好的服务

    2025年11月20日
    8

发表回复

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

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