多域名指向同一网站,四川建设机械网站首页,佛山网站外包,大学一学一做视频网站在我们学习数据库的范式之前#xff0c;我们需要理解一下有关函数依赖的一些知识。
我们数据库中常说的函数依赖其实是数据依赖的一种#xff0c;数据依赖除了函数依赖还有多值依赖和连接依赖。其中最重要的是函数依赖。
函数依赖的概念
函数依赖是关系模式中各个属性之间…在我们学习数据库的范式之前我们需要理解一下有关函数依赖的一些知识。
我们数据库中常说的函数依赖其实是数据依赖的一种数据依赖除了函数依赖还有多值依赖和连接依赖。其中最重要的是函数依赖。
函数依赖的概念
函数依赖是关系模式中各个属性之间的一种依赖关系是规范化理论中最为重要和基础的概念。
为了便于理解直接通过以下一个例子进行讲解。
学生表 学号姓名专业名性别出生日期本学期学分42014601小明信管男2000-2-112442014602小红电商女2001-8-72442014603二丫财会女2001-9-42442014604狗蛋物流男2002-10-1824 我们观察以上的表其中学号、姓名、性别、出生日期、本学期学分这些我们可以看作是不同的属性假设我们已知一个同学的学号为42014603我们就可以得到这个人的姓名为二丫专业为财会性别为女等信息。
也就是说在此表中如果说已知了一个学号值我们可以通过这个学号值查找到这个学号对应的唯一的姓名,也可以通过这个学号值得到唯一的专业名。
上面这种属性(属性组和属性属性组之间一对一的推导关系便为函数依赖
我们用一个“→”来表示这种函数依赖关系。即X→Y其所表达的含义为Y依赖于X注意是后依赖前
例如学号→姓名学号→专业名学号→性别学号→出生日期学号→本学期学分 几种特定的函数依赖
为了便于理解下面内容我们用以下这个表作为例子。
学号姓名课程号个人成绩011小马02011499
平凡函数依赖
定义 设一个关系为R(U)X和Y为属性集U上的子集当X → Y时如果Y ⊂ X(也就是Y是X的子集 那么称X→Y是平凡的函数依赖。这时候的X一般为属性组Y为单个属性或者属性组)
举例学号姓名→姓名
注意如果有Y ⊂ X 那么X → Y 一定成立。
解释因为Y ⊂ X 那么Y必然是X中的一部分因为X确定了那么自然其子集也确定了因为整体可以决定部分。
特殊情况Y有可能和X是一样的因为子集可以包含自己本身也就是自己推导自己。
非平凡函数依赖
定义设一个关系为R(U)X和Y为属性集U上的子集若X→Y且X不包含Y则称X→Y为非平凡函数依赖。
举例
学号、课程号→个人成绩
相对于平凡函数依赖来说非平凡函数依赖更为重要与常见 完全函数依赖
定义一个关系模式R(U)中X和Y为属性集U上的子集如果X→Y且对与X的任意一个真子集Z来说Z→Y都不成立。
这个完全函数依赖我们分俩个情况理解1.X为单个属性值这时候X→Y那么这个关系必定为完全依赖关系。2.X为属性组也就是你用他的子集无法推导出Y必须用整个X才行。
举例1.单个属性学号→姓名这个依赖关系必是完全函数依赖因为X没真子集。 2.属性组学号课程号→个人成绩其真子集有俩学号和课程编号如果只知道其中一个是推导不出来个人成绩的必须合在一起整体使用所以是完全函数依赖。
部分函数依赖
定义一个关系模式R(U)中X和Y为属性集U上的子集如果X→Y对与X的真子集Z来说存在一个Z→Y那么X→Y为部分函数依赖。
举例(学号课程号→姓名此时X为属性组学号课程号其真子集有俩个学号、课程号我们通过学号可以直接得到学生的姓名也就是学号→姓名所以(学号课程号→姓名为部分函数依赖 传递函数依赖
定义一个关系模式R(U)中X、Y、Z为属性集U上的子集如果X→YY不能反推出X且Y→Z这时候通过X可以推出Z即X→Z我们把X→Z称为传递函数依赖。
举例
学号所在系系主任0112管理系王老师
学号→所在系所在系→系主任所以学号→系主任为传递函数依赖。