数据库基础(2)

来源:互联网 发布:淘宝卖家怎么查看总额 编辑:程序博客网 时间:2024/06/13 09:51

关系数据库

关系的三类完整性约束

1)实体完整性
通常由关系系统自动支持
2)参照完整性
早期系统不支持,目前大型系统能自动支持
3)用户定义的完整性
反映应用领域需要遵循的约束条件,体现了具体领域中的语义约束
用户定义后由系统支持

关系

域是一组具有相同数据类型的值的集合。例:
整数
实数
介于某个取值范围的整数
长度指定长度的字符串集合
{‘男’,‘女’}
介于某个取值范围的日期


1) 笛卡尔积
给定一组域D1,D2,…,Dn,
这些域中可以有相同的。
D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn=
{(d1,d2,…,dn)|diDi,i=1,2,…,n}
所有域的所有取值的一个组合
不能重复

2) 元组(Tuple)
笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。
   
3) 分量(Component)
笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量。

4) 基数(Cardinal number)
若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:


例  给出三个域:
   D1=SUPERVISOR ={ 张清玫,刘逸 }   
   D2=SPECIALITY={计算机专业,信息专业}
  D3=POSTGRADUATE={李勇,刘晨,王敏}
则D1,D2,D3的笛卡尔积为:
D1×D2×D3 =

题中,基数:2×2×3=12,
即D1×D2×D3共有2×2×3=12个元组

5)笛卡尔积的表示方法
笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。


在上例中,12个元组可列成一张二维表 


关系(Relation)

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

2) 元组
关系中的每个元素是关系中的元组,通常用t表示。
3) 单元关系与二元关系
当n=1时,称该关系为单元关系(Unary relation)。
当n=2时,称该关系为二元关系(Binary relation)。

4) 关系的表示
关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。

5) 属性
关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。
n目关系必有n个属性。

6) 码

候选码(Candidate key)
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码在最简单的情况下,候选码只包含一个属性。
主码
若一个关系有多个候选码,则选定其中一个为主码(Primary key)。主码的诸属性称为主属性(Prime attribute)。不包含在任何侯选码中的属性称为非码属性(Non-key attribute) 
超码(Super Key):关系中能惟一标识每个元组的属性或者属性组。一个关系可能有多个超码。
候选码(Candidate Key):若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识 。一个关系可能有多个候选码。候选码也是超码,候选码不一定只有一个属性
主码(Primary Key):从候选码中选择一个作为该关系的主码。DBS将按主码标识和排序每个元组。一个关系在任一时刻至多只能有一个主码
备用码(Alternate Key):除了主码之外的所有候选码都是该关系的备用码。可能有,可能没有
外码(Foreign Key):关系R1中的属性或属性组若在另一个关系R2中作为主码使用,则该属性或属性组为R1的外码。注意:域必须相同!
主属性:包含在任何候选码中的属性
非主属性:除主属性之外的属性,即不包含在任何候选码中的属性
全码(All-key)

在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)


什么是关系模式

关系模式(Relation Schema)是型
关系是值
关系模式是对关系的描述
元组集合的结构
属性构成
属性来自的域           
属性与域之间的映象关系
元组语义以及完整性约束条件
属性间的数据依赖关系集合    


关系模式可以形式化地表示为:
    R(U,D,dom,F)
R      关系名
U       组成该关系的属性名集合
D       属性组U中属性所来自的域
dom   属性向域的映象集合
F        属性间的数据依赖关系集合

例:
导师和研究生出自同一个域——人,
取不同的属性名,并在模式中定义属性向域
的映象,即说明它们分别出自哪个域:
   dom(SUPERVISOR-PERSON)
= dom(POSTGRADUATE-PERSON)
=PERSON

关系模式通常可以简记为
  R (U)    或    R (A1,A2,…,An)
    R   关系名
A1,A2,…,An      属性名
注:域名及属性向域的映象常常直接说明为
        属性的类型、长度


关系模式
对关系的描述
静态的、稳定的
关系
关系模式在某一时刻的状态或内容
动态的、随时间不断变化的
关系模式和关系往往统称为关系
通过上下文加以区别


 关系数据库

在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。


1)实体完整性规则(Entity Integrity)

若属性A是基本关系R的主属性,则属性
A不能取空值

关系模型中以主码作为唯一性标识


设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码基本关系R称为参照关系(Referencing Relation)
基本关系S称为被参照关系(ReferencedRelation)或目标关系(Target Relation)

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

3)参照完整性规则

若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
 或者取空值(F的每个属性值均为空值)
 或者等于S中某个元组的主码值。

学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名)

学生关系中每个元组的“专业号”属性只取下面两类值:
(1)空值,表示尚未给该学生分配专业
(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中

3)用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求


关系代数

R和S

1)具有相同的目n
2)相应的属性取自同一个域


R∪S (并)
仍为n目关系,由属于R或属于S的元组组成

R - S (差)
仍为n目关系,由属于R而不属于S的所有元组组成

R∩S(交)
仍为n目关系,由既属于R又属于S的元组组成


广义笛卡尔积(Extended Cartesian Product)

R
n目关系,k1个元组
S
m目关系,k2个元组
R×S 
列:(n+m)列的元组的集合
元组的前n列是关系R的一个元组
后m列是关系S的一个元组
行:k1×k2个元组


选择运算是从行的角度进行的运算 

Student(sno,sname,ssex,sage,sdept)
Course(cno,cname,cpno,ccredit)
SC(sno,cno,grade)


投影操作主要是从列的角度进行运算

但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

连接

1)连接也称为θ连接
2)连接运算的含义
从两个关系的笛卡尔积中选取属性间满足一定条件的元组

A和B:分别为R和S上度数相等且可比的属性组
θ:比较运算符 
连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。

等值连接(equijoin) 
θ为“=”的连接运算称为等值连接 
等值连接的含义
从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:
 非等值连接与等值连接运算类似。即=换成其他比较运算符


自然连接

是一种特殊的等值连接
两个关系中进行比较的分量必须是相同的属性组
在结果中把重复的属性列去掉
自然连接的含义
R和S具有相同的属性组B


一般的连接操作是从行的角度进行运算。

        

自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。



外连接

两个关系R和S在做自然连接时,选择两个关系在公共属性上值相等的元组构成新的关系。关系R中某些元组可能在S中不存在公共属性上值相等的元组,R中这些元组就在操作时被舍弃。
如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值,那么这种连接叫外连接。
如果只把左边关系R中要舍弃的元组保留就叫做左外连接
如果只把右边关系S中要舍弃的元组保留就叫做右外连接


象集Z

给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x(X的分量值)在R中的象集(Images Set)为:
          Zx={t[Z]|t R,t[X]=x}
  它表示R中属性组X上值为x的诸元组在Z上分量的集合。 


除(Division)

给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。
R中的Y与S中的Y可以有不同的属性名,但必须出自相同
的域集。

R与S的除运算得到一个新的关系P(X),P是R中
满足下列条件的元组在X属性列上的投影:
元组在X上分量值x的象集Yx包含S在Y上投影的集合 

Yx:x在R中的象集,x = tr[X]

除操作是同时从行和列角度进行运算


在关系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} 


Student(sno,sname,ssex,sage,sdept)
Course(cno,cname,cpno,ccredit)
SC(sno,cno,grade)


题目:

查询选修了2号课程的学生的学号。
(假设学号、课号定义为varchar型)


查询liu老师所授课程的课程号、课程名


查询年龄大于23岁的男学生的学号和姓名


查询至少选修了一门其直接先行课为5号课程的学生姓名。


查询选修了全部课程的学号(和姓名)。


0 0
原创粉丝点击