精华内容
下载资源
问答
  • 规范化理论:多值依赖

    千次阅读 多人点赞 2019-05-12 21:04:11
    多值依赖的定义 我们用一个例子来引出多值依赖(Multivalued Dependency,MVD)的含义。 假设学校中一门课程可由名教师讲授,教学中他们使用相同的一套参考书,这样我们可用下图的非规范化的关系来表示课程C、...

    多值依赖的定义

    我们用一个例子来引出多值依赖(Multivalued Dependency,MVD)的含义。

    假设学校中一门课程可由多名教师讲授,教学中他们使用相同的一套参考书,这样我们可用下图的非规范化的关系来表示课程C、教师T和参考书B间的关系。

    关系CTB

     

    如果关系CIB转化成规范化的关系,如图所示。

    规范后的关系CTB

     

    由此可以看出,规范后的关系模式CIB的键是(C, T, B),即全码,CTB属于BC范式。但是,进步分析可以看出,CTB还存在着如下弊端。

    ① 数据冗余大:课程、教师和参考书都被多次存储。
    ② 插入异常:若增加一名教授“数据结构”的教师“李静”时,由于这个教师也使用相同的一套参考书,所以需要添加两个元组,即:(数据结构, 李静, 算法与数据结构)和(数据结构, 李静, 数据结构教程)。
    ③ 删除异常:若要删除某一门课的一本参考书,则与该参考书有关的元组都要删除,如删除数据库原理”课程的“数据库系统”,则需要删除(数据库原理, 吴胜利, 数据库系统)和(数据库原理, 陈晨, 数据库系统)两个元组。

     

    产生以上弊端的原因主要有以下两方面:
    ①对于关系CTB中C的一个具体值来说,有多个T值与其相对应;同样,C与B间也存在着类似的联系。
    ②对于关系CTB中的一个确定的C值,与其所对应的一组T值与B值无关。如,与“数据库原理”课程对应的一组教师与此课程的参考书毫无关系。

    以上两个方面可以看出,C与T间的联系显然不是函数依赖,在此我们称之为多值依赖

    多值依赖的定义:设有关系模式R(U),U是属性全集,X,Y和Z是属性集U的子集,且Z=U-X-Y,如果对于R的任一关系,对于X的一个确定值,存在Y的一组值与之对应,且Y的这组值仅仅决定于X的值而与Z值无关,此时称Y多值依赖于X,或X多值决定Y,记作X→→Y。


    多值依赖与函数依赖间的区别

    (1)在关系模式R中,函数依赖X→Y的有效性仅仅取决于X,Y这两个属性集,不涉及第三个属性集,而在多值依赖中,X→→Y在属性集U(U=X+Y+Z)上是否成立,不仅要检查属性集X,Y上的值,而且要检查属性集U的其余属性Z上的值。因此,可能会有X→→Y在属性集W(W\subsetU)上成立,而在属性集U上不一定成立的情况,所以,多值依赖的有效性与属性集的范围有关。如果在R(U)上有X→→Y在属性集W(W\subsetU)上成立,则称X→→Y为R(U)的嵌入型多值依赖。

    (2)如果在关系模式R上存在函数依赖X→Y,则任何Y'\subsetY均有X→Y'成立,而多值依赖X→→Y在R上成立,但不能断言对于任何Y'\subsetY有X→Y'成立。

     

    多值依赖公理及其推论

    设有关系模式R(U),U是属性全集,X,Y,Z和W是属性集U的子集。

    多值依赖公理

    ① 增广律:如果X→→Y,V\subseteq W\subseteqU,则WX→→VY。

    ② 传递律:如果X→→Y,Y→→Z,则X→→Z-Y。

    ③ 补余律:如果X→→Y,则X→→U-X-Y。

     

    函数依赖公理与多值依赖混合公理

    ① 复制规则:从FD导出MVD,如果X→Y,则X→→Y。
    ② 接合规则:从MVD导出FD,如果X→Y,Z\subseteqY,且存在W\subseteqU有W\capY=Φ,W→Z,则X→Z。

     

    多值依赖推论

    ①合并律:如果X→→Y,X→→Z,则X→→YZ。

    ②伪传递律:如果X→→Y,WY→→Z,则XW→→(Z-W-Y)。

    ③ 分解律:如果X→→Y,X→→Z,则X→→(Y\capZ),X→→(Y-Z),X→→(ZY)。这说明,如果两个相交的属性子集均多值依赖于另一个属性子集,则这两个属性子集因相交而分割成三部分也都多值依赖于该属性子集。

    ④混合伪传递律:如果X→→Y,XY→→Z,则X→→(Z-Y)。

     

     

     

    参考资料:[1]陈志泊,王春玲,许福,范春梅.数据库原理及应用教程(第3版)[M].北京:人民邮电出版社,2014:155-157.

     

     

     

     

     

     

     

    展开全文
  • 多值依赖和第四范式的个人理解

    千次阅读 多人点赞 2020-01-03 09:42:36
    1. 多值依赖 1.1 多值依赖多值依赖属4nf的定义范围,比函数依赖要复杂得。在关系模式中,函数依赖不能表示属性值之间的一对联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有...

    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     A1F1
    CarA1F2
    Bus     A2F2

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

    产品(X)工厂(Z)代理商(Y)
    Car    F1A1
    CarF2A1

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

    产品-经销商关系表

     

    产品供应商
    Car A1
    Bus A1
    CarA2

    产品生产关系表

     

    产品工厂
    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     A1F1
    CarA1F2
    Bus     A2F2

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

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

    X→Z:工厂依赖于产品

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

    展开全文
  • 数据库原理之多值依赖

    千次阅读 2020-05-25 16:53:31
    数据库原理之多值依赖 到底什么是斜体样式多值依赖呢, 其实很简单, 这里我们不用复杂的术语,而是试着通过通俗的语言来理解这个概念 首先我们要引入一个先导概念: 函数依赖, 简单来说就是一个值发生改变,另一个...

    数据库原理之多值依赖

    到底什么是斜体样式多值依赖呢,

    其实很简单,

    这里我们不用复杂的术语,而是试着通过通俗的语言来理解这个概念
    首先我们要引入一个先导概念: 函数依赖,
    简单来说就是一个值发生改变,另一个值也随之改变

    例如在一个关系模式SN中
    S代表学生号,N代表学生宿舍床位号
    如下图

    sn关系表
    在这里,学号S决定了学生的宿舍床位号N

    翻译成术语就是N函数依赖于S,

    符号表示是S→N

    注意,这里的的对应关系是一对一,一个学生号对应一个床位号

    函数依赖的正经定义是:设 R 为任一给定关系,如果对于 R 中属性 X 的每一个值,R 中的属性 Y 只有唯一值与之对应,则称 X 函数决定 Y 或称 Y 函数依赖于 X ,记作 X—>Y

    所以,理解了函数依赖的这个概念,我们就能理解多值依赖

    这里,一样举例说明
    学校里一门课程由多名讲师教讲授,一门课程有多本参考书
    关系模式teach(C,T,B)
    C课程 T讲师 B参考书
    在这里插入图片描述
    在这里插入图片描述

    在这里我们可以看到参考书和老师是没有关系的,不管老师怎么换,只要是物理这门课程,那么参考书就不会变,把李勇和王强交换位置不会改变整张表,这就称参考书多值依赖于课程,之所以是多值那是因为参考书不是一本。

    因此,老师也多值依赖于课程

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

    展开全文
  • 多值依赖

    千次阅读 2017-03-11 15:15:02
    在关系模式中,函数依赖不能表示属性值之间的一对联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖。例如,教师和学生之间没有直接联系,但教师...
    在关系模式中,函数依赖不能表示属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖。例如,教师和学生之间没有直接联系,但教师和学生可通过系名,或任课把教师和学生联系起来。

    展开全文
  • 数据库原理-多值依赖

    万次阅读 2017-02-26 15:29:29
    终于理解了多值依赖 转自http://blog.csdn.net/smstong“多值依赖的定义: 设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一个关系r,r在(X,Z)上的每...
  • 数据库学习1--函数依赖和多值依赖

    千次阅读 2015-06-24 09:29:52
    数据依赖中最重要的有:函数依赖 和 多值依赖,当然还有其他依赖关系,这里只讨论这两种。函数依赖:属性间由于某个属性X确定了,那么属性Y也就确定了举个例子,f(x) = y,如果x确定了,y也就确定了。 学生信息管理...
  • 轻松理解数据库必须掌握的数据依赖关系。
  • 其中函数依赖和多值依赖最为重要,如何理解这两种依赖呢,学了一段时间后,不仅想到高中时学习函数的情景。 学习函数的概念前,先引入的概念是映射,一对一映射的关系就被称为函数。简单的例子 f(x, y, z)= x2+4y+...
  • Spring的IOC依赖注入实例

    千次阅读 2014-08-14 23:30:01
    Spring的IOC依赖注入实例 for Mac IDE。
  • Spring依赖注入和实例化(new)的差别

    千次阅读 2018-09-21 10:32:59
    Spring依赖注入和实例化(new)的差别。  Sping为什么使用依赖注入而不使用实例化对象的方式?  首先说明一下概念  依赖注入(Dependency of Injection)和控制反转(Inversion of Control 简称:ioc)是一个概念。  ...
  • activiti 多实例任务

    万次阅读 多人点赞 2016-04-25 09:15:18
    最常用的肯定是任务节点,因为在OA系统、审批系统、办公自动化系统中核心的处理就是流程的运转,在流程运转的时候,可能我们有这样的一个需求,在一个任务节点的时候,我们需要个人对这个节点进行审批...
  • 体现了具体项目工程里面的分层,dao,daoImpl,service,serviceImpl,action。让你真正的理解这为啥分层。 顺便清清楚楚的理解@Component、@Service、@Repository 和 @...Spring 2.5引入了更典型化注解(stereotype
  • 当然这个例子就是使用xml配置文件,实现设值依赖注入。暂时不牵扯到注解的使用。 分几个文件,如下: 先是各个组件,dao,daoImpl,service,serviceImpl,action。 1.PersonDao package lxk.test...
  • 文章目录0.思维导图1.为什么要学习关系数据库规范化理论?(1)基本概念回顾(2)关系模式的形式化定义(3)什么是数据依赖F?(4)数据依赖F对关系模式的影响1️⃣ 数据冗余(Data ...(2)函数依赖① 函数依赖② 平
  • flowable 任务节点多实例使用

    万次阅读 2018-05-14 19:45:16
    最常用的肯定是任务节点,因为在OA系统、审批系统、办公自动化系统中核心的处理就是流程的运转,在流程运转的时候,可能我们有这样的一个需求,在一个任务节点的时候,我们需要个人对这个节点进行审批,...
  • Angular2 依赖注入之实例化过程

    千次阅读 2017-04-20 21:44:55
    上一篇讲了Angular 依赖注入之注解 这里会介绍 Angular 的注入器和实例化过程,基于 angular@4.1.0-beta.1 Angular 依赖注入过程主要有下面几个重要的部分组成: Inject 和 Injectable 装饰器 解析提供商,构造注入...
  • spring练习 刚刚学spring,做了个小小小项目,来加深理解。... ·其他依赖注入属性,都使用property 元素确定参数。 Person.java PersonFactory.java Chinese.java American.java bean.xml SpringTest.java
  • Spring依赖注入和实例化(new)的差别。 Sping为什么使用依赖注入而不使用实例化对象的方式? 首先说明一下概念 依赖注入(Dependency of Injection)和控制反转(Inversion of Control 简称:ioc)是一个概念。 ...
  • 大家总是会错误的理解Bean的“实例化”和“初始化”过程,总会以为初始化就是对象执行构造函数生成对象实例的过程,其实不然,在初始化阶段实际对象已经实例化出来了,初始化阶段进行的是依赖的注入和执行一些用户...
  • 一、首先是基于XML配置的依赖注入实例  在本实例中,Spring MVC并非主要讲解内容,其文件范式不再重复,而有关依赖注入文件包括:接口类car.java,实现了car接口的Taxi,java和Train.java。在User类中,有一个Car...
  • 方式一(实体类):1234567//java中遍历实体类,获取属性名和属性 public static void testReflect(Object model) throws Exception{ for (Field field : model.getClass().getDeclaredFields()) { field.....
  • 此篇文章,参考其他文章,亲自测试,并附上测试代码和测试结果图,详详细细,明明白白的讲解什么叫依赖注入,什么叫IOC,绝对能给你看完之后,就知道的清清楚楚,明明白白,在以后都不会忘记这个概念,当然你要是...
  • ​ ————《java高级程序设计》深入反射的实例 文章目录一、前提二、需求分析三、项目设计四、实例UML图五、源码(1)储存注册对象信息(2)IOC容器(3)注册器(4)测试实体与xml文件(4)测试实体与xml文件(5)...
  • 首先Spring尝试通过ApplicationContext.getBean()方法获取A对象的实例,由于Spring容器中还没有A对象实例,因而其会创建一个A对象,然后发现其依赖了B对象,因而会尝试递归的通过ApplicationContext.getBean()方法...
  • SpringMVC最核心的IOC的...我们项目开发中,最经常用到,那怎么实现实例Bean并依赖注入呢?我们今天带着这些问题来通过SpringMVC源代码进行深入的解析。这篇介绍不对注解实例化和注入进行讲解,这个放在后面在介绍。
  • Spring之依赖注入

    万次阅读 2018-01-10 11:49:42
    Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系。那么我们今天的主角依赖注入到底有什么神奇之处呢?请往下继续看。 了解过设计模式的朋友肯定知道工厂模式吧,即所有的对象的创建都交给...
  • java线程和队列实例

    万次阅读 2016-06-02 13:54:39
    java线程和队列实例
  • vue-router详解及实例

    万次阅读 2018-01-13 16:01:20
    ​ 根据不同的 url 地址展示不同的内容或页面,无需依赖服务器根据不同URL进行页面展示操作 优点 用户体验好,不需要每次都从服务器全部获取,快速展现给用户 缺点 使用浏览器的前进,后退键的
  • 昨天在跟群友做技术交流的时候,了解到,有很大公司都是采用了高可用的,分布式的,实例沉余1+台。但是在小公司的同学也很,他们反映并不是所有公司都有那样的资源来供你调度。往往公司只会给你一台机器,因为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 515,063
精华内容 206,025
关键字:

多值依赖的实例