数据库笔记:(二)、关系数据库

一、关系和关系模式

1.1 关系的数学定义

  • 域(Domain)
    • 具有相同类型的值的集合 , 例如:全体整数 。
    • 基数:域中值的个数。
  • 笛卡尔积 (Cartesian Product)
    • 定义:给定一组域D1,D2,D3,则D1×D2×D3称为笛卡尔积。
    • 笛卡尔积D1×D2×D3对应一个二维表,所含元组的个数等于各个域的基数之积。

设 D1={张三,李四}, D2={数学,语文}, D3={优,良}

则D1×D2×D3可用二维表表示为:

- - -
张三 数学
张三 数学
张三 语文
张三 语文
李四 数学
李四 数学
李四 语文
李四 语文

1.2 关系(Relation)

  • 定义
    • 笛卡儿积的一部分元组 ,记作 R(D1,D2,…,Dn)。
    • 关系是一个二维表
    • 每行对应一个元组
    • 每列可起一个名字,称为属性。属性的取值范围为一个域,元组中的一个属性值是一个分量。
  • 关系的目(或度)
    • 一个关系所含属性的个数
  • 关系的性质
    • 列是同质的,即每列中的数据必须来自同一个域
    • 每一列必须是不可再分的数据项(不允许表中套表,即 满足第一范式)
    • 不能有相同的行
    • 行、列次序无关

1.3 完整性约束

  • 实体完整性:关系的所有主属性都不能取空值
  • 参照完整性
    • 属性F关系R外码,与关系S主码对应,则:
      • F要么取空值
      • F要么等于S中某个元素的主码值。

二、关系代数

2.1 集合运算

  • RR, tRt\in R , t[Ai]t[A_i]AAt[A]t[A]A\overline{A}trts\overbrace{t_rt_s}
    • 设关系模式为R(A1,A2,...,An)R(A_1,A_2,...,A_n),它的一个关系设为R。
    • ==tRt \in R==表示 ttRR 的一个元组;
    • t[Ai]t[A_i] 表示元组 tt 中相对应与属性 AiA_i 的一个分量;
    • A=A= 属性组 {Ai1,Ai2,...,Aik}\{ A_{i1}, A_{i2},...,A_{ik} \}
    • t[A]=(t[Ai1],t[Ai2],...,t[Aik])t[A] = (t[A_{i1}], t[A_{i2}],...,t[A_{ik}]) 表示元组 ttAA 上诸分量的集合;
    • A\overline{A} 表示 {A1,A2,...,An}\{A_1,A_2,...,A_n\} 中去掉{Ai1,Ai2,...,Aik}\{ A_{i1}, A_{i2},...,A_{ik} \} 后剩余的属性组;
    • trts\overbrace{t_rt_s} 表示元组的连接(拼接)。
  • 并(Union): $R \cup S = { t | t \in R∨t \in S} $
    • R和S的属性个数相同
    • R和S相对应的属性属于同一个域
    • 所有在R中的也在S中的元组
  • 交(Intersection): $R ∩ S = { t | t∈R∧t∈S} $
  • 差(Difference): $R - S = { t | t∈R∧t∈S} $
    • 所有在R中,但是不在S中的元组
  • 笛卡尔积:R×S={tstrtrRtsS}R \times S = \{ \overbrace{t_st_r} | t_r \in R ∧ t_s \in S\}

2.2 关系运算

  • 选择(Selection),又称限制(Restriction)

σF(R)\sigma_F(R) : 在关系R中选出满足条件F的诸元组形成一个新关系。 (从关系中选择符合条件的行)

  • 投影(Projecttion)

πA(R)\pi_A(R) : 在关系R中选出若干属性列组成一个新关系 。(删除一些不想要的列)

注:投影后若有重复行,则自动保留一个

  • 连接(Join)

连接运算从R和S的笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组。

  1. 等值连接: θ为“=”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。
  2. 自然连接: 是一种特殊的等值连接,即对两张表的所有公共属性上都做等值连接。
  3. 外连接:自然连接之外,不符合等值连接的元组赋空值。
  • 除(Division)

    • 设两个关系为:R(X, Y), S(Y, Z);
    • R/S 表示找出在R中,跟S中所有的Y值都有联系的X值。

R/S=πx(R)πx((πx(R)×S)R)R/S = \pi_x(R) - \pi_x((\pi_x(R) \times S) - R)

三、关系演算

3.1 域关系演算

3.1.1 基本格式:

{<X1,X2,...,Xn>P(X1,X2,...,Xn,Xn+1,...,Xn+m)} \{<X_1, X_2,...,X_n> | P(X_1, X_2,...,X_n,X_{n+1},...,X_{n+m})\}

  • X1,X2,...,Xn,Xn+1,...,Xn+mX_1, X_2,...,X_n,X_{n+1},...,X_{n+m} 是域变量

  • X1,X2,...,XnX_1, X_2,...,X_n 是结果中要显示的变量

  • P是表达式

3.1.2 表达式

  • 原子公式(Atomic formula)

    • <X1,X2,...,Xn>R<X_1, X_2,...,X_n> \in RXopYX op YXopConstantXopConstant
    • opop<,>,=,,,<,>,=,\leq,\geq,\neq 其中之一;
  • 原子公式是一个表达式

  • ¬p(否定),p∧q(与),p∨q(或)是一个表达式

3.2 元组关系演算

3.2.1 基本格式:

{t[A]P(t)} \{t[A] | P(t)\}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章