关系数据库模型与形式化查询语言详解
关系数据库模型与形式化查询语言详解
关系数据库是现代数据库系统中最常见的一种类型,它使用表格结构来组织数据,每个表格由行和列组成,行称为元组,列称为属性。关系数据库模型提供了一种标准化的方式来存储和检索数据,使得数据的管理和维护更加高效和可靠。本文将详细介绍关系数据库模型的基本概念和形式化关系查询语言。
第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 模式图
模式图是数据库中模式的图形化表示,它显示了数据库中的关系,关系的属性、主码和外码。例如,大学数据库的模式图如下:
大学数据库关系模式:
- 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 关系查询语言
关系查询语言用于对数据库进行查询操作,常见的有SQL语言。
2.6 关系运算
关系运算包括选择、投影、并、集合差、笛卡儿积和更名等基本运算。
2. 7 总结
- 关系数据模型建立在表的集合的基础上。数据库系统的用户可以对这些表进行查询,可以插入新元组、删除元组以及更新(修改)元组。表达这些操作的语言有几种.
- 关系的模式(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)
- 关系r和s必须是同元的,即它们的属性数目必须相同。
- 对所有的i,r的第i个属性的域必须和s的第i个属性的域相同。
请注意r和s可以是数据库关系或者作为关系代数表达式结果的临时关系。
d. 集合差(Set Difference Operation)
用—表示的集合差(set-difference)运算使得我们可以找出在一个关系中而不在另一个关系中的那些元组。表达式r-s的结果即一个包含所有在r中而不在s中的元组的关系。
e. 笛卡尔积(Cartesian-Product Operation)
f. 更名(Rename Operation)
待完善