第2章 关系模型介绍
2.1 关系数据库的结构
关系
- 属性(attributes):表中每一列数据。
A1, A2, …, An
- 元组(tuples):表中每一行数据
- 关系(relation):关系是无序的
- 关系实例(relation instance):表
- 关系模式(relation schema):
R = (A1, A2, …, An )
。例如:instructor = (ID, name, dept_name, salary)
2.2 数据库模式
2.3 码
- 超码(superkey):一个或一组属性,可以使我们在一个关系中唯一地标识一个元组。
例如 {ID, name}
,{ID}
- 候选码(candidate key):最小(包含属性个数最少)超码。例如
{ID}
- 主码(primary key):候选码中挑出一个作为主码,任何关系只能有一个主码
- 主码的选择必须慎重。正如我们所注意到的那样,人名显然是不足以作主码的,因为可能有多个 人重名。
- 主码应该选择那些值从不或极少变化的属性
- 外码(foreign key):一个表中某一列的所有值一定出现在另一张表的某一列,且在另一张表中为主码
2.4 模式图
大学数据库的模式图!!!
一个含有主码和外码依赖的数据库模式可以用模式图(schema diagram)来表示。如下为大学数据库的模式图:
大学数据库关系模式!!!
department(dept_name,building,budget); instructor(ID, name,dept_name,salary); course(course_id,title,dept_name,credits); section(course_id,sec_id,semester,year,building,room_number,time_slot_id); teaches(ID,course_id,section_id,semester,year); student(ID,name,dept_name,tot_cred); prereq(course_id,prereq_id); Advisor(s_id,i_id) takes(ID,course_id,sec_id,semester,year,grade) classroom(building,room_number,capacity) time_slot(time_slot_id,day,start_time,end_time)
2.5 关系查询语言
2.6 关系运算
2. 7 总结
- 关系数据模型(relational data model)建立在表的集合的基础上。数据库系统的用户可以对这些表进行 査询,可以插入新元组、删除元组以及更新(修改)元组。表达这些操作的语言有几种.
- 关系的模式(schema)是指它的逻辑设计,而关系的实例(instance)是指它在特定时刻的内容。数据库 的模式和实例的定义是类似的。关系的模式包括它的属性,还可能包括属性类型和关系上的约束, 比如主码和外码约束。
- 关系的超码(superkey)是一个或多个属性的集合,这些属性上的取值保证可以唯一识别岀关系中的元 组。候选码是一个最小的超码,也就是说,它是一组构成超码的属性集,但这组属性的任意子集都 不是超码。关系的一个候选码被选作主码(primary key)
- 在参照关系中的外码(foreign key)是这样的一个属性集合:对于参照关系中的每个元组来说,它在外 码属性上的取值肯定等于被参照关系中某个元组在主码上的取值。
- 模式图(schema diagram)是数据库中模式的图形化表示,它显示了数据库中的关系,关系的属性、主码和外码。
- 关系查询语言(relational query language)定义了一组运算集,这些运算可作用于表上,并输岀表作为 结果。这些运算可以组合成表达式,表达所需的查询。
- 关系代数(relational algebra)提供了一组运算.它们以一个或多个关系为输入,返回一个关系作为输 出。诸如SQL这样的实际查询语言是基于关系代数的•但增加了一些有用的句法特征。
第6章 形式化关系查询语言
1. Relational Algebra关系代数
关系代数是一种过程化查询语言。它包括一个运算的集合,这些运算以一个或两个关系为输入, 产生一个新的关系作为结果。关系代数基本运算有:选择、投影、并、集合差、笛卡儿积和更名。在 基本运算以外,还有一些其他运算,即集合交、自然连接和赋值。我们将用基本运算来定义这些运算。
选择、投影和更名运算称为一元运算,因为它们对一个关系进行运算,另外三个运算对两个关系 进行运算.因而称为二元运算。
a. 选择(Select Operation)
选择(selelct)运算选出满足给定谓词的元组,用符号σ表示:
b. 投影(Project Operation)
组合
c. 集合并(Union Operation)
1. 关系r和s必须是同元的,即它们的属性数目必须相同。
2. 对所有的i,r的第i个属性的域必须和s的第i个属性的域相同。
请注意r和s可以是数据库关系或者作为关系代数表达式结果的临时关系。
d. 集合差(Set Difference Operation)
用—表示的集合差(set-difference)运算使得我们可以找出在一个关系中而不在另一个关系中的那些元组。表达式r-s的结果即一个包含所有在r中而不在s中的元组的关系。
e. 笛卡尔积(Cartesian-Product Operation)
f. 更名(Rename Operation)
待完善