关系数据库
数据模型是描述数据,数据联系,数据语义,一致性约束的概念工具集合。
关系数据库的结构
关系数据库由表的集合构成。每个表有唯一名字。
关系指表,元组指代表中一行。属性指代表中的列。
对关系的每个属性,存在一个允许取值的集合,称为属性的域。
要求对所有关系r
而言,r
的所有属性的域都是原子的。如域中元素被看作是不可再分的单元,则域是原子的。
空值是一个特殊的值,表示值未知或不存在。
数据库模式
关系模式由属性序列及属性对应域组成。
上图关系的模式:department (dept name, building, budget)
.
码
超码是一个或多个属性的集合,这些属性的组合可使我们在一个关系中唯一地标识一个元组。
设R
表示关系r
模式中的属性集合。
如说R
的一个子集K
是r
的一个超码。
则限制了关系r
中任意两不同元组不会在K
的所有属性上取值完全相等。
超码的任意超集也是超码。
任意真子集都不能成为超码的超码,是最小超码。称为候选码。
候选码可能有多个。用主码来代表被数据库设计者选中的,主要用来在一个关系中区分不同元组的候选码。
一个关系模式(如r1
)可能在它的属性中包括另一个关系模式(如r2
)的主码。
这个属性在r1
上称作参照r2
的外码
。
关系r1
也称为外码依赖的参照关系。r2
叫做外码的被参照关系。
外码完整性约束,要求在参照关系中任意元组在特定属性上的取值必等于被参照关系中某个元组在特定属性上的取值.
模式图
每个关系用一个矩形表示.
主码属性用下划线标注.
外码依赖用从参照关系的外码属性到被参照关系的主码属性间的箭头表示.
关系查询语言
查询语言可分为过程化和非过程化的。
过程化语言中,用户指导系统对数据库执行一系列操作以计算出所需结果.具体到执行细节.
非过程化语言中,用户只需描述所需信息,不用给出获取信息具体过程.主要描述意图.
(1). SQL
既包含过程化成分,又含非过程化成分
(2). 关系代数
过程化的
(3). 元组关系演算/域关系演算
非过程化的
关系运算
运算结果总是单个的关系.意味者可在查询结果上施加运算.
最常用的关系运算是从单个关系中选出满足特写特定谓词的特殊元祖,其结果是一个新关系.是原始关系的一个子集.
另一个常用的运算是从一个关系中选出特定的属性,其结果是一个只包含哪些被选择属性的新关系.
连接运算可通过下述方式来结合两个关系:把来自两个关系的元组对合并成单个元组。
可在关系上施加标准的集合运算
关系代数通常以一个或两个关系作为输入,返回一个关系作为输出.