对数据库几个范式的理解

news2024/12/28 3:04:43

数据库关系理论

这部分主要是几个概念很抽象,大家开始学可能学不明白。最近在准备复试,复习了一下相关的内容,顺便做一下总结。

先说几个名词:

  • 候选码:能够唯一确定一个元组的属性集合称为候选码。注意是集合,所以可能一个候选码可能包含多个元素!一个关系表可能有多个候选码!
  • 主码:从候选码中选一个就是主码。
  • 主属性:构成候选码的元素之一。

一、函数依赖定义

这里的函数依赖就是X→Y,表示对于任意元组u、v,当u[X] = v[X]时,必有u[Y]=v[Y]。其实和高中的函数定义差不多:一个X总能唯一确定一个Y。这里可以把X看成自变量,Y看成因变量。

平凡函数依赖:当X中包含了Y,还有X→Y,就成他俩是平凡函数依赖。意思就是这种函数依赖很普通,没有什么特殊意义,很平凡。

非平凡函数依赖:当X中不包含Y,还有X→Y。我们基本研究的是非平凡函数依赖。

二、三种函数依赖

1.完全函数依赖:如果X→Y ,并且对于X中的任何一个真子集X’都有Y不函数依赖于X’ ,则称Y对X完全函数依赖。意思就是X可能不止一个元素例如是(Sno,Cno)。那么只有Sno和Cno同时确定,才能确定Y,而单独的Sno和Cno不能够确定Y。

2.部分函数依赖:若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。其实就是完全函数依赖的对立。X的子集也能决定Y,那就是部分函数依赖。

3.传递函数依赖:如果X→Y ,X不函数依赖于Y, Y→Z且Y不包含于X,Z不包含于Y,则称Z对X传递函数依赖。不用纠结于定义,只要记住X→Y,Y→Z,则有X→Z。

三、四种范式

第一范式1NF

很好记忆,只需要把每个属性值分解成不可再分的元素即可。

第二范式2NF

定义为:一个关系属于1NF,且每个非主属性完全函数依赖于关键字。

也就是说,目标是关键字的子集是不能决定每个非主属性的,而现在有些关键字的子集也能够决定一些非主属性,这就要求我们把关键字拆分。这也意味着我们会从一张表变成多张表。

例如

在这里插入图片描述

这张图中关键字为(IDStu,IdCour)。(IDStu,IdCour)能够决定NameStu,而子集IDStu也能够决定NameStu,这就不符合完全函数依赖了吧。同理子集IdCour也可以决定非主属性。所以我们需要将一些主属性拆分出来,单独当关键字。

在这里插入图片描述

第三范式3NF

定义为:如果关系中每个非主属性不部分依赖于关键字,也不传递依赖于关键字的关系是属于3NF。

其实在2NF的基础上,前半句一定是满足的。我们只需要解决后半句:消除非主属性对关键字的传递依赖。也就是说,不存在X→Y→Z的。会产生传递依赖的原因就是:非主属性之间也产生了函数依赖。所以我们需要把非主属性的函数依赖分解。

在这里插入图片描述

这里IDStu决定了Inst,而Inst又决定了Addr,那么我们需要将这两个函数依赖拆成两张表。

在这里插入图片描述

BCNF

定义为:若每一个决定因素都包含码,则称关系属于BCNF范式。

决定因素是指,若这个关系中存在多个函数依赖X→Y,那么每个函数依赖的X就是决定因素。也就是说,BCNF要求关系中所有函数依赖的X都得是码。

在这里插入图片描述

这里码有(S,J)和(S,T),决定因素有(S,J),(S,T)和T。因为T不是码,所以不符合BCNF。因此我们需要将T变成码,即把表拆分。

在这里插入图片描述

这里码变成了(S,T),T。满足了BCNF范式。

四、总结

在这里插入图片描述

光从定义来看比较晦涩难懂,最好是能形象化一点,用自己的理解方式去记忆。

五、补充求闭包

本质上是一个迭代过程,而且也不是很难。做几道题就熟悉了。之前有些数据依赖的公理系统,我感觉太抽象了。看看就好,看不懂不妨碍做题。
在这里插入图片描述

核心就是比对 X i 和 X i + 1 X^{i}和X^{i+1} XiXi+1是否相等。而 X i + 1 X^{i+1} Xi+1是由 X i X^i Xi通过逻辑蕴含得到的,也就是那个→。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日学术速递2.3

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.Cv、cs.LG 1.Compositional Prompt Tuning with Motion Cues for Open-vocabulary Video Relation Detection(ICLR 2023) 标题:通过基于错误的隐性神经表征的上下文修剪实现高…

Java基础学习笔记(十五)—— 集合(3)

集合1 HashMap 类1.1 HashMap 类概述1.2 HashMap 案例2 TreeMap 类2.1 TreeMap 类概述2.2 TreeMap 案例3 Properties集合3.1 Properties集合概述3.2 Properties基本使用3.3 Properties特有方法3.4 Properties和IO流相结合的方法4 可变参数与不可变集合4.1 可变参数4.2 不可变集…

2023.1.26

0、任务 今明两天任务,回答以下问题: 1、网络传输延迟有哪些?如何区分传输延迟和排队延迟? 2、如何理解路由器存储转发的过程? 3、拥塞是什么,为什么会发生拥塞,发生拥塞的表现是什么&#xff…

网络资源下载方式:http/https、ftp/sftp、BT种子、磁力下载、ed2k下载等的区别

