文章目录
2.1 关系的形式化定义及有关概念
2.1.1 关系的形式化定义
-
域
- 相同数据类型的值的集合(D),又称值域;ex:字符串集合,整数集合
- 包含的值的个数称为基数
- D = {32,41,38},基数m = 3
-
笛卡尔积
-
任意一组域D1,D2…,Dn,他们中可以有相同的域。他们的笛卡尔积为 D 1 ∗ D 2 ∗ D 3 ∗ ⋯ ∗ D n = ( d 1 , d 2 d , ⋯ , d n ) ∣ d i ∈ D i D1 * D2 * D3* \cdots *Dn = {(d1, d2d, \cdots,dn) | d_i \in D_i} D1∗D2∗D3∗⋯∗Dn=(d1,d2d,⋯,dn)∣di∈Di
-
每个元素(d1, d2, …, dn)叫作一个n元组,简称元组
-
元素中每一个di叫作分量
-
若Di是有限集,其基数为mi,则 D 1 ∗ D 2 ∗ D 3 ∗ ⋯ ∗ D n D1 * D2 * D3* \cdots *Dn D1∗D2∗D3∗⋯∗Dn的基数M为所有域的基数的累乘积
-
注意可能不是每一项都有具体含义的
-
-
-
关系
-
笛卡尔积中有意义的子集在对应的域上称为关系,表示为 R ( D 1 ∗ D 2 ∗ D 3 ∗ ⋯ ∗ D n ) R(D1 * D2 * D3* \cdots *Dn) R(D1∗D2∗D3∗⋯∗Dn)
-
R是关系的名字,n是关系的目或者度
2.1.2 关系的性质
- 列是同质的
- 属性名是唯一的
- 码的唯一性
- 列的顺序无关性
- 行的顺序无关性
- 分量的原子性
2.1.3 关系模式与关系数据库
关系模式是型,关系是值,关系模式和关系就是性与值的联系
关系模式
对关系的描述,表示为 R ( U , D , D O M , F ) R(U,D,DOM,F) R(U,D,DOM,F)
R是关系名,U是组成该关系的属性的集合,D是U中属性所对应的域的集合,DOM是属性向域的映像的集合,F是改关系中各属性间的依赖关系的集合
简记为 R ( U ) R(U) R(U)或 R ( A 1 , A 2 , . . . ) R(A_1,A_2,...) R(A1,A2,...),A是属性名
关系数据库示例
-
码
- 唯一能标识每个元组的单个属性火最少属性的组合
- "学号"是学生关系的码,"课程号"是课程关系的码
- 一个关系的码可以有多个
-
主码
- 选定一个叫主码,一个关系只有一个
-
全码
- 所有属性的组合
-
外码
- 就是R一个关系外S另一个关系的属性是他的主码
- 涉及两个关系,一个属性R
- R,S不一定是不同的关系
- 通过外码可建立两个表之间的联系
- 自身内也可以有外码
- 插图(P31
-
主属性
- 所有候选码的属性称为主属性;学生关系的学号
-
非主属性
- 不包含在任何一个候选码中的属性;学生关系的其他
2.3关系模型的完整型
-
2.3.1实体完整性
- 主属性不能为空
- 任何一行可分辨
-
2.3.2参照完整性(安全性保障)
- 规则中外码F可以取空值,前提是该外码F同时不是其所在关系R的主属性
-
用户自定义完整性
- DBMS负责检查和处理
- 属性的取值满足用户定义的约束条件
- 反映某一具体应用所涉及的数据满足语义要求
2.4关系模型的数据操作
2.4.1关系模型的数据操作的分类
关系操作主要分为查询、操纵;查询最重要
查询包括:选择、投影、连接、除、并、交、差
基本操作:选择、投影、并、差、笛卡尔积
2.5关系代数
运算符:集合、专门的关系运算符、比较运算符、逻辑运算符
2.5.1 集合运算
交、并、差、笛卡尔积
符号解释
- t ∈ R t\in R t∈R表示t是R的一个元组。 t [ A i ] t[A_i] t[Ai]表示元组t中对应属性 A i A_i Ai的一个分量(有没有大佬能举一个例子这是啥意思qwq)
- R是n目关系,S为m目关系。 t r ∈ R , t s ∈ S , t r t s ⌢ t_r \in R, t_s \in S,\overset{\frown} {t_rt_s} tr∈R,ts∈S,trts⌢称为元组的连接。连接是一贯(n+m)的元组(老师说首尾连接)
集合运算满足的条件
- R和S具有相同的目n,即R和S都有n个属性
- R和S中相应的属性都取自同一个域
2.5.2专门的关系运算
符号:
- t [ A ] t[A] t[A]表示元组t在属性列A上的诸分量的集合
- 象集
-
选择
- σ s e x = ‘ 男 ′ ( S t u d e n t ) σ_{sex= ‘男'}(Student) σsex=‘男′(Student)
- σ D n o = ‘ D 1 ’ ∧ s e x = ‘ 男 ’ ( S t u d e n t ) σ_{Dno=‘D1’∧sex=‘男’}(Student) σDno=‘D1’∧sex=‘男’(Student)
-
投影
-
π D n o ( S t u d e n t ) π_{Dno}(Student) πDno(Student)
或 π 5 ( S t u d e n t ) π_5(Student) π5(Student)
-
-
连接(多个表合成一个)
- 一般连接(带判断)
- 等值连接(判断相等后连接)
- 自然连接(去掉重复的属性列)
- 自然连接的基本形式( π A ( σ F ( R ∞ S ) ) π_A(σ_F(R∞S)) πA(σF(R∞S)))
- 查询技巧:
- 首先看查询的条件F和结果A中涉及到的属性列来自哪些表,将其归置到最少的表中查询。
- 若涉及多个表则需将表进行连接,表间有相同属性时可直接相连,否则寻求与各表有相同属性的中间表进行连接,且将中间联系表写在中间位置。
- 连接的优化形式:先选择,再投影,最后连接
-
否定,用差来做
- 没有选修C3课程的学生的学号=全部的学生的学号-选修C3课程的学生的学号
-
除法(好复杂qwq
- 定义不写了
程的学生的学号=全部的学生的学号-选修C3课程的学生的学号
-
[外链图片转存中…(img-VFeU4YFq-1616580069550)]
-
除法(好复杂qwq
- 定义不写了