数据库的第一范式,第二范式,第三范式,BCNF范式理解

数据库的第一范式,第二范式,第三范式,BCNF范式理解第一范式属性的原子性所谓的第一范式就是数据库中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,如果出现重复的属性则需要重新构建实体,新的实体由重复的属性构成。见图分析图:在进货和销售中有两个重复的属性(数量和单价),并且进价和销售是可以再分割的,不满足原子性,即不满足第一范式,可以修改为下面的两个实体第二范式属性完…

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

第一范式 属性的原子性

所谓的第一范式就是数据库中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,如果出现重复的属性则需要重新构建实体,新的实体由重复的属性构成。
见图
在这里插入图片描述
分析图: 在进货和销售中 有两个重复的属性(数量和单价),并且进价和销售是可以再分割的,不满足原子性,即不满足第一范式,可以修改为下面的两个实体
在这里插入图片描述
在这里插入图片描述

第二范式 属性完全依赖于主键

第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式,第二范式要求数据库的每个实例或行必须可以被唯一的区分,即表中要有一列属性可以将实体完全区分,这个属性就是主键,即每一个属性完全依赖于主键,在员工管理中,员工可以通过员工编号进行唯一区分,
完全依赖概念:即非主属性不能依赖于主键的部分属性,必须依赖于主键的所有属性。

第三范式

满足第三范式必须先满足第二范式,第三范式要求一个数据库表中不包含已在其他表中已包含的非主关键字信息, 例如 存在一个课程表,课程表中有课程号(Cno),课程名(Cname),学分(Ccredit),那么在学生信息表中就没必要再把课程名,学分再存储到学生表中,这样会造成数据的冗余, 第三范式就是属性不依赖与其他非主属性,也就是说,如果存在非主属性对于码的传递函数依赖,则不符合第三范式

在这里插入图片描述
这个例子就是典型的非3NF 两个非主属性
属性不依赖与其他非主属性,则不符合第三范式
——–选修课程名—->选修课程号(非主属性)
如果存在非主属性对于码的传递函数依赖,则不符合第三范式
理解为
——–选修课程名—->选修课程号——> 学号(传递依赖)
不是第三范式

BCNF 范式

满足BCNF范式的条件如下:

  1. 所有的非主属性对每一个码都是完全函数依赖 (暗含 主关键字里面可能有多个码可以将实体区分)
  2. 所有的主属性对每一个不包含它的码也是完全函数依赖(即所选码与未选择的码之间也是完全函数依赖的)
  3. 没有任何属性完全函数依赖于非码的任何一组属性(即非主属性之间不能函数依赖)

解释:
例如关系模式 S(Sno,Sname,Sdept,Sage) 假设 Sname具有唯一性
解释条件1:非主属性 (Sdept,Sage) 不仅依赖于Sno,而且依赖于Sname,因为不仅可以通过学号知道学生的信息,还可以通过姓名知道学生的信息。
解释条件2:Sno 与Sname之间也是完全函数依赖关系
解释条件3:没有任何一个属性函数依赖于Sdept和Sage

感谢涛声依旧的博客

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142231.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • vb程序设计基础教程视频_web程序设计二级考试考什么

    vb程序设计基础教程视频_web程序设计二级考试考什么全国计算机等级考试二级vb6.0程序设计视频教程自学编程教学视频2015…

  • 训练集准确率很高,验证集准确率低问题

    训练集准确率很高,验证集准确率低问题训练集在训练过程中,loss稳步下降,准确率上升,最后能达到97%验证集准确率没有升高,一直维持在50%左右(二分类问题,随机概率)测试集准确率57%在网上搜索可能打的原因:1.learningrate太小,陷入局部最优2.训练集和测试集数据没有规律3.数据噪声太大4.数据量太小(总共1440个样本,80%为训练集)5.训练集和测试集数据分布不同:如训练集正样本太少(训练集和测试集每次运行随机选择,故排除)6.数据集存在问题,如标注有问题(采用公开数据集,排除)7.学习率过大8.模型

  • mysql 字符串动态拼接_mysql中的字符串的拼接「建议收藏」

    mysql 字符串动态拼接_mysql中的字符串的拼接「建议收藏」字符串的拼接1,Mysql在Java、C#等编程语言中字符串的拼接可以通过加号“+”来实现,比如:”1″+”3″、”a”+”b”。在MYSQL中也可以使用加号“+”来连接两个字符串,比如下面的SQL:Sql代码SELECT’12’+’33’,FAge+’1’FROMT_Employee执行结果Sql代码’12’+’33’FAge+’1’4526452945244526…

  • origin绘图同时添加柱状图和折线图

    origin绘图同时添加柱状图和折线图在绘制数据图时,为了清晰反应不同数据之间的关系,往往需要在同一个图中同时添加柱状图和点线图。这时候需要左右两个纵坐标。下面介绍这种图的绘制方法1、首先绘制一个柱状图,具体绘制方法可以参考上一篇博客:origin绘图软件安装包及入门使用2在图的右侧插入刻度线,插入顺序如下图所示,点击图–>新图层(轴)–>右Y轴3、添加完后双击右侧刻度线修改刻度的起始值和要插入的点线图数值范围对应4、插入折线图,选择图->添加点线图,从book中选择要绘制点线图的数据导入到右侧

  • android获取屏幕像素密度DPI,与density

    android获取屏幕像素密度DPI,与density基本概念:dip:Densityindependentpixels,设备无关像素。dp:就是dipdpi:dotsperinch,直接来说就是一英寸多少个像素点。常见取值120,160,240。我一般称作像素密度,简称密度density:直接翻译的话貌似叫密度。常见取值1.5,1.0。和标准dpi的比例(160px

  • 阿里巴巴Java开发手册.pdf (详尽版 和 终极版)

    阿里巴巴Java开发手册.pdf (详尽版 和 终极版)阿里巴巴Java开发手册已经是国内Java编码的行业规范笔者特意提供了阿里巴巴Java开发手册(详尽版).pdf阿里巴巴开发手册终极版2019.pdf扫描下面的二维码或搜索公众号【技术杂谈】点击关注并回复【Java开发手册】即可获取下载链接…

发表回复

您的电子邮箱地址不会被公开。

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