多值依赖的简单理解_第四范式智能客服官网

多值依赖的简单理解_第四范式智能客服官网1.多值依赖1.1多值依赖:多值依赖属4nf的定义范围,比函数依赖要复杂得多。在关系模式中,函数依赖不能表示属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖。在函数依赖中,X与Y是否存在函数依赖关系,只需考察X,Y的两组属性,与别的属性无关。而在多值依赖中,X与Y是否存在多值依赖还需看属性Z。1.2数…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1. 多值依赖

1.1 多值依赖:多值依赖属4nf的定义范围,比函数依赖要复杂得多。在关系模式中,函数依赖不能表示属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖

在函数依赖中,X与Y是否存在函数依赖关系,只需考察X,Y的两组属性,与别的属性无关。而在多值依赖中,X与Y是否存在多值依赖还需看属性Z。

1.2 数学定义:设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关。

1.3 特点:1.允许X的一个值决定Y的一组值,这种决定关系与Z取值无关。

                 2.多值依赖是全模式的依赖关系。(多值依赖的缺点是:数据冗余太大)

1.4 举例:有这样一个关系 <仓库管理员,仓库号,库存产品号> ,假设一个产品只能放到一个仓库中,但是一个仓库可以有若干管理员,那么对应于一个 <仓库管理员,库存产品号>有一个仓库号,而实际上,这个仓库号只与库存产品号有关,与管理员无关,就说这是多值依赖。

2. 第四范式

2.1 数学定义:设关系R(X,Y,Z),其中X,Y,Z是成对的、不相交属性的集合。若存在非平凡多值依赖,则意味着对R中的每个属性Ai(i-1,2,…,n)存在有函数依赖X->Ai(X必包含键)。那么R∈4NF。

2.2 思想来源:1.第四范式是在关系数据库中,对关系的最基本要求的满足第一范式。这样的关系模式是合法的,允许的。但人们发现有些关系模式存在插入、删除、修改异常、数据冗余等弊病,人们寻求解决这些问题的方法,这就是规范化的目的。

                         2.规范化的基本思想是逐步消除数据依赖中不合适的部分,使关系数据库模式的各关系模式达到某种程度的“分离”,即“一事一地”的模式设计原则。

3.定义对解:定义和实例对比解析

3.1 多值依赖:设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关

产品(X) 代理商(Y) 工厂(Z)
Car      A1 F1
Car A1 F2
Bus      A2 F2

 这里“产品(X)→→代理商(Y)”,产生的多值依赖关系如下

产品(X) 工厂(Z) 代理商(Y)
Car     F1 A1
Car F2 A1

这里一个car对应一组代理商,这就是代理商多值依赖于产品。为什么会产生这个多值依赖呢?
因为工厂,只有代理商A1销售Car ,但是这里却又两个工厂生产Car ,说以导致了Car和A1的关系冗余。这就是数据表的设计问题的体现。消除多值依赖也很简单。做如下表设计。

产品-经销商关系表

 

产品 供应商
Car  A1
Bus  A1
Car A2

产品生产关系表

 

产品 工厂
Car     F1
Car     F2
Bus    F2

3.2 从是否符合第四范式的角度分析以上表设关系R(X,Y,Z),其中X,Y,Z是成对的、不相交属性的集合。若存在非平凡多值依赖,则意味着对R中的每个属性Ai(i-1,2,…,n)存在有函数依赖X->Ai(X必包含键)。那么R∈4NF。

产品(X) 代理商(Y) 工厂(Z)
Car      A1 F1
Car A1 F2
Bus      A2 F2

“R中的每个属性Ai(i-1,2,…,n)存在有函数依赖X→Ai(X必包含键) ”,将这个要求,针对当前表展开。

X→Y:代理商依赖于产品

X→Z:工厂依赖于产品

从形式上看,这里明显Car →  A1的关系有两个,不满足条件。这个是从数学上形式的分析,不符合第四范式。至于原因,就是上面多值依赖的存在。

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

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

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

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

(0)


相关推荐

  • Oracle sqlplus设置显示格式命令详解

    / 运行SQL缓冲区 ?[关键词] 对关键词提供SQL帮助 @[@][文件名][参数列表] 通过指定的参数,运行指定的命令文件&#160

    2021年12月25日
  • linux 下vim的使用(学习必看!!重要)

    linux 下vim的使用(学习必看!!重要)vi与vimvi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。vim具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;因为程序简单

  • EFI和EFI Shell命令简介[通俗易懂]

    EFI和EFI Shell命令简介[通俗易懂]EFI是ExtensibleFirmwareInterface的缩写,是介于平台固件和操作系统之间的一层软件接口。EFI是Intel在1998年开始的一个项目演变而来,而在2005年Intel将EFI1.10开源并交由UnifiedEFI开源社区去维护和开发,Intel自己的EFI也就不单独做了,都和开源社区共用一个。现在也通常用EFI来代指UEFI,二者不再有意区分。EFIShell

  • redis锁实现_IDEA使用try

    redis锁实现_IDEA使用tryWeb全栈~35.显式锁上一期接口Lock显式锁接口的定义       lock()/unlock():就是普通的获取锁和释放锁方法,lock()会阻塞直到成功。       lockInterruptibly():与lock()的不同是,它可以响应中断,如果被其他线程中断了,则抛出InterruptedException。  &nbsp

    2022年10月15日
  • int什么数据类型_SQL基本数据类型

    int什么数据类型_SQL基本数据类型 一开始看到Int16,Int32,Int64这三种类型就觉得有点怪,为什么要整个数字结尾的,这么干就是想让大家一眼就知道这个数据类型占多大空间吧.Int16,等于short,占2个字节.-3276832767Int32,等于int,占4个字节.-21474836482147483647Int64,等于long,占8个字节.-9223372036854…

  • Cent0S下使用LVS+KeepLive进行负载均衡及高可用web服务器

    Cent0S下使用LVS+KeepLive进行负载均衡及高可用web服务器Cent0S下使用LVS+KeepLive,进行负载均衡及高可用web服务器。通过对本文章的阅读:你可以了解LVS+KeepLive的安装,按照步骤一步一步完成就能实现对2台或N台web服务器进行负载均衡,实现LVS的负载均衡及失效转移。一、需要的文件:1、ipvsadm-1.24.tar.gz,下载地址:下载2、keepalived-1.1.15.tar.gz,下载地…

发表回复

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

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