02-关系模型

基础概念

  • 域:具有相同数据类型的值的集合。(取值范围)

笛卡尔积

  • 笛卡尔积:给定一组域D1,D2,,DnD_1, D_2, \cdots, D_n,它们的笛卡尔积是{(d1,d2,,dn)diDi}\{(d_1, d_2, \cdots, d_n) | d_i \in D_i\}

  • 元组:笛卡尔积中的元素

  • 分量:每个元素(d1,d2,,dn)(d_1, d_2, \cdots, d_n)中的did_i

  • 基数:元组的个数,i=1nDi=i=1nDi|\prod_{i=1}^{n} D_i| = \prod_{i=1}^{n} |D_i|

  • 笛卡尔积的表示方法:二维表,行是元组,列是域

关系

  • 关系:i=1nDi\prod_{i=1}^{n} D_i的子集,叫做在域D1,D2,,DnD_1, D_2, \cdots, D_n上的关系,表示为R(D1,D2,,Dn)R(D_1, D_2, \cdots, D_n)

    • RR:关系名

    • nn:关系的度,nn元关系

  • 元组:关系中的每个元素,用tt表示

  • 也可用二维表表示

  • 属性:每一列的名字

    • 候选码 Candidate Key:唯一标识元组的属性集,且其任意真子集都不能唯一标识元组

    • 主码:选定多个候选码中的一个

    • 主属性:主码中的属性

    • 外码:表中的属性,引用另一表的主码

关系的类别

  • 基本关系:实际存在的表,实际储存数据的逻辑表示

  • 查询表:查询结果对应的表

  • 视图表:由基本表或其他视图表导出的表,是虚表,不对应实际储存的数据

基本关系的性质

  • 列是同质的:每一列中的分量来自同一个域

  • 不同的列可以出自同一个域:不同列的定义域可能相同

  • 行、列的顺序无关紧要

  • 任何两个元组的候选码不能相同

  • 分量必须取原子值:每一个分量都是不可再分的数据项

关系模式

  • 对关系的描述,静态的、稳定的

    • 关系是动态的

  • 定义:R(U,D,DOM,F)R(U,D,DOM,F)

    • RR:关系名

    • UU:属性名

    • DD:属性的域

    • DOMDOM:属性向域的映像集合

    • FF:属性间的数据依赖关系

  • 可简记为 R(U)R(U)R(A1,A2,,An)R(A_1,A_2,\cdots,A_n)AiA_i 是属性名

关系数据库

  • 所有关系的集合构成关系数据库

  • 关系数据库的型: 关系数据库模式,是对关系数据库的描述

  • 关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库

关系的完整性

  • 实体完整性:主属性非空(不存在、无意义的数据)

  • 参照完整性:当关系R1R_1的外码引用关系R2R_2的主码时,R1R_1的每个元组的外码值必须是R2R_2的某个元组的主码值或空值

  • 用户定义完整性:用户自定义的完整性约束

关系操作 & 关系代数

集合运算

  • 并:RS={ttRtS}R \cup S = \{t | t \in R \lor t \in S\}RRSS 的属性、目数必须相同

  • 交:RS={ttRtS}R \cap S = \{t | t \in R \land t \in S\}RRSS 的属性、目数必须相同

  • 差:RS={ttRtS}R - S = \{t | t \in R \land t \notin S\}RRSS 的属性、目数必须相同

  • 笛卡尔积

    • RRnn目关系,k1k_1个属性

    • SSmm目关系,k2k_2个属性

    • R×SR \times Sn+mn+m目关系,k1k2k_1*k_2个属性

    • R×S={t1t2t1Rt2S}R \times S = \{\overset{\frown}{t_1 t_2} | t_1 \in R \land t_2 \in S\}

    • t1t2\overset{\frown}{t_1 t_2}t1t_1t2t_2 的连接

关系运算

  • 选择(行的运算):σF(R)={ttRF(t)}\sigma_{F}(R)=\{t | t \in R \land F(t)\}FF 是布尔表达式(返回真或假),筛选满足 FF 的元组

  • 投影(列的运算):ΠA(R)={t[A]tR}\Pi_{A}(R)=\{t[A] | t \in R\}AA 是属性名,筛选 AA 对应的列

    • 可能会导致行的减少:列删除后可能会产生重复的元组

  • 连接:RAθBS={trtstrRtsS(tr[A]θts[B])}R \underset{A \theta B}{\bowtie} S = \{\overset{\frown}{t_r t_s} | t_r \in R \land t_s \in S \land (t_r[A] \theta t_s[B])\}

    • 在笛卡尔积后,选择符合条件,即tr[A]θts[B]t_r[A] \theta t_s[B]为真的元组

    • 等值连接:θ\theta 是等于号,比较两个属性的值是否相等(不合并相同属性列)

    • 自然连接:特殊的等值连接,合并RRSS 的相同属性列

    • 悬浮元组 Dangling tuple:在自然连接中,RR 中某些元组有可能在SS中不存在公共属性上值相等的元组,导致RR 中的元组被舍弃

    • 外连接:保留悬浮元组,空值填充 NULL

    • 左/右外连接:只保留左/右表的悬浮元组,悬浮元组中右/左表独有的属性置为 NULL

  • 除(行和列的运算):R÷S={tr[X]trRΠY(S)YX}R \div S = \{t_r[X] | t_r \in R \land \Pi_Y(S)\subseteq Y_X \}AABB 是属性名

    • RR有属性XXYYSS有属性YY,ZZYRY_RYSY_S的域相同

    • 找出满足所有YYXXXX的象集能够包含πY(S)\pi_Y(S)

    • xxRR中的象集:Yx={t[Y]tR,t[X]=x}Y_x=\{t[Y] | \exists t \in R, t[X]=x\}

最后更新于