b站速成课指路 【数据库系统概论】三小时复习期末速成不挂科


关系规范化

范式定义

1NF

第一范式:所有属性都不可再分

2NF

第二范式:R属于第一范式且每一个非主属性完全函数依赖于任何一个候选码

3NF

第三范式:非主属性既不传递依赖于码,也不部分依赖于码

BCNF

BC范式:每一个决定因素都包含码


无损连接

判断方法一

若关系模式$R(U,F)$中,被分解为$p={R1, R2}$是$R$的一个分解,若$R_1∩R_2 → R_1 - R_2$或者$R_1∩R_2 → R_2 - R_1$,则为无损连接

例题

image-20221102221308421

$R_1∩R_2 = Y,,R_1-R_2=UV$

$Y→U, U→V$ 可以得出 $Y→UV$

故,分解p为无损连接

判断方法二

这个方法太麻烦了,期末速成的那个视频里讲解的很清楚,这里不赘述了。(大概不会考的吧……)


计算候选键

方法

image-20221102153633927

image-20221102153707244

例题

image-20221102153747768


求最小依赖集

感觉结合例题看会更清晰一点,所以直接上例题。

例题及解题方法

$U = (A,B,C,D,E,G),F = {BG→C, BD→E, DG→C, ADG→BC, AG→B, B→D},求最小依赖集$

① 拆分右侧

$F_1 = {BG→C, BD→E, DG→C, ADG→B, ADG→C, AG→B, B→D}$


② 去除自身求闭包(化简右侧)

如果闭包中包含待推导的属性,则该函数冗余,可删去

$BG→C, BG^+={B,G,C,D,E}$,故删去$BG→C$

$BD→E, BD^+={B,D}$

$DG→C, DG^+={D,G}$

$ADG→B, ADG^+={A,D,G,C,B,D,E}$,故删去$ADG→B$

$ADG→D, ADG^+={A,D,G,C,B,D,E}$,故删去$ADG→B$

$AG→B, AG^+={A,G}$

$B→D, B^+={B}$


$F_2 = {BD→E,DG→C,AG→B,B→D}$


③ 左侧最小化(化简左侧)

假设某函数中某个属性冗余,求出其他属性闭包,如果包含此属性则该属性冗余,删去

$B→E$,假设D冗余,$B^+={B,D}$ 包含$D$,故D冗余删去

以此类推,能得出最终结果

$F_c = {B→E,DG→C,AG→B,B→D}$


模式分解

3NF分解

① 计算候选键

② 求最小依赖集

③在最小依赖集基础上划分关系(合并相同属性导出的,添加未出现的属性,如果候选码未包含在内则添加候选码集合)

如(摘自b站一位小姐姐的笔记)

image-20221102163423008


BCNF分解

安利一个很好理解的网课 数据库原理关系模式相关例题记录-BCNF

方法

①计算关系中属性的闭包,如果该闭包中不包含关系的所有属性,且为非平凡的函数依赖,则需要拆解

②非平凡的函数依赖$A→B$,则将关系$R$变为$R-B$,并构造一个新的关系模式$A∪B$

例题

image-20221102213745295

image-20221102214902632

例题二很神奇,要注意$R2$的时候已经没有$C$了,要进行对应属性的转换。


关系代数

安利网课 数据库 关系代数

传统的集合运算

笛卡尔积、交、并、差

专门的关系运算

选择、投影、连接、除

重点应该就是选择、投影、自然连接

例题

image-20221103143022149

image-20221103143038333

答案:就是题目会很复杂,慢慢绕一定可以绕出来

image-20221103143105152


sql

真不知道怎么复习这块,没学也不会。不知道能不能靠做题苟过去。

做题练习网站 sqlbolt

对table的创建、修改、删除

create
create table r1
	(A D1,
     B D2,
     C D3,
     primary key (A),//主码
     unique (C),//候选码
     foreign key (B) references r2);//外码

sql基本类型

image-20221103224403346

image-20221103224441389

完整性约束

not null - 禁止在该属性上插入空值

unique - 可以用unique($A_1,A_2,…$)产生候选码

check - 限制属性域

参照完整性 - 外码约束

delete
delete from r
where ...
drop
drop table r; //从数据库中删除关于r的所有信息
alter
alter table r add A D;
alter table r drop A; 
insert
insert into r
	values(...)
insert into r
select ...
from ...
where ...

select

select
from
where

update

update r
set A = ...
where ...
update r
set A = case
	when pred1 then result1
	when pred2 then result2
	...
	else result0
end
update r
set A =(
	select ...
	from ...
	where ...
	);

更名

old-name as new-name

like

%

匹配任意子串

image-20221103145527387

_

匹配任意字符

image-20221103145541324

order by

排列元组的显示次序。

asc 升序, desc 降序。

order by A desc, B asc;

limit 和 offset

SELECT *
FROM Movies 
ORDER BY Title ASC
LIMIT 5 OFFSET 5;

表示将Movies表中所有电影按照Title升序排序,并取出第6-10部电影的信息。

join

natural join
outer join

聚集函数

avg / min / max / sum / count
group by
having

分组后才起作用。


E-R模型

画E-R图

自求多福。

E-R图转换为关系模型

① 实体名字转换为各个关系模式的名字

② 实体的属性就是关系的属性,实体的码就是关系的码

③ 实体间联系的转换

一对一联系:在任意一方加入对方的主码并设为外码,并加入联系本身的属性

一对多联系:将少的那方的主码加入多的那方作为外码,并同时将联系的属性加入多的那方

多对多联系:将联系本身转换为一个关系模式,将联系双方的主码加入其中设为码,并将联系的属性也加入其中

联系举例(方便理解)

一对一联系:一个经理只管理一个商店,一个商店只能有一个经理

一对多联系:一个画家可以绘制多幅作品,一幅作品只能由一个画家完成

多对多联系:一位学生可以选修多门课程,一门课程可以被多个人选修

联系基数

完全参与联系(E-R图中双线表示):该端实例至少只有1个参与到联系中,最小基数为1

部分参与联系(E-R图中单线表示):该端实例可以不参与联系,最小基数为0