首页 > 数据库 >【数据库系统概论】第6章 (一)函数依赖和码

【数据库系统概论】第6章 (一)函数依赖和码

时间:2024-12-01 12:28:20浏览次数:7  
标签:关系 候选 依赖 函数 数据库系统 平凡 概论 属性

目录

函数依赖

1、函数依赖

2、平凡函数依赖与非平凡函数依赖

3、完全函数依赖与部分函数依赖

4、传递函数依赖

候选码

主属性与非主属性

第二章提过:在本章中把关系模式看作一个三元组:R<U,F>

在本章中把关系模式看作一个三元组:R<U,F>

  • R:表示关系模式的名称,通常是关系的名字。

  • U:是一个属性集合,表示关系中的所有属性。属性可以理解为表中的列。

  • F:表示一组函数依赖(Functional Dependencies),即属性之间的约束关系。函数依赖指的是在给定关系中,某些属性的值确定了其他属性的值。

函数依赖

数据依赖是关系内部属性与属性之间的一种约束关系(通过属性间值的相等与否体现出来的数据间相互联系;是现实世界属性间相互联系的抽象;是数据内在的性质;是语义的体现

主要类型

函数依赖(FunctionalDependency,简记为FD)

函数依赖描述了一个属性或属性集如何唯一确定另一个属性或属性集的值

多值依赖(Multi-Valued Dependency,简记为MVD)

要定义属性之间的关系,也就是函数依赖

学号(Sno)和课程号(Cno)共同决定了成绩(Grade)

学号 Sno\text{Sno}Sno 是主键,它唯一标识一个学生,因此它决定了学生所在的系(Sdept),所在的系决定了系主任的姓名(Mname)

1、函数依赖

定义: 设R(U)是一个属性集U上的关系模式,X和Y是U子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等而在 Y上的属性值不等,则称"X函数确定Y”或“Y函数依赖于X”记作X→Y

若X→Y,并且Y→X,则记为X←→Y。
若Y不函数依赖于X,则记为XY。

任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同

函数依赖不是指关系模式R的某个或某些关系实例满足约束条件,而是R的所有关系实例均要满足约束条件

  • 属性集X 的值决定了属性集 Y 的值。
  • 如果两个元组在属性集 X上的值相同,那么它们在属性集Y 上的值也必须相同
  • X 的值唯一确定了 Y 的值

2、平凡函数依赖与非平凡函数依赖

平凡函数依赖其实是“显然的”依赖,它表示某个属性集 XXX 通过自身或其子集决定了 YYY。这种依赖没有实际的约束意义,因为它只描述了属性本身之间的关系。例如,学号总是决定学号本身,或者学号和课程号的组合总是决定学号本身,这些依赖显然是不需要特别关注的。


对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。
若不特别声明 ,我们总是讨论非平凡函数依赖,

3、完全函数依赖与部分函数依赖

在R(U)中,如果X→Y,并且对于x的任何一个真子集X'

若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖

完全函数依赖表示某个非主属性(或属性集)完全依赖于复合主键的所有属性

 

4、传递函数依赖

如果Y→X 即X←→Y,则Z直接依赖于X,而不是传递函数依赖。

候选码

则K称以为的一个候选码(Candidate Key)。

如果U函数依赖于K即K→U从则K称为超码(Surpkey);候选码是最小的超码。

若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)

码(键)

在关系中由唯一可标识元组的属性或属性组构成

候选码(键)

且属性个数最少的码

主码(键)

多个候选码,则选定其中一个为主码。主码不允许为空值(非零和空格)

主属性与非主属性

