ch08 关系、关系模式和关系数据库

域是一组具有相同数据类型的值的集合,可以是有穷的也可以是无穷的,是一种单一的数据类型的取值范围
复合数据类型:简单数据类型的复合

笛卡尔积(Cartesian Product)

给定一组域D1,D2笛卡尔积为
D1×D2×…×Dn={(d1,d2,…,dn)|di属于Di,i=1,2,…,n}

  • 所有域的所有取值(每个域中选取一个合适的值)的一个组合。
  • 不能重复 – 集合的基本要求
  • Di和Dj的域是可以相同的,例如都是int,一个代表年龄,一个代表得分,是可以组合成一个复杂数据类型。
  • 笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组
  • 笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量
  • 若Di(i=1,2,…,n)为有限集,域中所包含的值的个数称为域的基数,其基数为mi (i = 1,2,… ,n),则D1×D2×…×Dn的基数M为:M=mi的连乘;
  • 元祖也是一个集合,是无序的。

image.png

image.png

举例

image.png

image.png

关系

D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)。
R :关系名
n :关系的目或度(Degree)

  • 当n=1时,称该关系为单元关系(Unary relation)或一元关系
  • 当n=2时,称该关系为二元关系(Binary relation)

关系可以是空集。对关系进行增删后,关系就会改变。所以是只在当下作用,是对客观世界某一时刻的状态的正确匹配。
关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。

属性

  • 关系中不同列可以对应相同的域
  • 为了加以区分,必须对每列起一个名字,称为属性(Attribute)
  • n目关系必有n个属性
  • 不同的属性可以共享一个域。age和score都可以是int域的

码反映了数据的依赖关系F :属性间数据的依赖关系的集合,说明了有哪些码可以挑选
候选码(Candidate key)

  • 若关系中的某一属性组的值能唯一地标识一个元组而其子集不能,则称该属性组为候选码。在学生中,假设性别、年龄、学号的组成的元祖可以区分其他学生,则这三个是候选码。
  • 候选码是有穷属性的子集,候选码是可穷举的。
  • 简单的情况:候选码可以只包含一个属性
  • 最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)。关系是一个集合,所以不会出现相同的元祖。

主码

  • 若一个关系有多个候选码,则选定其中一个为主码(Primary key)

主属性

  • 候选码的诸属性称为主属性(Prime attribute)
  • 不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute)

关系的类别

对关系操作得到的结果也是一个关系 – > 可以实现流水线操作

  • 基本关系(基本表或基表)实际存在的表,是实际存储数据的逻辑表示
  • 查询表查询结果对应的表
  • 视图表由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
    • 知道更少的内容,开发更具有效率
    • 更高的安全性
    • 可以掩盖部分元组、也可以掩盖部分属性,也可以都掩盖部分。
    • 实际上是在一个集合中挑选子集的过程,并对子集处理,是实现外模式的一种手段

基本关系的性质

image.png

关系模式与关系

image.png
关系模式

  • 对关系的描述
  • 静态的、稳定的

关系

  • 关系模式在某一时刻的状态或内容
  • 动态的、随时间不断变化的

关系模式和关系往往笼统称为关系通过上下文加以区别

关系数据库

关系数据库

  • 在一个给定的应用领域中,所有关系的集合构成一个关系数据库

关系数据库的型与值

  • 关系数据库的型: 关系数据库模式,是对关系数据库的描述
  • 关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库

ch09 关系的完整性

三类完整性约束

实体完整性和参照完整性关系

  • 模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持

用户定义的完整性

  • 应用领域需要遵循的约束条件,体现了具体领域中的语义约束

实体完整性 Entity Integrity

实体完整性规则(Entity Integrity)— 确保不能犯错,不能先取Null,然后再对Null取值。如果有多个Null,就无法正常赋值了。

  • 若属性A是基本关系R的主码属性,则属性A不能取空值
  • 空值就是“不知道”或“不存在”或“无意义”的值
  • 主码有属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体

例:选修(学号,课程号,成绩)

  • “学号、课程号”为主码
  • “学号”和“课程号”两个属性都不能取空值 — 主码的任意一个属性值不能为空

对于实体完整性规则说明如下:

  1. 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。例如学生关系对应于学生的集合。
  2. 现实世界中的实体是可区分的,即它们具有某种唯一性标识。例如每个学生都是独立的个体,是不一样的。
  3. 相应地,关系模型中以主码作为唯一性标识。
  4. 主码中的属性即主属性不能取空值。如果主码存在一个属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。

参照完整性

关系间的引用

image.png

image.png

外码

F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码(Foreign Key)

  • 基本关系R称为参照关系(Referencing Relation)
  • 基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)

其中

  • 关系R和S不一定是不同的关系
  • 目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上
  • 外码并不一定要与相应的主码同名
    • 当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别

A表中有外码指向B,则

  1. 创建时需要先创建B,因为A是依赖B存在的
  2. 删除时需要先删除A,因为如果先删除B,则A依赖B就会出错

image.png
image.png

image.png

image.png

参照完整性规则

  • 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
  • 或者取空值(F的每个属性值均为空值):F中有一个为空值,则所有的都为空值。因为R的外码F实际上是映射了S的主码Ks,而Ks不能为空。所以,如果F中有空值,则必须不存在这种对应关系,否则会导致Ks也为空。
  • 或者等于S中某个元组的主码值

image.png
image.png

用户定义的完整性

  • 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
  • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能
  • 例:课程(课程号,课程名,学分)
    • “课程号”属性必须取唯一值非主属性
    • “课程名”也不能取空值“
    • 学分”属性只能取值{1,2,3,4}
  • 数据对象本身是不是业务逻辑的一部分

ch10 关系操作和关系代数

关系操作

设关系模式为R(A1,A2,…,An)

  • 它的一个关系设为R
  • t属于R表示t是R的一个元组
  • t[Ai]则表示元组t中相应于属性Ai的一个分量
  • 若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或属性组。
  • t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。
  • A ̅则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。

关系代数

image.png

并操作

其实就是同一个关系下的两个实例进行并操作
image.png

差操作

不满足交换律
image.png

交操作

image.png

笛卡尔积

  • 通过两个关系,构成更大的关系。
  • 不需要两个关系是同一个关系集合
  • 关系的笛卡尔积是值的笛卡尔积。域的笛卡尔积和值的笛卡尔积的区别?

image.png
举例
image.png

记号

image.png

  • 属性组是所有属性的一个子集
  • t[Ai]表示的是一个分量,t[A]表示的是一个分量的集合

image.png

image.png

选择

  • 结果中属性是完备的,只是减少了元祖的数量。
  • 操作的结果也是一个集合

image.png

image.png

image.png

image.png

投影

挑选一部分的属性,排除掉对应解决问题没有作用的属性
因为关系是一个集合,所以删除了特定列后,会导致重复的元祖出现,需要额外操作。属于投影的副作用
image.png

image.png

连接

image.png

  1. 等值连接:A可以是年龄,B是价格,A、B属性值相等,就可以连接。A B并不一定要相等
  2. 自然连接:A B中是相同的含义、相同的域,只是隶属于不同关系

image.png

image.png

image.png
R的第四个元组和S的第五个元组都是悬浮元组

外连接

image.png
image.png

除操作

image.png
数据库-——关系代数的除法运算
除操作是同时从行和列的角度进行运算
image.png

  1. 棕黄方框只有一个
  2. 蓝绿色方框的a1都满足BC中的
  3. 通过象集的概念理解

image.png

举例

  1. 先投影,保留需要的列
  2. 通过除法

sno学号cno课程号sc选修关系cpno先行课
image.png

image.png

image.png