多值依赖(MVD)的定义

多值依赖(MVD)的定义

多值依赖(Multivalued dependency)是两个属性或属性集合之间相互独立的断言. 它是广义的函数依赖.

在某种意义上, 每个FD意味着一个相应的多值依赖. 但是仍然存在有不能用FD解释的属性集合相互独立的情况.

这里我们将说明引起多值依赖的原因和在数据库模式设计中如何使用多值依赖.

属性独立及随之产生的冗余

在设计关系模式时, 有时会有一些偶然的情况, 即某个模式属于 BCNF, 但在相应的关系中还有与 FD 无关的冗余存在.

在 BCNF 模式中最常见的导致冗余的情形是试图把键的两个或多个集合值属性置于同一个关系中.

例 3.28

本例中, 主要存储的对象是影星. 假设影星有多处地址, 地址包括街道(street)和城市(city)两部分.

地址集合(street and city)是关系要存储的一个集合值属性子集.

另一个要存储的集合值属性子集是该影星出演电影的名称(title)和发行年份(year).

关系的模式和所包含的函数依赖关系

因此此关系的模式是 $R(name, street, city, title, year)$

函数依赖集合为空集, 因为不存在非平凡的函数依赖. (注意 $street\not\rightarrow city$, $title\not\rightarrow year$.)

因此关系不存在BCNF违例, 但是数据明显有冗余.

namestreetcitytitleyear

C. Fisher

123 Maple St.

Hollywood

Star Wars

1977

C. Fisher

5 Locust Ln.

Malibu

Star Wars

1977

C. Fisher

123 Maple St.

Hollywood

Empire Strikes Back

1980

C. Fisher

5 Locust Ln.

Malibu

Empire Strikes Back

1980

C. Fisher

123 Maple St.

Hollywood

Return of the Jedi

1983

C. Fisher

5 Locust Ln.

Malibu

Return of the Jedi

1983

表中给出了 Carrie Fisher 的两个假设的地址和她的三部著名的电影. 没有理由只把某个地址和某部影片关联, 而不与另一部影片关联. (除非特别指明她在拍某部电影时, 一直住在其中某个地址.)

因此, 表达影星的地址和电影相互独立的唯一途径是把地址和电影的各种组合(这里总共是 $2\times 3=6$ 种)都罗列出来. 但是这样的组合明显包含数据冗余.

该关系的键是由所有五个属性构成的唯一的键: $(\underline{name}, \underline{street}, \underline{city}, \underline{title}, \underline{year})$.

mathcal 对应于什么库_数据库理论相关推荐

  1. 05-数据库_数据库基础

    目录 一,认识MySQL数据库 1,什么是数据库 2,作用 3,常见的数据库 4,MySQL概述 5,MySQL基本操作 二,win10安装MySQL和图形工具 1,安装MySQL 2,安装navic ...

  2. 任务卡_05-数据库_数据库基础

    目录 一,数据库训练任务 1,任务概述 2,参考代码 2.1 建表及插入数据 2.2 检索 3,参考资料 MySQL数据库中int,bigint,smallint和tinyint区别 一,数据库训练任 ...

  3. mysql分库一个库和多个库_数据库分库后不同库之间的关联

    数据库分库后不同库之间的关联 一.所有库在同一节点上 当业务垂直拆分出很多业务库的时候,如果都部署在同一个源上(同一个机器节点上),那么这种情况是最好办的,直接库名+表名 join就可以. 二.不在一 ...

  4. 企业面试题库_数据库部分

    使用存储过程进行分页,页面使用javascript分页 Java或Dotnet题 如有城市表和蔬菜表,用SQL语句查询城市表,删除编号为2号的蔬菜, 为蔬菜表的蔬菜名称字段中添加土豆 题不全,无法做 ...

  5. mathcal 对应于什么库_如何快速构建React组件库

    前言 俗话说:"麻雀虽小,五脏俱全",搭建一个组件库,知之非难,行之不易,涉及到的技术方方面面,犹如海面风平浪静,实则暗礁险滩,处处惊险- 目前团队内已经有较为成熟的 Vue 技术 ...

  6. 牛客网数据开发题库_数据库刷题—牛客网(21-30)

    21.查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序 CREATE TABLE `employees` ( `emp_no` ...

  7. mysql 控制函数库_数据库开发——MySQL——函数与流程控制

    一.函数 1.介绍 1.1.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定 ...

  8. MySQL百一题库_数据库应用MySQL试题题目及答案,课程2020最新期末考试题库,章节测验答案...

    一台原价2000元的洗衣机,先降价10%&2bsp;后来又提价10%,这时价格还是2000元.______.(判断对错) 淘气有中u本课外书,笑笑有u0本课外书.求淘气的课外书比笑笑少百分之几 ...

  9. 任务卡_05-数据库_-MySql 高级任务

    目录 一,财务管理系统-数据库模块 1,任务概述 2,参考代码 2.1 数据准备 2.2 参考SQL语句 1. 修改表结构,在部门表中添加部门简介字段 2. 将李四的职称改为"工程师&quo ...

最新文章

  1. ProteinGCN | 使用图卷积网络表示学习蛋白质结构
  2. vue refs v-for 使用注意
  3. input自适应_一种Dynamic ReLU:自适应参数化ReLU(调参记录26)Cifar10~95.92%
  4. php 面向过程分页,无JS,完全php面向过程,数据分页
  5. cassandra 数据到Java对象的映射绑定
  6. 编码之道:取个好名字很重要(转)
  7. mysql索引是自动使用吗_mysql索引是自动使用吗?
  8. linux源码_从linux源码看epoll及epoll实战揭秘
  9. 2019汇总之从4个关键词看单细胞与肝癌文献
  10. linux-top命令
  11. 使用集合组织相关数据
  12. Shell脚本学习-阶段二十七-命令解释一
  13. 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(Hdu2191)-多重背包
  14. Express入门( node.js Web应用框架 )
  15. 视频画中画效果,拖动进度条可以seek到相应视频帧显示
  16. 2.10.PHP7.1 狐教程-【PHP 函数】
  17. 静态路由实验:Dynagen-Dynamips + WinPcap + SecureCRT
  18. python读取csv数据出错_使用Pandas在python中读取csv文件时出错
  19. uniapp小程序webSocket封装、断线重连、心跳检测
  20. Netty原理:pipeline

热门文章

  1. Oracle expdp impdp导出导入命令及数据库备份
  2. java 快速排序 递归_Java递归快速入门
  3. 服务器控件的优点和缺点_什么是无服务器架构? 它的优点和缺点是什么?
  4. 遗传算法编码方式整数编码_如何编码卫星算法并从头开始烹制西班牙海鲜饭
  5. C#入门,基本的整型输入
  6. Python编程模块里一些小众但是却比较实用的python内置库
  7. python双向链表
  8. Hadoop 系列之 Hive
  9. Python快速使用jira模块调用Jira接口
  10. 目前机器学习最热门的领域有哪些