1.定义并理解下列术语,说明他们之间的联系和区别:
(1) 域,笛卡尔积,关系,元组,属性;
(2) 主码,候选码,外码
(3) 关系模式,关系,关系数据库
(1)
域:是一组具有相同数据类型的值的集合,例如{x|x>0}这个取值范围
笛卡尔积:D1,D2,…,Dn是一组域,域中可以有相同的部分,D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn = {(d1,d2,…,dn)|diDi,i=1,2,…,n}
例如:
A={1,2},B={3,4,5}
那么A,B的笛卡尔积为:
A×B={(1,3),(1,4),(1,5),(2,3),(2,4),(2,5)}
关系:D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为
R(D1,D2,…,Dn) R:关系名,n:关系的目或度
元组:笛卡尔积中的每个元素叫做一个n元组,例如
(2,2)是2元组,(0,1,2)是3元组
属性:表中一列为一个属性
联系:
1.属性的取值来自某个域
2.笛卡尔积是所有域的所有取值的一个组合
3.笛卡尔积中的每个元素是一个元组
4.关系是一张二维表,表的每行对应着一个元组,表中的每一列对应一个属性
(2)
候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
主码:若一个关系有多个候选码,则选定其中一个为主码
外码:是关系的一个属性组,但是并不是这个关系的候选码,但是却与另一个关系的候选码相对应
联系:候选码的值可以唯一的标识一个元组,如果一个关系里面有多个候选码,那么其中的一个定位主码,外码是一个与候选码相关的属性
例子:
假设学生姓名都不相同,那么在这个表里,学生姓名与学号可以唯一的标识一个元组,那么学生姓名和学号都可以作为候选码,当出现多个候选码的时候,选择其中的一个作为主码,在表中,课程号不是候选码,但是却与候选码学号有对应关系,那么课程号就是外码。
(3)
关系模式:关系模式是对关系的描述,可以表示为:
R(A,B,C),R是关系名,A、B、C是属性名
关系: D1×D2×…×Dn的 子集 叫作在域D1,D2,…,Dn上的
关系,表示为
R(D1,D2,…,Dn) R:关系名,n:关系的目或度
关系数据库:所有关系的集合构成了一个关系数据库
联系:
关系模式是对关系的描述,关系是关系模式在某一个时刻的状态或内容,关系数据库是所有关系的集合,关系模式在某一时刻对应的关系的集合是关系数据库
关系模式与关系的区别:
关系模式是对关系的描述,是静态,稳定的
关系是关系模式在某一个时刻的状态或内容,是动态的,不断变化的
2.试述关系模型的完整性规则,在参照完整性中,什么情况下外码属性的值可以为空值?
关系完整性:实体完整性,参照完整性,用户定义的完整性
实体完整性:如果属性A是关系R的主属性,那么属性A的值不能为空值,
例如:学生(姓名,学号,专业),其中姓名和学号是主属性,那么学号和姓名的值不能为空
参照完整性:若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值
例如:
学生(学号,姓名,课序号)
课程(课序号,课程名称)
在关系学生中,课序号是外码,该值或者取空值或者在关系课程中是某个元组的主码,不能是一个本课程关系中未出现的一个值
用户定义的完整性:针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
例如:
学生(姓名,学号,性别)
姓名和学号必须填写
性别的取值只能是“男“或者”女“
在参照完整性中,外码源自于被参照关系的主码,该情况下外码属性的值可以为空值。
(1)
(2)
(3)
(4)
(5)
4.关系代数的基本运算有哪些?如何用这些基本运算来表示其他运算?
关系代数的基本运算:选择、投影,并、差、交、笛卡尔积
连接:在R和S的广义笛卡尔积R×S中,选取R在A属性组上的值与S在B属性上的值满足比较关系θ的元组
除:给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。
元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:
R÷S={tr[X]|trR∧πY(S)Yx}
Yx:x在R中的象集,x = tr[X]