包含在任何一个候选码中的属性,称为主属性(Prime attribute

不包含在任何码中的属性称为非主属性(Nonprimeattribute)或非码属性(Non-key attribute)》

全码:整个属性组是码,称为全码(AI-key)

外码:在关系R中包含另一个关系S的主键所对应的属性或属性组【主码与外部码一起提供了表示关系间联系的手段】

标签:关系,候选,依赖,函数,数据库系统,平凡,概论,属性
From: https://blog.csdn.net/Z15922342915/article/details/144140236

相关文章

  • C语言学习------函数
       一、函数的概念  数学中我们其实就⻅过函数的概念,⽐如:⼀次函数y=kx+b,k和b都是常数,给⼀个任意的x,就得到⼀个y值。        其实在C语⾔也引⼊函数(function)的概念,有些翻译为:⼦程序,⼦程序这种翻译更加准确⼀些。C语⾔中的函数就是⼀个完成某项特定的任务的......
  • 箭头函数的this值继承于哪里
    箭头函数没有自己的this绑定。它们从词法上继承this值,这意味着它们从周围的(封闭的)函数或全局作用域继承this。换句话说,箭头函数中的this指的是定义箭头函数时,在其外部函数中this的值。如果箭头函数不在任何函数内部,那么this将引用全局对象(在浏览器中是window,在Node.......
  • Linux操作系统2-进程控制3(进程替换,exec相关函数和系统调用)
    上篇文章:Linux操作系统2-进程控制2(进程等待,waitpid系统调用,阻塞与非阻塞等待)-CSDN博客本篇代码Gitee仓库:Linux操作系统-进程的程序替换学习·d0f7bb4·橘子真甜/linux学习-Gitee.com本篇重点:进程替换目录一.什么是进程替换?二.进程替换函数常用的函数 2.1......
  • 函数与嵌套函数基本概念
    只要不输入中文,那么所有的参数以及标点都必须是英文输入法1、在单元格里直接输入=sum(sum大小写混搭都可以),双击下面弹出的SUM,会显示=SUM(),然后拖动要求和的单元格,看到公式=SUM(C2:E2),点击回车就能看到结果,可以往下拖动,也可以把鼠标放到第一个求和的单元格上,看到+,双击即可求出所有......
  • Shell编程 - 函数篇
    自建函数库-颜色字符串颜色字符串输出颜色,有时候关键地方需要醒目,颜色是最好的方式:字体颜色字体背景颜色显示方式30:黑40:黑0:终端默认设置31:红41:深红1:高亮显示32:绿42:绿4:下划线33:黄43:黄色5:闪烁34:蓝色44:蓝色7:反白显示35:紫色45:紫色8:隐藏......
  • 类的析构函数自动调用
    类的析构函数会自动调用。析构函数是在对象的生命周期结束时由系统自动调用的特殊成员函数,主要用于释放对象占用的资源,执行清理工作。具体情况自动调用的时机:局部对象:当对象离开其作用域时,析构函数会自动调用。#include<iostream>classMyClass{public:~MyClass(......
  • 使用函数输出一个整数的逆序数
    Description本题要求实现一个求整数的逆序数的简单函数。(注意:逆序后去掉前导0)函数接口定义:intreverse(intnumber);其中函数reverse须返回用户传入的整型number的逆序数。Input一行一个整数n。Output一个整数表示答案。SampleInput1 -12340SampleOutput1-4......
  • 使用函数验证哥德巴赫猜想
    Description本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。最后给定两个整数m和n,按顺序输出满足条件的数,并按一定形式输出。(素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。)函数接口定义:int......
  • 基于查表法实现 Softmax 函数
    1简介在深度学习领域,Softmax函数是一种广泛应用的激活函数,尤其在多分类问题中表现突出。它能够将原始的得分转换为概率分布,使每个类别的概率值都处于0到1之间且总和为1。Softmax内含有大量的指数运算,这使得它在嵌入式端(例如RV1106)上计算较慢。针对量化模型,模型的输出一......
  • C#里怎么样使用Array.BinarySearch函数?
    C#里怎么样使用Array.BinarySearch函数?因为二分算法如此重要,所以要多加练习。但是它的返回值,也有三种状态,导致很多人使用它的时候,也感觉到迷惑的。在这里的例子演示了三种返回值的使用: /**C#ProgramtoSearchanelementwithArrayIndices*/usingSystem;c......