数据管理基础-ch08-10

ch 08 关系、关系模式和关系数据库

域(Domain)

数据管理基础-ch08-10_第1张图片

笛卡尔积

笛卡尔积 1

数据管理基础-ch08-10_第2张图片

笛卡尔积 2

笛卡尔积 3

数据管理基础-ch08-10_第3张图片

笛卡尔积 4

  • 例如,给出3个域:

    • D1=导师集合SUPERVISOR={张清玫,刘逸}
    • D2=专业集合SPECIALITY={计算机专业,信息专业}
    • D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
  • D1,D2,D3的笛卡尔积(其基数为2×2×3=12)为

    • D1×D2×D3={ (张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨), (张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨), (刘逸,计算机专业,王敏),(刘逸,信息专业,李勇), (刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }

笛卡尔积 5

数据管理基础-ch08-10_第4张图片

关系

关系 1

数据管理基础-ch08-10_第5张图片

关系 2

  • 关系的表示
    • 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域
  • 属性
    • 关系中不同列可以对应相同的域
    • 为了加以区分,必须对每列起一个名字,称为属性(Attribute)
    • n目关系必有n个属性

关系 3

    • 候选码(Candidate key)
      • 若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码
      • 简单的情况:候选码只包含一个属性
      • 最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)
    • 主码
      • 若一个关系有多个候选码,则选定其中一个为主码(Primary key)
    • 主属性
      • 候选码的诸属性称为主属性(Prime attribute)
      • 不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute)

关系 4

数据管理基础-ch08-10_第6张图片

关系的类别

  • 基本关系(基本表或基表)
    • 实际存在的表,是实际存储数据的逻辑表示
  • 查询表
    • 查询结果对应的表
  • 视图表
    • 由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

基本关系的性质

  • 列是同质的(Homogeneous)
    • 每一列中的分量是同一类型的数据,来自同一个域
  • 不同的列可出自同一个域
    • 其中的每一列称为一个属性
    • 不同的属性要给予不同的属性名
  • 列的顺序无所谓
    • 列的次序可以任意交换
  • 任意两个元组的候选码不能相同
  • 行的顺序无所谓
    • 行的次序可以任意交换
  • 分量必须取原子值

关系模式

关系模式 1

  • 关系模式(Relation Schema)是型,关系是值
  • 关系模式是对关系的描述
    • 元组集合的结构
      • 属性构成
      • 属性来自的域
      • 属性与域之间的映象关系
    • 完整性约束条件

关系模式 2

数据管理基础-ch08-10_第7张图片

关系模式与关系

  • 关系模式
    • 对关系的描述
    • 静态的、稳定的
  • 关系
    • 关系模式在某一时刻的状态或内容
    • 动态的、随时间不断变化的
  • 关系模式和关系往往笼统称为关系
    • 通过上下文加以区别

关系数据库

  • 关系数据库
    • 在一个给定的应用领域中,所有关系的集合构成一个关系数据库
  • 关系数据库的型与值
    • 关系数据库的型: 关系数据库模式,是对关系数据库的描述
    • 关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库

ch 09 关系的完整性

关系的三类完整性约束

  • 实体完整性和参照完整性
    • 关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
  • 用户定义的完整性
    • 应用领域需要遵循的约束条件,体现了具体领域中的语义约束

实体完整性

实体完整性 1

  • 实体完整性规则(Entity Integrity)
    • 若属性A是基本关系R的主属性,则属性A不能取空值
    • 空值就是“不知道”或“不存在”或“无意义”的值
  • 例:
    • 选修(学号,课程号,成绩)
    • “学号、课程号”为主码
    • “学号”和“课程号”两个属性都不能取空值

实体完整性 2

  • 实体完整性规则的说明
    1. 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
    2. 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
    3. 关系模型中以主码作为唯一性标识。
    4. 主码中的属性即主属性不能取空值。
      • 主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第2点相矛盾,因此这个规则称为实体完整性

关系间的引用

关系间的引用 1

数据管理基础-ch08-10_第8张图片

关系间的引用 2

数据管理基础-ch08-10_第9张图片

外码

外码 1

数据管理基础-ch08-10_第10张图片

外码 2

  • 例1中,学生关系的“专业号”与专业关系的主码“专业号”相对应
    • “专业号”属性是学生关系的外码
    • 专业关系是被参照关系,学生关系为参照关系

