数据库 范式

概念

一个低一级范式的关系模式通过模式分解可以转换成若干个高一级范式的关系集合,这种过程就叫规范化。

关系数据库中的关系是要满足一定要求的,满足不同程度要求的位不同范式。

部分依赖&完全依赖

定义:在关系 R(U) 中, 若 X→Y,且对于 X 的任何真子集 X‘ 都有 X’ ↛ Y,则称 Y 完全函数依赖于 X,记为:X-f->Y 。否则称 Y函数部分依赖于 X,记为 X-p->Y 。

完全函数依赖就是说 属性组 X 的所有属性一起(即完全)才能决定属性 Y,去掉任何一个属性都不行。相反的,部分函数依赖就是说 属性组 X 中的 部分属性就可以决定 Y ,用不着全部。

更简单一点来说就是假如AB->C,A->C则AB->C这就是部分函数依赖。

寻找候选码

① L类:某一个属性全部出现在函数依赖的左边

② R类:某一个属性全部出现在函数依赖的右边

③ LR类:出现在函数依赖的左右两边

④ N类:不出现在函数依赖中

规则:

⑴ 可能成为候选键的有L类,LR类和N类,R类属性不可能称为候选键的属性

⑵ 如果是L类,则求出他的闭包,若包含所有属性,则说明其为候选键,且为唯一候选键

⑶ 如果是LR类,求出其闭包,若能推出所有属性,则为候选键;若不包含,再找出其中一个属性与其结合

⑷ 如果是N类,直接为候选键

分析:

⑴ 判断非键属性是否部分依赖于候选键; 是则为1NF,否则进行⑵;

⑵ 判断非键属性是否传递依赖于候选键; 是则为2NF,否则进行⑶;

⑶ 判断所有依赖下左边是否全为候选键; 是则为BCNF,否则为3NF;

是针对于候选键的部分依赖,传递依赖

范式

第一范式

第一范式(1NF)是数据库正规化所使用的正规形式。

第一范式是为了要排除重复组的出现,要求数据库的每一列的论域都是由不可分割的原子值组成;每个字段的值都只能是单一值。

第二范式

第二范式(2NF)是数据库正规化所使用的正规形式。
规则是要求资料表里的所有资料都要和该资料表的键(主键与候选键)有完全依赖关系:每个非键属性必须独立于任意一个候选键的任意一部分属性。

第三范式

第三范式(3NF)是数据库正规化所使用的正规形式。
要求所有非主键属性都只和候选键有相关性,也就是说非主键属性之间应该是独立无关的。

步骤

1.找出候选码

2.寻找非键属性是否部分函数依赖,如果符合,则是1NF,如果不符合,则继续判断

3.非键属性是否传递依赖于候选键,如果符合,则他是2NF , 如果不符合,则继续判断

4.判断所有依赖项左边是否全为候选键, 如果是,则他是BC范式, 如果不是,就是3NF

例题

求候选键 R(A B C D) , F = { B ->D , D ->B , A B -> C }

1.找候选码

L(只在左边出现的):A

R(只在右边出现的):C

LR(左右都出现的):B,D

N(左右都没有出现的):

然后判断A,B能导出全部。

AB是候选键

2.判断非键属性是否部分依赖于候选键

如果都是单字母的话,就不会有部分函数依赖。

因为AB是主码,所以有AB->D,但是有B->D,所以D是部分函数依赖于主码的,所以不满足2NF,所以最高只能为1NF

3.判断非键属性是否传递依赖于候选键

因为已经是属于第一范式,所以这一步将不存在

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310594.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CFP-专栏2】计算机类SCI优质期刊汇总(含IEEE/Top)

一、计算机区块链类SCI-IEEE 【期刊概况】IF:4.0-5.0, JCR2区,中科院2区; 【大类学科】计算机科学; 【检索情况】SCI在检; 【录用周期】3-5个月左右录用; 【截稿时间】12.31截稿; 【接收领域】区块链…

第3课 使用FFmpeg获取并播放音频流

本课对应源文件下载链接: https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具,其源码有太多值得研究的地方。但对于大多数初学者而言,如何快速利用相关的API写出自己想要的东西才是迫切需要…

GO学习记录 —— 创建一个GO项目

文章目录 前言一、项目介绍二、目录介绍三、创建过程1.引入Gin框架、创建main2.加载配置文件3.连接MySQL、redis4.创建结构体5.错误处理、返回响应处理 前言 代码地址 下载地址:https://github.com/Lee-ZiMu/Golang-Init.git 一、项目介绍 1、使用Gin框架来创建项…

C#基础环境搭建

一.Microsoft .NET Framework 确保系统中安装Microsoft .NET Framework相关版本下载 .NET Framework 4.7 | 免费官方下载 (microsoft.com)https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/net47 二.编译环境搭建 已经集成编译工具csc.exe DirectX外部依赖,归档…

计算机操作系统(OS)——P4文件管理

1、初始文件管理 1.1、文件的属性 1)文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。 2)标识符:一个系统内的各文件标识符唯一,对用户来说毫无…

conda环境下face_alignment.LandmarksType._2D AttributeError: _2D解决方法

1 问题描述 运行retalking模型时&#xff0c;代码抛出异常&#xff0c;信息如下所示&#xff1a; Traceback (most recent call last):File "D:/ml/video-retalking/inference.py", line 345, in <module>main()File "D:/ml/video-retalking/inference.…

统信UOS及麒麟KYLINOS操作系统上设置GRUB密码

原文链接&#xff1a;给单用户模式上一层保险&#xff01;&#xff01;&#xff01; hello&#xff0c;大家好啊&#xff01;今天我要给大家介绍的是在统信UOS及麒麟KYLINOS操作系统上设置GRUB密码的方法。GRUB&#xff08;GRand Unified Bootloader&#xff09;是Linux系统中的…

无限极|零售行业数字化转型BizDevOps建设实践

前言 在11月召开的中国 DevOps 社区广州峰会上&#xff0c;无限极&#xff08;中国&#xff09;有限公司DIT开发与测试中心的测试与效能经理陈顺生分享了其团队在支持公司业务数字化转型中的 BizDevOps 建设实践&#xff0c;令在场听众受益匪浅。 一、背景与挑战 1. 灵魂三…

关于“Python”的核心知识点整理大全51

目录 17.2.2 添加自定义工具提示 bar_descriptions.py 17.2.3 根据数据绘图 python_repos.py 17.2.4 在图表中添加可单击的链接 python_repos.py 17.3 Hacker News API hn_submissions.py 17.4 小结 往期快速传送门&#x1f446;&#xff08;在文章最后&#xff09;&a…

模型 安索夫矩阵

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。产品市场战略。 1 安索夫矩阵的应用 1.1 江小白的多样化经营策略 使用安索夫矩阵来分析江小白市场战略。具体如下&#xff1a; 根据安索夫矩阵&#xff0c;江小白的现有产品是其白酒产品&…

006、函数

1. 一个小技巧 在前面文章中&#xff0c;我们提到&#xff0c;在黑窗口中输入 code . 命令可以快速在 Visual Studio Code 中打开新建的项目&#xff0c;这个是你刚刚新建了项目&#xff0c;并且黑窗口正好是打开的情况下。 如果是之前创建的项目&#xff0c;用上面的方法就会有…

【力扣100】207.课程表

添加链接描述 class Solution:def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:# 思路是计算每一个课的入度&#xff0c;然后使用队列进行入度为0的元素的进出# 数组&#xff1a;下标是课程号&#xff0c;array[下标]是这个课程的入度# 哈希…