1. 关系模型
-
三要素:
relation–Table,关系模型用于处理Table,三要素:Table描述,关系运算,完整性约束。
Table:
操作:并、差、乘积、选择、投影+交、连接、除。
完整性约束:实体完整性、参照完整性、用户自定义完整性。 -
Table定义/关系
列的取值范围:域,相同数据类型的集合,集合中元素的个数称为基数。
元组:所有可能合成的元组称为笛卡尔积。
关系:一组域D1,D2……Dn的笛卡尔积的子集,有意义的元组为关系,关系的列为属性名。R(A1:D1,A2:D2…An:Dn),直接说明属性的类型长度。其中,Ai必须是不同的,但是Di可能是相同的。
候选码:关系中的一个属性组,其值能唯一标识一个元组,若该属性组中去掉任何一个属性,那么就不具备这一性质,这样的属性称作候选码。
存在多个候选码时,选定一个为主码。
包含任何一个候选码的属性被称为主属性,其他属性被称作非主属性。
外码:不属于关系R的候选码,但是属于另一个关系S的候选码,该属性组为R的外码,两个关系通过外码连接。 -
关系模型的完整性
实体完整性:主码属性值不能为空值。
参照完整性:外码可以取空值,但是R中不为空的值必定属于S主码中的某一个值。(保证两个关系之间连接的正确性。)
用户自定义完整性:用户对具体的环境定义的完整性约束条件(属性的取值范围)。 -
关系代数
1.基本操作:
并相容性:R与S的属性数目相同,每个属性的域也相同。
并:RUS,去重合并两个关系的元组。“或者”
差:R-S,出现在R但不出现在S中的元组。R-S!=S-R“是…但…”
广义笛卡尔积:RXS,以元组为单位,将两个关系所有可能组合起来。n+m属性,x*y元组个数。
选择操作:σcon ( R ) ,从R中选出符合给定条件的元组。括号很重要。行操作。
投影操作:πA(R),从关系R中选出属性包含在A中的列构成。列操作。去重。
更名操作:ρ(R)
2.扩展操作(可以通过基本操作实现的操作):
交:R∩S,同时出现在关系R与S中的元组。R∩S=R-(R-S)=S-(S-R)。“既…又”
连接:R|><|S
θ连接:多若干个表进行操作。从RXS笛卡尔积中,选择符合条件的元组。
等值连接:特殊的θ连接,笛卡尔积中:R(A)=S(B),R中的某列与S中的某列相等。
自然连接:RS的属性组相同的,其属性值相等的元组,连接起来,去掉重复属性列。特殊的等值连接。
3.复杂扩展操作:
除:“查询…全部的/所有的”。
R(A1,A2…An),S(B1,B2…Bm),属性B是属性A的真子集,m<n,可进行除运算。R÷S,n-m度,结果的元组与S中的任何一个元组组合起来形成的新元组都是R中的某一个元组。
外连接:(失配元组的处理)R、S进行连接时,如果找不到匹配的元组,为避免信息丢失,则将其与存在的空值元组形成连接—外连接。保证信息不丢失:如左外连接保证左表信息不丢失,右外连接保证右表信息不丢失,全外连接保证所有表信息不丢失。 -
关系演算
1.元组演算:元组变量
1.{t|P(t)}–使谓词P为真的元组t的集合。
公式只限定于以下三种形式:以元组为基本单位进行循环,先找到元组,再找到元组分量,进行谓词判断。
2.存在量词与任意量词:验证范围为t的范围,存在表示存在t满足F(t)关系则为真,任意表示任意t满足F(t)关系则为真。注意验证这个词:验证关系的递进?
3.等价性变换:
2.域演算:域变量—指的是变量的分量从属性域中取值组合起来的变量。
{<x1,x2,…,xn>|P(x1,x2,…,xn)}
QBE语言:query By Example,高度非过程化的语言,适用于终端用户。
示例元素。相同示例元素—与;不同示例元素—或。用相同的示例元素连接不同的表格。 -
关系运算的安全性
不产生无限关系和无穷验证的运算是安全的。关系代数是集合运算,属于安全运算;关系演算不一定是安全的,因为可能表示无限。