关于计算机研究生复试的数据库相关问题(笔试)

系统概念相关

数据视图
数据抽象: 物理层–>逻辑层–>视图层
实例和模式:物理模式–>逻辑模式–>子模式
数据集合是实例(Instance), 数据库总体设计为数据库模式(Schema)
数据模型: 关系模型 实体-联系模型(E-R) 基于对象的模型 半结构化数据模型

关系运算

域:关系中的某属性允许取值的集合
:整个关系中区分不同元组的一种性质
超码 super key:一个或多个属性的集合,唯一标识一个元组,允许有多余的属性
候选码 candidate key:允许最少必要属性的超码即候选码比如{ID}{name,seat}是两个候选码
主码 primary key:设计者在一个关系内的候选码中选择的区分元组的属性组合
主码选择原则:选择那些值从不改变或极少改变的候选码作primary key
外码 foreign key:一个关系内的某属性是另一个关系的主码

关系代数

  • 选择元组/属性 σ
  • 投影 π
  • 自然连接 ∞
  • 笛卡尔积 X
  • 集合运算 交 并

自然连接举例

A B C D B E
1 a 3 2 c 7
2 b 6 3 d 5
3 c 7 1 a 3
* 计算笛卡尔积
* 选出左B=右B的元组,不等的不算,忽略掉
* 合并该元组,成为新元组 A B C D E ,成为新元组的只有两组
1 a 3 1 3
3 c 7 2 7
## SQL相关
自然连接 nature join 和join using(某个属性)
并运算:union 自动去重 union all 可以保留重复
交运算:intersect 自动去重 intersect all 可保留重复
差运算:except 自动去重 except all 可保留重复

聚集函数:sum, min , max , count , avg
分组聚集: group by中没有出现的属性,只要是出现在select中,必须在聚集函数内部的形式出现,比如b,c没出现在group by 内部,用例:

1
select a,avg(b),sum(c) from table1 group by a;

集合成员资格:in ,not in
集合比较:some运算,用例

1
2
3
4
5
6
select ID from instructor 
where salary >some (select salary from instructor
where department = 'bio');
等价于
select distinct T.ID from instructor as T,instructor as S
where S.department ='bio' and T.salary >S.salary;

空关系测试:exists, not exists,测试子查询结果中是否存在元组,用例:

1
2
3
4
5
6
7
DSC黑书第六版中的,“找出选修了bio系开设的所有课程的学生”(表在官网
select S.ID,S.name from student as S
where not exists( (select course_id from course
where dep_name = 'bio')//找出bio系开设的所有课程
except
(select T.course_id from takes as T
where S.ID = T.ID) );//找出S.ID选修的所有课程

重复元组存在性测试:unique,测试子查询返回集合是否有重复元组,无则返回true;not unique则相反

1
2
3
4
DSC黑书第六版中的,“找出所有在2019年最多开设一次的课程”
select C.course_id from course as C
where unique (select S.course_id from section as S
where C.course_id =S.course_id and S.year =2019);

标量子查询:子查询只返回包括【单个属性】的【单个元组】,只可以出现在select where having三种子句中

关系代数