数据库函数依赖

数据库函数依赖数据库函数依赖一、函数依赖(FunctionalDependency)的概念      数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。二、定义    设R(U)是属性U上的一个关系模式,X和Y均为U={A1,A2,…,An}的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u

大家好,又见面了,我是你们的朋友全栈君。

一、函数依赖(Functional Dependency)的概念 
     
数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。

二、定义 
   
RU)是属性U上的一个关系模式,XY均为U={A1A2An}的子集,rR的任一关系,如果对于r中的任意两个元组uv,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为XY 
例:
(sno-
学生IDtno-教师IDcno-课程IDsname-学生姓名,tname-教师姓名,cname-课程名称,grade-成绩)
1
snosname, cnocname,(sno,cno)grade √
2
snamesno, tnocno, snotname ×

三、函数依赖是语义范畴 
1
、语义:数据所反映的现实世界事物本质联系
2
、根据语义来确定函数依赖性的存在与否
3
、函数依赖反映属性之间的一般规律,必须在关系模式下的任一个关系r中都满足约束条件。

四、属性间的联系决定函数依赖关系 
XY均是U的子集
1
XY间联系是1:1,则XY,YX。(相互依赖,可记作X←→Y
2
XY间联系是M:1(M)XY
3
XY间联系是M:N(M,N),则XY间不存在函数依赖。

五、完全函数依赖和部分函数依赖 
1
、函数依赖分为完全函数依赖和部分函数依赖
2
、定义:
  
R(U)中,如果XY,并且对于X的任何真子集X’都有X’Y’,则称Y完全依赖于X,记作XY;否则,如果XY,且X中存在一个真子集X’,使得X’Y成立,则称Y部分依赖于X
例:
学生ID,学生姓名,所修课程ID,课程名称,成绩
(学生ID,所修课程ID成绩
成绩既不能单独依赖于学生ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。
(学生ID,所修课程ID学生姓名
学生ID学生姓名
学生姓名可以依赖于关键字的一个主属性——学生ID,因此学生姓名部分函数依赖于(学生ID,所修课程ID)。

六、平凡函数依赖和非平凡函数依赖 
   
XY均为某关系上的属性集,且XY
    1)
Y包含于X,则称XY为:平凡函数依赖;(Sno, Cno) Sno  (Sno, Cno) Cno
    2)
Y不包含于X,则称XY为:非平凡函数依赖。(Sno, Cno) Grade
     Y
包含于X内,WX相交,与Y无直接交集。 
    
则:XY为平凡函数依赖
     X
W, WY为非平凡函数依赖

七、传递函数依赖 XYYZ Z传递函数依赖于X

 

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148206.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机网络曼彻斯特编码与差分曼彻斯特编码

    计算机网络曼彻斯特编码与差分曼彻斯特编码曼彻斯特编码与差分曼彻斯特编码 1 两种编码在中间均需要进行一次跳变 2 曼彻斯特编码 吉大原则为负到正为 1 正到负为 0 3 差分曼彻斯特编码 为 0 时发生跳变 为 1 时不发生跳变 在此处跳变的含义为中间虚线位置 若当前为 1 则与前一个编码的后半部分电平相同 若为 0 则与前一个编码的后半部分电平相反 4 对于差分曼彻斯特编码 第一个位置需自己决定 一般选择不同 从边界直着下来

    2025年10月14日
    6
  • C3P0连接池配置文档

    C3P0连接池配置文档一、导入jar包下载链接 二、配置文件配置文件名称:c3p0-config.xml(固定)配置文件路径:src(类路径)配置文件内容:命名配置<c3p0-config><!–命名的配置–><named-configname="test"><!–连接数据库的4项基本参数-…

    2022年6月12日
    28
  • webstorm2021激活码【注册码】

    webstorm2021激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    61
  • Pycharm多行编辑[通俗易懂]

    Pycharm多行编辑[通俗易懂]alt+shift+鼠标左键

    2022年8月27日
    7
  • 数据结构导论第一遍重要吗_数据结构导论自考2018

    数据结构导论第一遍重要吗_数据结构导论自考2018根据以前的经验发现,看一本书,如果一天看一点,一天看一点,到最后也就看了一点点,所以这些天我决定吃个大力丸把《数据结构导论》这本书看完。      我很少能这样看完这样的一本厚厚的书的,如果是以前,可能得连续看半个月以上呢,就是不知道效果怎样而已,这个先不管,毕竟这些天也挺难熬的,大家都知道看书会困的嘛!所以睡不着的时候,床前备一本书,有备无患。这样,你会看到有些人的书上留了很多哈喇子的印记

    2022年8月18日
    10
  • 链表lnode和*LinkList有什么区别(java链表ListNode)

    ListNode刷LeetCode碰到一个简单链表题,题目已经定义了链表节点ListNode,作者很菜,好多忘了,把ListNode又查了一下structListNode{intval;//定义val变量值,存储节点值structListNode*next;//定义next指针,指向下一个节点,维持节点连接}·在节点ListNode定义中,定义为节点为结构变量。·节点存储了两个变量:value和next。value是这个节点的

    2022年4月15日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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