目录
推荐阅读:
考点1:ER模型
ER模型的基本概念以及如何绘制ER图
ER模型
- 一对一联系(1:1):对于实体集 A 中的每个实体最多只能与实体集 B 中一个实体相关联。那么 A 与 B 就是一对一关联,记作1:1。
- 一对多联系(1:N):对于实体集 A 中的每个实体与实体集 B 中任意个(零个或多个)实体相关联,并且实体集 B 中最多只能与实体集 A 中一个实体关联,那么 A 与 B 就是一对多关联,记作1:N。
- 多对多联系(N:M):如果实体集 A 中的每个实体都与实体集 B 中任意个(零个或多个)实体相关联,反之亦然,那么 A 与 B 就是一对多关联,记作N:M。
例题1
E-R模型向关系模型转换时,三个实体之间多对多的联系m:n:p应该转换为一个独立的关系模式,且该关系模式的关键字由____组成。
A.多对多联系的属性
B.三个实体的关键字
C.任意一个实体的关键字
D.任意两个实体的关键字
例题2
在某企业的营销管理系统设计阶段,属性“员工”在考勤管理子系统中被称为“员工”,而在档案管理子系统中被称为“职工”,这类冲突称为_____冲突。
A.语义 B.结构 C.属性 D.命名
例题3
E-R图转换为关系模型时,对于实体E1与E2间的多对多联系,应该将_____。
A.E1的码加上联系上的属性并入E2
B.E1的码加上联系上的属性独立构成一个关系模式
C.E2的码加上联系上的属性独立构成一个关系模式
D.E1与E2码加上联系上的属性独立构成一个关系模式
ER模型转换成关系模式的规则
考点2:键(码)、函数依赖及范式
重点掌握:
- 理解超键、候选键、主键、外键的含义,并掌握如何求解;
- 要求能按题目给出的关系描述,准确写出函数依赖;
- 理解1NF、2NF、3NF的含义,能判别关系模式属于哪一级范式,并能按要求拆分关系模式使之满足更高一级的范式;
- 模式分解部分的,分解的无损连接性,要学会如何无损分解一个关系。
键(码)
超键:在关系模式中,能性标识元组的属性集(超键可以含有多余属性)
候选键(候选码):在关系模式中,能唯一标识元组并且不包含多余属性的属性集
例如:学生(学号,姓名,性别,年龄,专业号)
(学号,姓名)是超键,而不是候选键,(学号)是候选键,同时也是主键。
主键:在一个关系的若干个候选键中随意指定一个作为关键字,则此关键字就是主键
外键:如果关系模式 R1 中的某属性集不是 R1 的候选键,而是关系模式R2的候选键,则这个属性集对模式 R1 而言是外键。
例如:请分别指出关系模式学生(学号,姓名,性别,年龄,专业号)和专业(专业号,专业名)的主键和外键。
学号是主键,专业号是外键。
专业号是主键,它没有外键。
主属性:候选码中的所有属性都称为主属性
非主属性:不包含在任何候选码中的属性称为非主属性
例如:请指出关系模式成绩(学号,姓名,课程号,成绩)的主属性和非主属性,学生之间无同名情况。
(学号,课程号)和(姓名,课程号)都是候选键
学号,姓名,课程号都是主属性
成绩是非主属性
函数依赖&范式
第一范式(1NF):每一列都是不可分割的原子数据项
第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(码)第12章 面向对象技术(在1NF基础上消除非主属性对主码的部分函数依赖)
函数依赖:A ----> B,如果通过 A 属性(属性组)的值,可以确定唯一 B 属性的值,则称 B 依赖于 A。例如:学号 ----> 姓名 。 (学号,课程名称) ----> 分数
完全函数依赖:A ----> B,如果A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性值
例如:(学号,课程名称)----> 分数
部分函数依赖:A ----> B,如果A是一个属性组,则B属性值的确定只需要依赖于A属性组中某一些值即可
例如:(学号,课程名称) ----> 姓名
传递函数依赖:A ----> B,B ----> C,如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值,可以确定唯一C属性的值,则称C传递函数依赖于A
例如:学号 ----> 系名,系名 ----> 系主任
码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码。例如:下表中码为: (学号,课程名称)
主属性:码属性组中的所有属性
非主属性:除了码属性组的属性
第三范式(3NF):在 2NF 基础上,任何非主属性不依赖于其它非主属性(在 2NF 的基础上消除传递依赖)
遵循1NF表:如下表所示
1NF存在的问题:
- 存在非常严重的数据冗余(重复):姓名,系名,系主任
- 数据添加存在问题:添加新开设的第和第主任时,数据不合法
- 数据删除存在问题:将张无忌同学生删除后,会将第的数据一起删除
遵循2NF表:如下所示,解决1NF中的数据冗余问题
遵循3NF表:如下所示,解决1NF中的所有存在问题
考点3:关系代数及元组演算
无损分解
有损:不能还原
无损:可以还原
无损联接分解:所谓无损联接分解是指将一个关系模式分解成若干个关系模式后,通过自然连接和投影等运算仍能还原到原来的关系模式,即这种分解称为无损联接分解。
假设有关系模式成绩(学号,姓名,课程号,课程名,分数)
函数依赖:学号---》姓名,课程号---》课程名,(学号,课程号)---》分数
若将其分解为:
- 成绩(学号,课程号,分数)
- 学生(学号,姓名)
- 课程(课程号,课程名)
这样分解是无损分解。
A | B | C | D | E | |
AD | a1 | b12 | b13 | a4 | b15 |
BC | b21 | a2 | a3 | b24 | b25 |
BE | b31 | a2 | b33 | b34 | a5 |
CDE | b41 | b42 | a3 | a4 | a5 |
AE | a1 | b52 | b53 | b54 | a5 |
初始填表规则:
R1 = AD,所以第1行中,A字段填充a1,D字段填充a4(数字根据列号填)
R2 = BC,所以第2行中,B字段填充a2,C字段填充a3
R3 = BE,所以第3行中,B字段填充a2,E字段填充a5
R4 = CDE,所以第4行中,C字段填充a3,D字段填充a4,E字段填充a5
R5 = AE,所以第5行中,A字段填充a1,E字段填充a5
根据依赖填充规则:
X->Y,则先找X字段相同的行,确定行之后就看Y字段,如果Y字段对象的行存在的a(x),那么就把值填充为a(x),如果不对应a(x),则直译结构下标最小的一个(b(x))
适用范围:只能用于判断一个关系模式分解成两个关系模式的时候是否是无损分解
关系代数基本运算
A | B |
a | 1 |
b | 2 |
c | 3 |
S表如下:
A | B |
b | 2 |
d | 4 |
e | 5 |
并:把两个具有相同属性(列名)的关系(表)合并成一个新的关系,去掉重复的元组(行)。
R ∪ S = {t | t ∈ R 或 t ∈ S}
R ∪ S | |
A | B |
a | 1 |
b | 2 |
c | 3 |
d | 4 |
e | 5 |
交:把两个具有相同属性(列名)的关系(表)中共有的元组(行)选出来,组成一个新的关系。
R ∩ S = {t | t ∈ R 且 t ∈ S}
R ∩ S | |
A | B |
b | 2 |
差:把一个关系(表)中有而另一个关系(表)中没有的元组(行)选出来,组成一个新的关系。
R − S = {t | t ∈ R 且 t ∉ S}
R − S | |
A | B |
a | 1 |
c | 3 |
笛卡尔积:把两个关系(表)中的每个元组(行)都拼接起来,组成一个新的关系。新关系的属性(列名)是两个关系的属性的并集,新关系的元组(行)的个数是两个关系的元组的个数的乘积。
R × S = {t | t = (tR, tS) 且 tR ∈ R 且 tS ∈ S}
R × S | |||
A | B | A | B |
a | 1 | b | 2 |
a | 1 | d | 4 |
a | 1 | e | 5 |
b | 2 | b | 2 |
b | 2 | d | 4 |
b | 2 | e | 5 |
c | 3 | b | 2 |
c | 3 | d | 4 |
c | 3 | e | 5 |
选择:根据一个条件,从一个关系(表)中筛选出满足条件的元组(行),组成一个新的关系。条件可以是一个属性(列)的值与一个常数或另一个属性的值的比较。
= {t | t ∈ R 且 F(t) = True}
,其中 F(t) 是一个条件表达式,如 t[A] > 10 或 t[A] = t[B]。
A | B |
c | 3 |
投影:从一个关系(表)中选出一些属性(列),去掉重复的元组(行),组成一个新的关系。
= {t[A, B] | t ∈ R}
,其中 t[A, B] 表示元组 t 的 A 和 B 属性的值。
B |
1 |
2 |
3 |
连接:根据一个条件,把两个关系(表)中满足条件的元组(行)拼接起来,组成一个新的关系。条件可以是两个关系的某些属性(列)的值的比较。
且 且 且
,其中 F(t) 是一个条件表达式,如 tR[A] = tS[B]。
R表如下:
id | name | age |
1001 | 小明 | 18 |
1002 | 小红 | 16 |
1003 | 小白 | 20 |
S表如下:
id | sex |
1001 | 男 |
1004 | 女 |
1005 | 女 |
R ⋈ S | |||
id | name | age | sex |
1001 | 小明 | 18 | 男 |
除:把一个关系(表)中的一些属性(列)的值,除以另一个关系(表)中的一些属性(列)的值,得到一个新的关系。新关系的属性(列)是被除关系的属性减去除数关系的属性,新关系的元组(行)是被除关系的元组在除数关系的所有元组上都能匹配的元组的剩余属性的值。
R ÷ S = {t | t ∈ πA® 且 ∀s ∈ S,∃r ∈ R,r = (t, s)}
,其中 A 是 R 的属性减去 S 的属性。
元组演算
考点4:SQL语言
未完待续......