关系模型

关系:现实中的实体或者实体之间的联系在数据库中用表来表示,而这种表在关系模型里就被称作关系。每个关系就是在属性的值域上面定义的n元联系

例如:R=(A1/D1,A2/D2,A3/D3……An/Dn) or R=(A1,A2,A3……An),R就被称作关系,A为各种属性,D为属性的值域,A1/D1就代表属性1的值域(也可简化为A1)

r为关系R的一个实例,r={t1,t2,t3……tn},t为元组

元组t由每个属性在值域上的具体取值构成,t=1</sub>,v2,v3……vn>,vi∈Di,1≤i≤n

t∈D1×D2×D3……Dn,叉乘为笛卡尔乘积,即两个集合两两组合的结果,所以r∈D1×D2×D3……Dn

通俗来说,关系R就是一张表,属性A就是列,元组T就是行

候选键:条件一:在某一关系中的能够唯一决定元组中其他属性的值;条件二:最小的属性集合(他的子集不满足条件一),满足上述两个条件的属性就是候选键

主键:多个候选键中指定一个为主键,剩下的是候选键

超键:满足候选键的第一个条件,而不满足第二个条件的属性,就是超键

全键:某个关系中用所有属性才能唯一确定元组的集合

外键:在某一关系中能够用来引用其他关系中元组的键,并且在其他关系中为主键,这样的属性就是外键(类似于逻辑指针,不能为空)

实体完整性约束:某一关系中某个属性可以为空,但主键不能为空

关系代数

基本操作

一元操作

  1. Selection($\sigma$):选择操作
  2. Projection($\pi$):投影操作,删除不需要的属性,会消除重复元组(在实际数据库系统中,除非用户要求,否则不会消除重复元组)

二元操作

  1. Cross-product($\times$):笛卡尔积,将两个关系拼接在一起
  2. Set-difference(-):集合差,将属于关系1但不属于关系2的属性去掉
  3. Union:并操作,将同时在关系1和关系2中的属性合并
  4. Renameing operator:重命名相同名称的属性
  5. Joins:连接操作,避免笛卡尔积中无意义的元组。条件连接:按照某一条件将两个关系连接在一起;等值连接:条件连接中只出现表达式相等的判断,即为等值连接;自然连接:在两个关系的所有公共属性上都进行等值连接
  6. Division(/):除法操作,A/B=

查询

实例说明

上述理论比较抽象,博主就结合如下图所示的四张表来具体说明上述的各种概念和操作

以R1为例,sid这个属性既可以唯一决定元组,而且是最小属性集合,所以sid就是候选键,同理bid,day也是;对于(sid,bid),可以唯一的决定元组,但不是最小属性集合,所以是超键