数据管理基础-ch08-10_第11张图片

外码 3

  • 例2中,选修关系的“学号” 与学生关系的主码“学号”相对应,选修关系的“课程号”与课程关系的主码“课程号”相对应
    • “学号”和“课程号”是选修关系的外码
    • 学生关系和课程关系均为被参照关系
    • 选修关系为参照关系

数据管理基础-ch08-10_第12张图片

外码 4

  • 例3中,“班长”与本身的主码“学号”相对应
    • “班长”是外码
    • 学生关系既是参照关系也是被参照关系

数据管理基础-ch08-10_第13张图片

参照完整性规则

参照完整性规则 1

参照完整性规则 2

  • 例1中,学生关系中每个元组的“专业号”属性只取两类值:
    • 空值,表示尚未给该学生分配专业
    • 非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业

数据管理基础-ch08-10_第14张图片

参照完整性规则 3

  • 例2中,选修(学号,课程号,成绩)
  • “学号”和“课程号”可能的取值 :
    • 选修关系中的主属性,不能取空值
    • 只能取相应被参照关系中已经存在的主码值

数据管理基础-ch08-10_第15张图片

参照完整性规则 4

  • 例3中,学生(学号,姓名,性别,专业号,年龄,班长)
    • “班长”属性值可以取两类值:
      • 空值,表示该学生所在班级尚未选出班长
      • 非空值,该值必须是本关系中某个元组的学号值

数据管理基础-ch08-10_第16张图片

用户定义的完整性

  • 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
  • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能
  • 例:课程(课程号,课程名,学分)
    • “课程号”属性必须取唯一值
    • 非主属性“课程名”也不能取空值
    • “学分”属性只能取值{1,2,3,4}

