关系数据库由表的集合构成,表中一行代表了一组值之间的一种联系。元组(tuple)只是一组值的序列。
在关系模型中,关系用来指代表,元组用来指代行,属性用来指代表列,关系实例用来表示一个关系的特定实例,也就是所包含的一组特定的行
每个属性允许取值的集合称为该属性的域(domain),所有属性的域都是原子的
空值(null)是一个特殊的值,表示位置或不存在,是任意域的成员
数据库模式(schema)是数据库的逻辑设计
数据库实例(instance)是数据库数据的快照
类比
- 关系模式——类型定义
- 关系——变量
- 关系实例——变量的值
A1,A2,...,An表示属性,R=(A1,A2,...,An)表示关系模式
给定集合D1,D2,…,Dn,一个关系r是
关系的当前值(关系实例)由表指定
r的元素
一个关系中没有两个元组在所有属性上的取值都是相同的
数据库由多个关系组成
不好的设计
- 重复信息
- 需要空值
数据库中的码
- 超码(superkey):一个或多个属性的集合,这些属性的组合可以在关系中唯一地标识一个元组。如果K是一个超码,那么
- 候选码(candidate key):最小的超码,任意的真子集都不能称为超码
- 主码(primary key):被数据库设计者选中的,用来在一个关系中区分不同元组的候选码
- 外码(foreign key):一个关系模式r1的属性中包括另外一个关系模式r2的主码,这个属性在r1上称作参照r2的外码。关系r1叫做外码依赖的参照关系,关系r2叫做外码的被参照关系
参照完整性约束要求在参照关系中任意元组在特定属性上的取值必然等于被参照关系中某个元组在特定属性上的取值
模式图(schema diagram)
关系用矩形表示
- 名字在矩形上方
- 属性在矩形下方
- 主码属性用下划线标注
- 外码依赖用从参照关系的外码到被参照属性的主码之间的箭头表示

模式
关系用名字和元组表示
- 名字表示关系名
- 元组是属性的集合
- 主码属性用下划线标注
关系查询语言(query language)
- 用户用来从数据库中请求获取信息的语言
- 纯(pure)查询语言
- 关系代数(Relational algebra)——过程化:包括一个运算的集合,这些运算以一个或两个关系为输入,产生一个新的关系作为结果
- 关系演算(Relational calculus)——非过程化:包括元组关系演算(Tuple relational calculus)和域关系演算(Domain relational calculus),使用谓词逻辑来定义所需的结果,不需给出获取结果的特定代数形式
关系运算
- 选择(σ):从一个关系中选出满足一些特定谓词的特殊元组
- 投影(Π):从一个关系中选出特定的属性(自动去重)
- 自然连接(⋈):在两个关系共有的属性上取值相同的元组合并形成新的关系
- 笛卡尔积(×):两个关系所有的元组合并形成新的关系
- 并(∪)
- 交(∩)
- 差(−)
1356

被折叠的 条评论
为什么被折叠?