文章目录参考资料序言中心化下载http/https下载ftp/sftp下载http与ftp下载方式的不同中心化下载的缺点中心化下载BT种子下载磁力下载ed2k下载推荐的下载器IDM下载器安装步骤IDM如何下载种子文件参考资料 一文读懂Bt种子、磁力链接、直链、p2p这些下载的区别 常说的BT下载、磁力…

【数据结构基础】图 - 基础和Overview

图(Graph)是由顶点和连接顶点的边构成的离散结构。在计算机科学中,图是最灵活的数据结构之一,很多问题都可以使用图模型进行建模求解。例如: 生态环境中不同物种的相互竞争、人与人之间的社交与关系网络、化学上用图区分结构不同但分子式相同的同分异构体…

情人节该送女友什么?分享四款适合送女生的数码好物

情人节快到了,对于有伴侣的人来说,这是一个浪漫的日子。在这个浪漫的日子,一些生活仪式感是必不可少的。最近看到不少人问,适合女生的数码好物有哪些?下面,我来给大家推荐几款适合送女生的数码好物&#xf…

动态规划DP与记忆化搜索DFS 题单刷题(c++实现+AC代码)

文章目录数字三角形滑雪挖地雷最大食物链计数采药疯狂的采药5倍经验值过河卒洛谷动态规划入门题单: 提单传送门 数字三角形 观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也…

“深度学习”学习日记。卷积神经网络--卷积层

2023.2.3 CNN中出现一些新的概念:填充、步幅 等,此外各层中传递的数据是有形状的,与之前的全连接层神经网络完全不同; 一、全连接层存在的问题: 全连接层神经网络使用了Affine层,在相邻的神经元全部连接…

php7.3.4 pdo方式连接sqlserver 设置方法

我这边用的php是7.3.4版本的,大家设置的时候看一下。一、首先要开启php的sqlsrv扩展1.下载SQLSRV58.EXE,我的php版本是7.3.4https://docs.microsoft.com/en-us/sql/connect/php/release-notes-php-sql-driver?viewsql-server-2017#previous-releases拷贝到浏览器打…

内网渗透(二)之基础知识-工作组介绍

系列文章 内网渗透(一)之基础知识-内网渗透介绍和概述 注:阅读本编文章前,请先阅读系列文章,以免造成看不懂的情况!! 工作组介绍 1、工作组的介绍 在一个大型单位里,可能有成百上千台计算机互相连接组成局域网,它…

Rancher 部署 MongoDB

文章目录前置部署创建 Headless开始部署测试前置 背景:在 K8S 集群用 bitnami 部署 MongoDB 有一定的学习成本,有兴趣可以参考 k8s 部署 mongodb 三种模式,且部署后发现 MongoDB 会随着时间推移占用越来越多的内存,暂没找到原有&…

计算机如何在本地硬盘安装WinPE系统

环境: 联想E14 Win 10专业版 U盘魔术师V6 30G硬盘分区 双硬盘:128G固+1T机 DiskGenius UltraISO 问题描述: 如何在本地硬盘安装WinPE系统 解决方案: 一、使用软件制作硬盘PE系统 1.机械磁盘先分区分一个30G分区 …

Java 中的Type类型及其实现【学习记录】

概述 在JDK1.5之前只有原始类型,此时所有的原始类型都通过字节码文件类Class进行抽象。Class类的一个具体对象就代表一个指定的原始类型。 JDK1.5加入了泛型类,扩充了数据类型,从只有原始类型基础上扩充了参数化类型、类型变量类型、通配符…

OpenStack使用Skyline Dashboard面板替换默认Horizon面板

书接上回 OpenStack Yoga安装使用kolla-ansible 忘记提示了。如果截止发稿今天,使用最新zed版本,在最后一步部署阶段会报错,好像是rabbitMQ重启失败。所以建议使用最新版再退一个版本 官方文档 skyline-apiserver/README-zh_CN.md at maste…

一文入门图像分类

文章目录一、卷积网络1.1 卷积的参数量1.2 卷积的计算量1.3 降低模型参数量和计算量的方法1.3.1 GoogLeNet 使用不同大小的卷积核1.3.2 ResNet 使用11卷积压缩通道数1.3.3 可分离卷积二、Transformer2.1 注意力机制 Attention Mechanism2.2 多头注意力 Multi-head (Self-)Atten…

基于SSM框架宠物管理系统

一、项目简介 本项目是一套基于ssm框架宠物管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse…

学习笔记:Java 并发编程⑥_线程池

若文章内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系博主删除。 视频链接:https://www.bilibili.com/video/av81461839配套资料:https://pan.baidu.com/s/1lSDty6-hzCWTXFYuqThRPw&am…

软件测试-移动端测试示例1-笔记

搭建环境移动端测试试验连接真机不方便,在此通过电脑端进行一个测试安装JDK环境参考一下文章https://blog.csdn.net/weixin_47260194/article/details/122595008?spm1001.2014.3001.5502Android SDK环境配置首先去到官网https://www.androiddevtools.cn/下载SDK&am…

【虹科新品】采用NVIDIA Jetson Orin NX系统的视觉边缘计算机

虹科是智能感知与机器视觉领域领先资源整合及技术服务落地供应商,已经和Gidel展开深度的技术合作,为用户提供图像采集卡、FPGA图像处理和高带宽图像采集等服务。目前已经陆续在国内完成了多家一线公司的汽车图像采集、AOI、晶圆半导体检测项目。Gidel推出…

JS 执行上下文和作用域

与JS 中的作用域一同出现的还有一个执行上下文(execution context)的概念,这两个概念容易混淆,今天就来聊聊他们。 作用域 作用域是指程序源代码中定义变量、函数的区域,它规定了变量和函数可以访问哪些数据以及他们…