数据库期末复习:SQL语句范式的定义和判断ER图转关系模式
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库期末复习:SQL语句范式的定义和判断ER图转关系模式相关的知识,希望对你有一定的参考价值。
文章目录
SQL语句
查询select
学生表s,课程表c,学生选课表sc。
查询被学生(学号为A)选修的课程有几个?
select count(cno) from sc
where sno='A'
查询年龄在18-19之间的学生信息。
select * from s
where sage between 18 and 19
查询姓刘的同学的信息。
select * from s
where sname like '刘%'
如果名字是两个字且姓刘,则为’刘_'。
查询没有先修课的课程信息。
select * from c
where cpno is null
求各门课学生的平均成绩,显示课程号及相应的平均成绩
select cno,avg(grade) from sc
group by cno
查询有2个以上学生选修的课程的课程号。
select cno from sc
group by cno
having count(sno)>2
group by了就不能where 要having
查询学生选修课程的情况要求,显示学生名、课程名、成绩(三表查询)。
select sname,cname,grade from s,c,sc
where s.sno=sc.sno and c.cno=sc.cno
查询选修了全部课程的学生姓名
select sname from s//这里是全选课的
where not exists
(
//这里是没选课的
select * from c
where not exists
(
//这里是选了课的
select * from sc
where s.sno=sc.sno and c.cno=sc.cno
)
)
其他
创建表dept_age,包含2个字段:系别和平均年龄。按系分组求平均年龄,再把系名和平均年龄存入新表中。
create table dept_age
(
dept char(20) primary key,/*是主码*/
avg-age smallint
)
如果是外码,参照的是A表中的dept,则要这样:dept char(20) references A(dept)
删除S表。
drop table s
将女生的年龄减去1岁。
update sage /*表名*/
set sage=sage-1 /*对属性sage的操作*/
where ssex='女'
将信息科学系的全体学生成绩设为100分。
update sc
set grade=100
where sno in
(
select sno from s
where dept='信息科学'
)
删除200215121学生的选课信息。
delete from sc
where sno='200215121'
将成绩表中计算机科学系的学生信息删除。
delete from sc
where sno in
(
select sno from s
where dept='计算机科学'
)
建立视图view grade,内容为:学生姓名、课程名、成绩。
create view as select
sname,cname,grade
from s,c,sc
where s.sno=sc.sno and c.cno=sc.cno
范式的定义和判断
步骤:
- 求闭包(左边元素的组合)
- 候选码:当上一步的左边元素的组合的闭包可以推出所有元素的时候,它就是候选码
- 主属性:组成候选码的属性就是主属性
- 非主属性:不是主属性的就是非主属性
- 判断是哪个范式:NF,2NF,3NF,BCNF
NF:每个元素不可分割。
如:学生(姓名,性别,家庭成员)——其中姓名和性别是不可分割的(如性别:要么男要么女),但家庭成员是多个元素的mixed(爸妈姐妹兄弟),所以“学生”不是NF。
1NF VS 2NF——2NF:不存在非主属性对候选码的部分依赖。
翻译:在候选码中选出一部分,它可以推出非主属性。
如:
有候选码BC,非主属性D。若有B->D或C->D,则这就是“非主属性对候选码的部分依赖”,所以它不满足2NF,只会是NF。
2NF VS 3NF——3NF:不存在非主属性对候选码的传递依赖。
如:
有候选码AB,且AB->C,C->D,那么其实AB->D,即D传递依赖于候选码AB,则它不满足3NF,最多是2NF。
3NF VS BCNF——BCNF:不存在主属性对候选码的部分依赖和传递依赖
一些例题
例题1:
R(A,B,C),F=AB->C。
解:
候选码:AB。
主属性:A、B。
非主属性:C。
是NF,2NF(不存在A->C或B->C),3NF(不存在非主属性对候选码的传递依赖),BCNF(不存在主属性对候选码的部分依赖或传递依赖)。
所以是一个BCNF。
例题2:
R(A,B,C),F=B->C,AC->B。
解:
候选码:AB、AC。
主属性:A、B、C
非主属性:无。(所以它最少就是一个3NF)
对于B->C,C是主属性,B是候选码的一部分,存在主属性对候选码的部分依赖,因此不是BCNF。
所以是一个3NF。
例题3:
R(A,B,C),F=B->C,B->A,A->BC。
候选码:A、B
主属性:A、B
非主属性:C
对于B->C,这是直接依赖(因为候选码是B,若候选码是BD,则B是BD的一部分,那就是部分依赖了),所以是2NF。
不存在非主属性对候选码的传递依赖,是3NF。
不存在主属性对候选码的部分/传递依赖,是BCNF。
所以是BCNF。
注意:
A->B->A不是传递依赖。
若要有部分依赖,则候选码不能是单元的。(此题候选码就是单元的)
例题4:
R(A,B,C),F=A->C,A->B。
解:
候选码:A。
主属性:A。
非主属性:B、C。
答:BCNF。
小技巧:
当一个关系是二元关系组时,则它就是一个BCNF。
对于此题,F=A->C,A->B可以合成为A->BC,这就是一个二元关系组。
例题5:
R(A,B,C,D),F=A->C,AD->B。
解:
候选码:AD
主属性:A、D
非主属性:B、C
对于A->C,是非主属性对候选码的部分依赖,故不符合2NF。
是NF。
例题6:
R(A,B,C),F=A->C,BC->D。
解:
如何求候选码可以看这里:第一步,左边元素的组合
候选码:AB
主属性:A、B
非主属性:C、D
对于A->C,是非主属性对候选码的部分依赖,则不满足2NF,则是NF。
ER图转关系模式
下划线(直线)是主码,波浪线是外码。
有1:1、1:n、n:m三种对应关系。
1:1
任选一个属性添加另一个的主码即可。
1:n
在n端加上1端的主码——这是n端的外码。
若关系(三角形)上也有属性,则把它加到n端的属性上。
n:m
关系转换成一个实体,其中的属性是两端的主码,他们共同是这个实体的主码。画下划线+波浪线。
视频中的例题:
关系模式:
下面截图的理论和例题来自:浅析如何把ER模型转换为关系模式
理论:
例题:
解:
参考资料
查询语句例题
其他语句例题
范式的定义和判断
ER图转关系模式
数据库系统原理------ER图转化成关系模式
以上是关于数据库期末复习:SQL语句范式的定义和判断ER图转关系模式的主要内容,如果未能解决你的问题,请参考以下文章
mysql期末数据库复习指南(《数据库系统概率》知识点总结,数据库系统原理,数据库设计课程复习)