-
2021-03-15 21:02:18
码,又称键、关键字,英文是key。唯一标识实体的属性集称为码。
超码(超键):即码,可以有多个,但至少有一个。
候选码(候选键、候选关键字):其任意真子集都不能构成超码的超码。假设有个超码K(A1,A2,A3),加上属性A4还是超码,但是去掉A3后就不能唯一标识一个实体了,K就是候选码。候选码可以有多个。
主码(主键,主关键字):选定的一个候选码,有且只能有一个
全码:一个候选码包含关系模式中的所有属性,则该候选码为全码
举个例子:
关系Student(学号,姓名,年龄,院系,班级)
语义规定:1.知道学号就唯一确定了一个学生实体 2.一个班上没有同名者 3.知道院系、姓名和班级也可以唯一确定一个实体
超码:(学号) 、(学号,姓名)、(学号,姓名,年龄)、(学号,年龄)、(院系,姓名,班级)、....太多了,不写了
候选码:(学号)、(院系,班级,姓名)
主码:选定学号作为主码,则主码即(学号)
水平有限,若有错误,敬请指正。
更多相关内容 -
狂学数据库之关系模式的设计问题及数据的函数依赖
2020-12-14 14:41:28关系模式的设计问题及数据的函数依赖一. 关系模式的设计问题1.1 数据依赖1.2 数据依赖对关系模式的影响二. 数据的函数依赖2.1 函数依赖2.1.1 函数依赖的定义2.1.2 函数依赖的3种基本情形2.2 函数依赖和码(关键字)... -
有关系模式R(ABCDE),回答下面几个问题:
2020-12-14 11:42:46有关系模式R(ABCDE),回答下面几个问题:...则:当属性组BC也是关系模式R的候选码时,R是BCNF。 此时有:A →BC,BC →A成立。 (2):对于左侧为多属性的函数依赖集求所有候选码 ①:F={A →B,BC →D,DE →A} ②:令G=F- -
关系模式的码与范式
2022-04-12 11:35:28定义2:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码,也称外码。 注意:U是完全函数依赖于K,而不是部分函数依赖于K 一般地,如果U函数依赖于K,即K->U,则K称为超码。...定义1:设K为R<U,F>中的属性或属性组合,若U对K完全函数依赖,则K为R的候选码。
定义2:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码,也称外码。
注意:U是完全函数依赖于K,而不是部分函数依赖于K
一般地,如果U函数依赖于K,即K->U,则K称为超码。候选码是一类特殊的超码,即候选码的超集一定是超码,候选码的任何真子集一定不是超码。
若候选码多于一个,则选定其中的一个为主码。包含在任何一个候选码中的属性称为主属性;不包含在任何候选码中的属性称为非主属性或非码属性。最简单的情况,单个属性是码;最极端的情况,整个属性组是码,称为全码。
定义3:关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式,满足最低要求的叫第一范式,简称1NF。
定义4:若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则称R∈2NF。
所有单关键字的数据库表都符合2NF,因为不可能存在组合关键字,也就不可能存在非主属性部分依赖于主关键字。
例如:S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中Sloc为学生的住处,并且每个系的学生住在同一个地方。
S-L-C的码为(Sno,Cno),则函数依赖有:
(Sno,Cno)->Grade (完全依赖)
Sno->Sdept ,(Sno,Cno)->Sdept(部分依赖)
Sno->Sloc ,(Sno,Cno)->Sloc(部分依赖)
Sdept->Sloc
由于非主属性Sdept,Sloc并不完全函数依赖于码,因此不符合2NF
一个关系模式R不属于2NF,就会产生以下几个问题:
1.插入异常 2.删除异常 3.修改复杂
定义3:设关系模式R<U,F>∈1NF,若R中不存在这样的码X,属性组Y及非主属性Z(Z不属于Y)使得X->Y,Y->Z成立,X不依赖于Y,则称R<U,F>∈3NF。
由定义可知,若R∈3NF,则每个非主属性既不传递依赖于码,也不部分依赖于码。也就是说,可以证明如果R∈3NF,则必属于2NF
例如:SC(Sno,Cno,Grade) S-L(Sno,Sdept,Sloc),关系模式SC没有传递依赖,而S-L存在非主属性对码的传递依赖。
在S-L中,由Sno->Sdept,Sdept->Sloc,可得Sno->Sloc(传递),因此S-L不属于3NF,SC∈3NF
一个关系模式R若不是3NF,就会产生2NF类似问题。
定义4:关系模式R<U,F>∈1NF,若X->Y且Y不属于X时,X必含有码,则R<U,F>∈BCNF。
也就是说,关系模式R<U,F>中,若每一个决定因素都包含码,则R<U,F>∈BCNF。
一个满足BCNF的关系模式有:
(1)所有非主属性对每一个码都是完全函数依赖。
(2)所有主属性对每一个不包含它的码也是完全函数依赖。
(3)没有任何属性完全函数依赖于非码的任何一组属性。
由于R∈BCNF,按定义排除了任何属性对码的传递依赖与部分依赖,所以R∈3NF。但是若R∈3NF,R未必属于BCNF。
3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度。一个模式中的关系模式如果都能属于BCNF,那么在函数依赖范畴内它已经实现了彻底的分离,已消除插入和删除异常。
-
关系模式中候选码的求解 (2002年)
2021-05-24 21:14:21关系数据库模型的应用十分广泛,其候选码的求解已被证明是一个NP完全问题,从闭包的角度讨论了如何求解候选码,并对其求解过程进行了一定程度的优化.最后提出了一些比较合理的建议 -
关系模式和范式判断、候选码主码(笔记)
2019-05-27 18:32:39第一范式是关系模式的基本要求。 第二范式(2NF):在满足第一范式的前提下,非主属性非部分依赖于主关键字。要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。 第三范式...相关概念:
非主属性:不包含在任何一个候选码中的属性。
第一范式(1NF):无重复的列。第一范式是关系模式的基本要求。
第二范式(2NF):在满足第一范式的前提下,非主属性非部分依赖于主关键字。要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。
第三范式(3NF):在满足第二范式的基础上,要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,即:属性不依赖于其它非主属性。 不存在非关键字的传递关系。例如1:假定选课关系表为SelectCourse(学号,姓名,年龄,课程名称,成绩,学分),关键字为组合关键字(学号,课程名称),因为存在如下决定关系:
(学号,课程名称) → (姓名,年龄,成绩,学分)
这个数据库表不满足第二范式,因为存在如下决定关系:
(课程名称) → (学分)
(学号) → (姓名,年龄)
即存在组合关键字中的字段决定非关键字的情况。例如2:假定学生关系表为Student(学号,姓名,年龄,所在学院,学院地点,学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号) → (姓名,年龄,所在学院,学院地点,学院电话)
这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:
(学号) → (所在学院) → (学院地点,学院电话)
即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。附:主键和外键
1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
候选码(Candidate Key)或候选键
如果在一个关系中,存在多个属性(或属性组合)都能用来惟一标识该关系的元组,这些属性
(或属性组合)都称为该关系的候选码或候选键。
例如,在学生登记表关系中,如果姓名不允许重名时,学号和姓名都是候选码。
主码(Primary Key)或主键
在一个关系的若干个候选码中指定一个用来惟一标识该关系的候选码称为该关系的主码或主
键。
例如,在学生登记表关系中,学号一般都是惟一的,如果姓名不允许重名时,存在两个候选
码:学号和姓名,若选中学号作为惟一标识,那么,学号就是学生登记表关系的主码或主键。 -
如何求关系模式的候选码
2020-06-27 19:44:47对于给定的关系模式R(A,A1,A2,…,An)和函数依赖集F,可以把属性分为以下四类 L类:仅出现在F中的函数依赖左边的左部属性 R类:仅出现在F的函数依赖右边右部属性 N类:在F的函数依赖左右边均未出现的属性 LR类...对于给定的关系模式R(A,A1,A2,…,An)和函数依赖集F,可以把属性分为以下四类
- L类:仅出现在F中的函数依赖左边的左部属性
- R类:仅出现在F的函数依赖右边右部属性
- N类:在F的函数依赖左右边均未出现的属性
- LR类:在F的函数依赖左右两边均出现的属性
对于给定的关系模式R及其函数依赖集F,有以下结论
- 若X(X ∈ R)是L类属性,则X必为R的任一候选码的成员
- 若X(X ∈ R)是L类属性,且X+包含了R的全部属性,则X必为R的唯一候选码
- 若X(X ∈ R)是R类属性,则X不在任何候选码中
- 若X(X ∈ R)是N类属性,则X必为R的任一候选码成员
- 若X(X ∈ R)是R的N类和L类属性组成的属性集,且X+包含了R的全部属性,则X是R的唯一候选码
- 若X(X ∈ R)是LR类属性属性,则X可能为R的任一候选码的成员,也可能不为R的任一候选码成员
上面的内容过了一遍后,我们来用例子讲解
关系模式R(A,B,C,D,E),函数依赖F(A→D,E→D,D→B,BC→D,CD→A),求R的候选码
- 首先把属性分类
由函数依赖F知: L类的属性有C、E; R类的属性没有; N类的属性没有; LR类的属性有:A、B、D。
- 设X代表L、N类属性,Y代表LR类属性
令{C,E} ∈ X,{A、B、D} ∈ Y
- 求X+
因为C→∅,所以C+ = ∅
因为E → D,所以E+ = {DE};又因为D→B,所以 E+ = {BDE}
因为E → D,所以(CE)+= {CDE};又因为D→B,所以 (CE)+ = {BCDE};又因为CD → A,所以(CE)+ = {ABCDE}
故CE为R的唯一候选码
注意:如果X+中没有R的全部属性,即从Y中拿出一个属性来和X中的属性组合
假设上面X+中没有R的全部属性,即从Y中拿出属性A
因为C→∅,所以(AC)+ = ∅,所以AC不是R的候选码
因为E → D,所以(AE)+ = {ADE};又因为D→B,所以 (AE)+ = {ABDE},所以AE不是R的候选码
然后求(ACE)+,如果ACE不是候选码,就重新从Y中选择一个属性组成BC、BE、BCE,依次类推如果拿Y中的一个属性求不出候选码,就拿Y中的两个属性组合求
关系模式R(A,B,C,D,E,F),其函数依赖集F={AB→E,AC→F,AD→B,B→C,C→D}
- L类属性:A
- R类属性:E、F
- LR类属性:B、C、D
- 令L类属性的元素为X,LR类的为Y
- X+ = A(A+ = A)
- 从Y中取出一个元素B,与X结合得,(AB)+ = ABCDEF
- 从Y中取出一个元素C,与X结合得,(AC)+ = ABCDEF
- 从Y中取出一个元素D,与X结合得,(AD)+ = ABCDEF
故关系模式的候选码有:AB、AC、AD
注:A单独推导不出其它元素,因为函数依赖集中,没有A → ?,只有
A?→ 元素
哦对了,关系模式R的候选码可以多个
欢迎大家关注下个人的「公众号」:独醉贪欢
后台回复「无脑死磕数据库原理」即可获得练习题 -
[转载]数据库的关系模型、关系模式、主码。。。。
2021-04-21 05:45:002.关系模式:关系模式实际上就是记录类型。它包括:模式名,属性名,值 ...1.关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。关系模型是由若干个关系模式组成的集合。2.关系... -
关系模式的候选码
2020-07-04 09:59:35若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。 若W是候选键,则必须满足两个条件:W的闭包是U;W没有冗余。 求候选码的简单方法: (1)不在函数依赖集中出现的属性,必包含在候选码中; ... -
数据库原理:如何求一个关系模式的候选码
2021-12-02 10:04:17设关系模式R中U=ABC.......等N个属性,U中的属性在FD中有四种范围: 求候选码的简单方法方法: (1)如果有属性不在函数依赖集中出现,那么它必须包含在候选码中; (2)如果有属性不在函数依赖集中任何函数依赖的... -
如何求关系模式的码
2018-03-13 15:43:32关系模式的码按照算法来说的话非常麻烦,我个人以为可以求出L型之后把LR型挨个试一遍。L型,R型,LR型根据属性出现的左右来区分。L型是属性只在左部出现。R型是属性只在右部出现。LR型是属性在两侧都出现。码的定义... -
如何求一个关系模式的候选码
2020-12-17 17:40:23设关系模式R中U=ABC.......等N个属性,U中的属性在FD中有四种范围: 求候选码的简单方法方法: (1)如果有属性不在函数依赖集中出现,那么它必须包含在候选码中; (2)如果有属性不在函数依赖集中任何函数依赖... -
浅析如何求解关系模式的候选码
2020-05-18 12:40:14摘要:本篇文章讲解的内容是“浅析如何求解关系模式的候选码”。在做多属性函数依赖集候选码求解题目时,有些同学还是会不知所措,最主要原因是没有理解他们之间求解的思路和算法。本文通过理论分析和例题来浅析这块... -
求解数据库关系模式的候选码
2020-05-03 10:54:02已知关系模式和函数依赖求候选码的步骤: 只在右边出现的属性,不属于候选码; 只在左边出现的属性,一定存在于某候选码当中; 左右都不出现的属性一定存在于任何候选码当中; 左右都出现的属性逐个与2,3的属性组合,求... -
求关系模式的候选码
2020-03-06 22:20:47(1)如果属性只在函数依赖集的左边出现,则该属性一定包含在候选码中。 (2)如果属性没有在属性依赖集中出现,则该属性一定包含在候选码中。 (3)如果属性只在函数依赖集右边出现,那么它必不包含在候选码中; ... -
关系模式候选码
2019-02-20 13:59:02已知关系模式和函数依赖求候选码的步骤: 只在右边出现的属性,不属于候选码; 只在左边出现的属性,一定存在于某候选码当中; 左右都不出现的属性一定存在于任何候选码当中; 左右都出现的属性逐个与2,3的属性组合,... -
数据库系统原理课件:作业讲评 计算关系模式的码.ppt
2021-09-21 20:46:41数据库系统原理课件:作业讲评 计算关系模式的码.ppt -
关系,属性,域,元组,码,分量,关系模式
2022-01-15 18:05:27试述关系模型的概念,定义并解释以下术语:关系,属性,域,元组,码,分量,关系模式。 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。在用户观点下,关系模型中数据的逻辑结构是一张二维表,... -
关系模式码,域,元组,主属性,外码,超码,范式等基础概念知识详解,考试不挂科必备,简洁明了
2021-12-04 16:49:39属性:实体所具有的某一特性,例如学生的姓名,学号等 码/键:能唯一标识实体的属性或属性集,即其闭包包含R的所有属性,其包括主码,候选码,超码 ...候选码不能包括候选码,即一个关系R模式(A,B,C,D)中... -
第六章——>如何求关系模式候选码、判断关系模式属于第几范式、求最小覆盖集Fm
2020-04-20 16:29:431:求关系模式候选码的方法 设关系模式R中的属性集U=ABC…,有N个属性,判断U中属性在FD中出现的位置 (1)左右出现; (2)只在左部出现; (3)只在右部出现; (4)不出现; 方法:按以下几步来求候选键 1.只在FD右部出现的属性... -
null关系数据库模式中候选码的求解算法.doc
2022-05-08 17:23:31null关系数据库模式中候选码的求解算法.doc -
数据库函数依赖关系模式范式候选键主键码学习教案.ppt
2022-01-10 22:52:42数据库函数依赖关系模式范式候选键主键码学习教案.ppt -
数据库函数依赖关系模式范式候选键主键码PPT学习教案.pptx
2021-10-03 08:47:34数据库函数依赖关系模式范式候选键主键码PPT学习教案.pptx -
ER图转换关系模式
2021-01-14 03:31:27例如在我们的例子中,学生实体可以转换为如下关系模式,其中学号为学生关系的码:学生(学号,姓名,出生日期,所在系,年级,平均成绩) 同样,性别、宿舍、班级、档案材料、教师、课程、教室、教科书都分别转换为一... -
求解关系模式的候选码——数据库原理
2019-11-25 20:50:12设关系模式R中U=ABC.......等N个属性,U中的属性在FD中有四种范围: 求候选码的简单方法方法: (1)如果有属性不在函数依赖集中出现,那么它必须包含在候选码中; (2)如果有属性不在函数依赖集中任何函数依赖的... -
一道关系模式的练习题(求候选码,最小依赖集,模式分解)
2019-03-13 02:17:26跨考复试准备中,一道关系模式的练习题,个人积累 例:已知关系模式R(U,F),其中U={A,B,C,D,E,G}, F={BE→G,BD→G,CD→A,CE→G,CDE→AB,BC→A,B→D} 求(1)F的最小函数依赖集: ①右边单一化 F1={BE→G,BD... -
求解关系模式R的候选码
2020-03-31 19:42:36设有关系模式R(U,F),其中U={A,B,C,D,E},函数依赖集F={ A→BC,CD→E,B→D,E→A},求出R的所有候选码。 通过分析F发现,其所有的属性A、B、C、D、E都是LR类属性,没有L类、R类、N类属性。 (一)先从这些...