数据库系统原理(二)关系和关系模式
文章目录
关系和关系模式
什么是关系模型?
关系数据库基于关系模型,是一个或多个关系组成的集合
关系通俗来讲就是表(由行和列构成)
关系模型的主要优点是其简单的数据表示,易于表示复杂的查询。
SQL语言是最广泛是使用的语言,用于船舰,操纵和查询关系数据库,而关系模型是其基础
属性类型
关系的每个属性都有一个名称
域:每个属性的取值集合成为属性的域
属性值必须是原子的,即不可分割(1NF,第一范式)
- 多值属性不是原子的
- 复合属性不是原子的
特殊值null是每一个域的成员
空值给数据库访问和更新带来很多困难,因此应该尽量避免使用空值
关系的概念
关系涉及两个概念:关系模式和关系实例
关系模式描述关系的结构
例,Instrctor-schema = (ID:string ,name:string ,dept_name:string ,salary:int)
关系实例表示一个关系的特定实例,也就是所包含的一组特定的行
关系,关系模式,关系实例的区别:
变量<---->关系
变量类型<---->关系模式
变量值<---->关系实例
关系的无序性:元组的顺序是无关紧要,但一个关系中不能由重复的元组
码,键
使
K
⊆
R
(
属
性
集
)
使 K \subseteq R(属性集)
使K⊆R(属性集)
如果K值能够在一个关系中唯一低标志一个元组,则是R的超码
如,学生的学号或身份证号
如果K是最小超码,则k是候选码
如仅有学号或仅有身份证号时,由于他们的任意真子集都不能成为超码,因此在仅有他们任意一个时,它可以成为候选码
如果k是一个候选码,并由用户明确定义,则K是一个主键(primary key)。主键通常由下划线标记
如用户明确定义从候选码学号和身份证号中选取学号,则学号为主键
外键(foreign key)
假设存在关系r和s:r(A,B,C),s(B,D),在关系r上的属性B称作参照s的外码,r也称为外码依赖的参照关系,s叫做外码被参照关系
例,学生(学号,姓名,性别,专业号,年龄) -参照关系
专业(专业号,专业名称) -被参照关系(目标关系)
其中属性 ***专业号***被称为关系 学生的外码
参照关系中外码的值必须在被参照关系中实际存在或为null(用于保证定义完整性)
如 要求被参照关系 专业中 属性专业号必须存在
关系代数
关系代数
在某种程度上是过程化语言
六个基本运算
Select 选择
从表中选择满足条件的行
Project 投影
表r包含A,B,C三种属性,从中选取A,C列,并删除重复的行
Union 并
合并两张同类型(等目同元)表,并删除重复的行
set difference 差(集合差)
关系r,s 差运算r-s删除r中与s相同的行,并返回运算后的r
Cartesian product 笛卡尔积
将表r(A,B)和表 s(C,D,E)两行表合并表成r*s(A,B,C,D,E),如果有交集则重命名这些属性
Rename 更名(重命名)
允许我们用其他名字指代关系,也可以给每个属性赋予新的名字
附加运算
Set intersection 集合交
取两个集合共有的部分 r∩s = r-(r-s)
Natural join 自然连接
R = (A,B,C,D) S = (E,B,D)
关系r和s自然连接的结果模式为(A,B,C,D,E)同名属性只出现一次,原理:两表笛卡尔积后取同名属性相等的行(同名属性的行进行笛卡尔积)
Division 除(不是很明白:拓展阅读)
r÷s适用于包含了“对所有的”此类短语的查询
Assignment 赋值
可以使复杂的查询表达变得简单
扩展的关系代数运算
广义投影
允许在投影列表中使用算数符号来对投影操作进行扩展。
聚集函数
聚合函数输入一个值集合,然后返回单一值作为结果
avg: 平均值
min: 最小值
max:最大值
sum: 值的总和
count :值的数量
外连接
-
外连接运算时连接运算的扩展,可以处理缺失信息。
-
保留一侧关系中所有与另一侧关系的任意元组都不匹配的元组,再把产生的元组加到自然连接的结构上
-
使用空值:控制表示值不知道或不存在
-
存在三种,左外连接,右外连接,全外连接
数据库的修改
数据库的内容可以使用西面的操作来修改:
- 删除
- 插入
- 更新
所有这些操作都使用赋值操作表示