ch 10 关系操作和关系代数

      • 基本的关系操作

        • 常用的关系操作
          • 查询操作:选择,投影,连接,除,并,差,交,笛卡尔积
            • 选择,投影,并,差,笛卡尔积是5种基本操作
          • 数据更新:插入,删除,修改
        • 关系操作的特点
          • 集合操作方式:操作的对象和结果都是集合,一次一集合的方式

        关系代数

        • 关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
          • 运算对象是关系
          • 运算结果亦为关系
          • 关系代数的运算符有两类:集合运算符和专门的关系运算符
            • 传统的集合运算是从关系的“水平”方向,即行的角度进行
            • 专门的关系运算不仅涉及行而且涉及列
        运算符 含义
        集合运算符 ⋃ \bigcup
        -
        ⋂ \bigcap
        × \times × 笛卡尔积
        专门的关系运算符 σ \sigma σ 选择
        Π \Pi Π 投影
        ⋈ \Join 连接
        ÷ \div ÷

        使用的记号 1

        • 设关系模式为 R ( A 1 , A 2 , . . . , A n ) R(A_1,A_2,...,A_n) R(A1,A2,...,An)

          • 他的一个关系设为R

            t ∈ R t\in R tR

            t [ A i ] t[A_i] t[Ai]表示元组t种相应于属性 A i A_i Ai的一个分量

            A = { A i 1 , A i 2 , . . . , A i k } A=\{A_{i1},A_{i2},...,A_{ik}\} A={Ai1,Ai2,...,Aik},其中 A i 1 , A i 2 , . . . , A i k A_{i1},A_{i2},...,A_{ik} Ai1,Ai2,...,Aik { A 1 , A 2 , . . . A n } \{A_1,A_2,...A_n\} {A1,A2,...An}种的一部分,则称A为属性列或属性组

            t [ A ] = ( t [ A i 1 , t [ A i 2 ] , . . . , t [ A i k ] ) t[A]=(t[A_{i1},t[A_{i2}],...,t[A_{ik}]) t[A]=(t[Ai1,t[Ai2],...,t[Aik])表示元组t在属性列A上诸分量的集合

            A ˉ \bar{A} Aˉ则表示 { A 1 , A 2 , . . . , A n } \{A_1,A_2,...,A_n\} {A1,A2,...,An}种去掉 { A i 1 , A i 2 , . . . , A i k } \{A_{i1},A_{i2},...,A_{ik}\} {Ai1,Ai2,...,Aik}后剩余的属性组

        使用的记号2

        • R为n目关系,S为m目关系。

          t r ∈ R t_r\in R trR t s ∈ S t_s\in S tsS t r ⌢ t s {t_r}^{\frown}{t_s} trts称为元组的连接。

          t r ⌢ t s {t_r}^{\frown}{t_s} trts是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。

        • 给定一个关系R(X,Z),X和Z为属性组。

          • t [ X ] = x t[X]=x t[X]=x时, x x x在R中的象集(Images Set)为: Z x = { t [ Z ] ∣ t ∈ R , t [ X ] ∈ x } Z_x=\{t[Z]|t\in R,t[X]\in x\} Zx={t[Z]tR,t[X]x}
          • 它表示R中属性组X上值为x的诸元组在Z上分量的集合

        数据管理基础-ch08-10_第17张图片

        并 Union

        • R 和 S

          • 具有相同的目n(即两个关系都有n个属性)
          • 相应的属性取自同一个域
        • R ∪ \cup S

          • 仍为n目关系,由属于R或属于S的元组组成

            R ∪ S = t ∣ t ∈ R ∨ t ∈ S R∪S = { t|t \in R∨t \in S } RS=ttRtS

        差 Difference

        • R 和 S

          • 具有相同的目n(即两个关系都有n个属性)
          • 相应的属性取自同一个域
        • R - S

          • 仍为n目关系,由属于R而不属于S的所有元组组成

            KaTeX parse error: Undefined control sequence: \and at position 18: …S = { t|t \in R\̲a̲n̲d̲ ̲t \notin S }

        交 Intersection

        • R 和 S

          • 具有相同的目n(即两个关系都有n个属性)
          • 相应的属性取自同一个域
        • R ∩ \cap S

          • 仍为n目关系,由既属于R又属于S的元组组成

            R ∩ S = R − ( R − S ) R\cap S = R - (R -S) RS=R(RS)

        笛卡尔积

        • 严格地讲应该是广义的笛卡尔积(Extended Cartesian Product)

        • R: n目关系,k1个元组
          S: m目关系,k2个元组

        • R×S

          • 列:(n+m)列元组的集合

            • 元组的前n列是关系R的一个元组
            • 后m列是关系S的一个元组
          • 行:k1×k2个元组

            R × S = { t r ⌢ t s ∣ t r ∈ R ∧ t s ∈ S } R×S = \{tr^{\frown} ts |tr \in R ∧ ts\in S \} R×S={trtstrRtsS}

        基础关系

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

        • 选择运算符的含义

          • 在关系R中选择满足给定条件的诸元组

            KaTeX parse error: Undefined control sequence: \and at position 26: …(R)=\{t|t\in R \̲a̲n̲d̲ ̲F(t)='真'\}

          • F:选择条件,是一个逻辑表达式,取值为“真”或“假”

            • 基本形式为: X 1 θ Y 1 X_{1}\theta Y_{1} X1θY1,θ表示比较运算符,它可以是>,≥,<,≤,=或<>
            • 在基本的选择条件上可以进一步进行逻辑运算(与,或,非)

        投影 Projection

        • 从R中选择出若干属性列组成新的关系

          Π A ( R ) = { t [ A ] ∣ t ∈ R } \Pi _A (R) = \{t[A] | t\in R\} ΠA(R)={t[A]tR}

          • A : R 中的属性列
        • 投影操作主要是从列的角度进行运算

          数据管理基础-ch08-10_第18张图片

        • 投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

        连接 Join

        • 连接(Join)也称为θ连接

        • 连接运算的含义

          • 从两个关系的笛卡尔积中选取属性间满足一定条件的元组

            KaTeX parse error: Undefined control sequence: \and at position 42: …s | t_r \in R \̲a̲n̲d̲ ̲t_s \in S \and …

            A和B:分别为R和S上度数相等且可比的属性组

            θ:比较运算符

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

        • 等值连接 (equijoin)

        • 自然连接(Natural join)

        • 一般的连接操作是从行的角度进行运算。

        • 自然连接还需要取消重复列,所以是同时从行和列的角度进行运算

        外连接

        • 悬浮元组 Dangling tuple
          • 两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组
        • 外连接 Outer Join
          • 如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
          • 左外连接
          • 右外连接

        除运算

        • 给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。

        • R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集

        • R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影:

          • 元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:

            数据管理基础-ch08-10_第19张图片

综合举例

数据管理基础-ch08-10_第20张图片

数据管理基础-ch08-10_第21张图片

你可能感兴趣的:(数据管理基础,数据库)