1. 域(Domain)
2. 笛卡尔积(Cartesian Product)
3. 关系(Relation)
1. 域(Domain)
域是一组具有相同数据类型的值的集合。
2. 笛卡尔积(Cartesian Product)
所有域的所有取值的一个组合
元组:笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。如:(张清玫,计算机专业,李勇)、 (张清玫,计算机专业,刘晨) 等 都是元组。
分量:笛卡尔积元素(d1,d2,…,dn)中的每一个值di 叫作一个分量。如:张清玫、计算机专业、李勇、刘晨等都是分量 。
例子:
给出3个域:
D1=导师集合SUPERVISOR={张清玫,刘逸}
D2=专业集合SPECIALITY={计算机专业,信息专业}
D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
D1,D2,D3的笛卡尔积为
D1×D2×D3={ (张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏), (刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇), (刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }
基数为2×2×3=12
3. 关系(Relation)
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的 关系,表示为R(D1,D2,…,Dn)
码:
候选码(Candidate key):若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
全码(All-key):关系模式的所有属性组是这个关系模式的候选码,称为全码。
主码(Primary key): 若一个关系有多个候选码,则选定其中一个为主码。
主属性(Prime attribute):候选码的诸属性称为主属性不包含在任何侯选码中的属性称为非主属性或非码属性。
关系模式
对关系的描述 静态的、稳定的。
常用的关系操作
查询操作:选择、投影、连接、除、并、差、交、笛卡尔积
选择、投影、并、差、笛卡尔基是5种基本操作
数据更新:插入、删除、修改
关系操作的特点
集合操作方式:操作的对象和结果都是集合,一次一集合的方式
若属性A是基本关系R的主属性,则属性A不能取空值
例:
选修(学号,课程号,成绩)
“学号、课程号”为主码
“学号”和“课程号”两个属性都不能取空值
1. 外码
2. 参照完整性规则
1. 外码
学生(学号,姓名,性别,专业号,年龄)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
选修中的学号是外码,课程号是外码,学号+课程号是主码。
外码简单的说:在一个关系中不是主码,而在另一个关系中是主码。
2. 参照完整性规则
选修(学号,课程号,成绩)
“学号”和“课程号”可能的取值 :
(1)选修关系中的主属性,不能取空值
(2)只能取相应被参照关系中已经存在的主码值
简单的说:外码的取值非空,且只能取被参照关系中存在的值
简单的说:就是用户根据实际情况自己定义的取值规则。
(1) 并(Union)
(2)差(Difference)
(3) 交(Intersection)
(4) 笛卡尔积(Cartesian Product)
1. 选择
2. 投影
3. 连接
4. 除运算
1.选择
查询信息系(IS系)全体学生。
σSdept = 'IS' (Student)
选择出逻辑表达式为真的元组
2. 投影
查询学生的姓名和所在系。
即求Student关系上学生姓名和所在系两个属性上的投影
πSname,Sdept(Student)
3. 连接
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
自然连接:1.两个关系中进行比较的分量必须是相同的属性组
2.在结果中把重复的属性列去掉
等值连接:从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组。(不去重)
4. 除运算
例如:
在关系R中,A可以取四个值{a1,a2,a3,a4}
a1的象集为 {(b1,c2),(b2,c3),(b2,c1)}
a2的象集为 {(b3,c7),(b2,c3)}
a3的象集为 {(b4,c6)}
a4的象集为 {(b6,c6)}
S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3) }
只有a1的象集包含了S在(B,C)属性组上的投影
所以 R÷S ={a1}