文章目录
一、基础知识点
有些基础概念是苦涩难懂的,但是你要尽量耐下心来过一遍,了解其中的含义,再结合相关练习题进行理解。
1. 关系模式定义
2. 第一范式
3. 数据库设计原则
- 规范化
4. 逻辑设计问题⭐
5. 关系模式中存在的问题
-
数据冗余大
-
更新异常
-
插入异常
-
删除异常
- 结论
6. 规范性设计
7. 数据依赖
- 函数依赖分类
- 函数依赖
- 平凡/非平凡函数依赖
- 完全/部分函数依赖
- 传递函数依赖
- 多值依赖
- 连接依赖
-
函数依赖
在学生表(学号,姓名,年级)中,(学号,姓名)可以推出学号和姓名其中的任何一个,这就是平凡函数依赖。直白点说,就是只要Y是X的子集,Y就依赖于X。
在学生表(学号,姓名,年级)中,通过(学号,姓名)可以推出这个学生所在的年级,但年级不是(学号,姓名)的子集,这是非平凡函数依赖.((学号,姓名)就是一个x,学号或者姓名就是一个x’)。
8. 键的定义
-
候选键
-
主键
-
外键
9. 范式
⭐⭐⭐
-
第一范式(1NF)
-
第二范式(2NF)
因为本例{S#,C#}中的S#也可以决定SD,Sloc,Sloc,故{SD,Sloc}是部分依赖于{S#,C#}
-
第三范式(3NF)
-
BCNF
- 小结
二、习题巩固
- 将非1NF转换为1NF
- 请简述满足1NF,2NF和3NF的基本条件。并完成下题:某信息一览表如下,其是否满足3NF,若不满足请将其化为符合3NF的关系。
第一范式的关系应满足的基本条件是元组中的每一个分量都必须是不可分割的数据项。
第二范式,指的是这种关系不仅满足第一范式,而且所有非主属性完全依赖于其主码。
第三范式,指的是这种关系不仅满足第二范式,而且它的任何一个非主属性都不传递依赖于任何主关键字。
- 在关系模式R(A,B,C,D)中存在函数依赖集合FD={D->A, BC->D}
- 指出该关系模式的码、主属性、非主属性。
- 该关系模式属于几范式?
- 将该关系模式规范化为BCNF范式。
- 参考答案
- 主码:BC
主属性:B,C
非主属性:D,A- 二范式【在该题中存在函数的传递依赖,故不可能属于第三范式,第二范式:每一个非主属性都完全函数依赖于R的码】
- R1(
B
,C
,D)
R2(D
,A)
- 关系模式R(A,B,C,D)中,存在函数依赖关系{A→B,A→C,A→D,(B,C)→A},则侯选码是 A和(B,C) ,R∈ 2 NF
- 设有关系R和函数依赖F: R(A,B,C,D,E),F = { ABC→DE,BC→D,D→E }。
试求下列问题:
(1)关系R的侯选码是什么?R属于第几范式?并说明理由。
(2)如果关系R不属于BCNF,请将关系R逐步分解为BCNF。
- 参考答案
(1)关系R的候选码是(A,B,C),R∈1NF,因为R中存在非主属性D,E对候选码(A,B,C)的部分函数依赖。【2NF:每一个非主属性都完全函数依赖于R的码】
(2)首先消除部分函数依赖:
将关系分解为:
R1(A
,B
,C
) (A,B,C)为候选码,R1中不存在非平凡的函数依赖
R2(B
,C
,D,E),(B,C)为候选码,R2的函数依赖集为:F2={(B,C)→D,D→E}
在关系R2中存在非主属性E对候选码(B,C)的传递函数依赖,所以将R2进一步分解:
R21(B
,C
,D) ,(B,C)为候选码,R21的函数依赖集为:F21 = { (B,C)→D }
R22(D
,E) ,D为候选码,R22的函数依赖集为:F22 = { D→E }
在R1中已不存在非平凡的函数依赖,在R21、R22关系模式中函数依赖的决定因素均为候选码,所以上述三个关系模式均是BCNF。
-
关系规范化中的删除异常是指(不该删除的数据被删除)
-
在关系A(S,SN,D)和B(D,CN,NM)中,A的主码是S,B的主码是D,则D在A中称为 外码
-
数据库系统中最重要的软件是 数据库管理系统(或DBMS) ,最重要的用户是 数据库管理员(或DBA)
-
数据库设计分为以下六个设计阶段:需求分析阶段、 概念结构设计阶段 、逻辑结构设计阶段、 物理结构设计阶段 、数据库实施阶段、数据库运行和维护阶段。
-
已知关系R(A,B,C,D)和R上的函数依赖集F={A→CD,C→B},则
R∈ 2 NF。 -
设有关系STUDENT(S#,SNAME,SDEPT,MNAME,CNAME,GRADE),(S#,CNAME)为候选码,设关系中有如下函数依赖:
(S#,CNAME)→SNAME,SDEPT,MNAME
S#→SNAME,SDEPT,MNAME
(S#,CNAME)→GRADE
SDEPT→MNAME
试求下列问题:
(1) 关系STUDENT属于第几范式?并说明理由。
(2) 如果关系STUDENT不属于BCNF,请将关系STUDENT逐步分解为BCNF。
- 参考答案
(1)关系STUDENT是1NF,因为F中存在非主属性SNAME,SDEPT,MNAME对侯选(S#,CNAME)的部分函数依赖。【(S#,CNAME)→SNAME,SDEPT,MNAME;S#→SNAME,SDEPT,MNAME】
(2)①首先消除部分函数依赖(S#,CNAME)→SNAME,SDEPT,MNAME将关系分解为: R1(S#
,SNAME,SDEPT,MNAME),S#为候选码
R1的函数依赖集为:F1 = { S#→SNAME,SDEPT,MNAME,SDEPT→MNAME}
R2(S#
,CNAME,GRADE),S#为候选码,
R2的函数依赖集为:F2={(S#,CNAME)→GRADE}
②在关系R1中存在非主属性MNAME对候选码S#的传递函数依赖S#→MNAME,所以将R1进一步分解:
R11(S#
,SNAME,SDEPT) ,S#为候选码,
R11的函数依赖集为:F11 = { S#→SNAME,SDEPT}
R12(SDEPT
,MNAME) ,SDEPT为候选码,
R12的函数依赖集为:F12 = { SDEPT→MNAME}
在R2、R11、R12关系模式中函数依赖都是非平凡的,并且决定因素均是候选码,所以上述三个关系模式均是BCNF。
最终分解:
R11(S#
,SNAME,SDEPT)
R12(SDEPT
,MNAME)
R2(S#
,CNAME,GRADE)
-
在关系A(S,SN,D)和B(D,CN,NM)中,A的主码是S,B的主码是D,则D在S中称为 外码 。
-
已知关系R(A,B,C,D)和R上的函数依赖集F={A→CD,C→B},R属于第 2 范式。
-
设有关系R和函数依赖F: R(W,X,Y,Z),F = { X→Z,WX→Y }。试求下列问题:
(1)关系R属于第几范式?
(2)如果关系R不属于BCNF,请将关系R逐步分解为BCNF。
- 参考答案
(1)R是1NF。侯选码为WX,则Y,Z为非主属性,又由于X→Z,因此F 中存在非主属性对侯选码的部分函数依赖。
(2)R1(W
,X
,Y),F1 = { WX→Y }
R2(X
,Z),F2 = { X→Z }
消除了非主属性对码的部分函数依赖。
F1和F2中的函数依赖都是非平凡的,并且决定因素是候选码,所以上述关系模式是BCNF。