数据库系统原理与设计-第二章 关系模型与关系代数

2.1 关系模型

2.1.1 关系数据结构

1. 关系

  • 关系模型的数据结构非常简单,它就是二维表,亦称为关系
  • 关系数据库是表的集合,即关系的集合。
  • 表是一个实体集,一行就是一个实体,它由有关联的若干属性的值所构成。
  • 由于这个概念和数学上的关系概念密切相关,因此称为关系模型。
  • 关系模型中,现实世界的实体以及实体间的各种联系都是用关系来表示。
关系数据结构的形式化定义
  • ——是一组具有相同数据类型的值的集合。

    • 例如,自然数、{学士’,‘硕士’,博士)(表示学位的取值范围)、大于等于0且小于等于100的正整数(用来表示百分制成绩的取值范围)、长度不超过100字节的字符串集合等,都可以是域。
    • 空值(null)是所有可能的的一个取值,表明值未知值不存在
      • 对于学位的取值域,某员工的学位为空值null,表示不知道该员工所获得的学位,或该员工没有获得学位;
      • 对于成绩的取值域,某学生的成绩为空值null,表示不知道该学生的成绩,或该学生没有成绩(如没有参加考试就没有获得成绩)。
  • 笛卡尔积

    • 给定一组域D1, D2, …, Dn,它们之中可以有相同的域。D1, D2, …, Dn的笛卡尔积为:
      D1×D2×…×Dn = {(d1, d2, …, dn)∣di∈Di, i=1, 2, …, n}
    • 其中,集合中的每一个元素(d1, d2, …, dn)称为一个n元组, 简称为元组;元素中的每一个值di称为一个分量
    • 若Di (i=1, 2, …, n)为有限集,假设其基数为mi (i=1, 2, …, n),则D1×D2×…×Dn的基数M为:在这里插入图片描述
    • 举例:
      给定两个域:
      学生的姓名集合:D1 = {‘李小勇’, ‘刘方晨’, ‘王红敏’}
      课程的名称集合:D2 = {‘数据库系统概论’, ‘操作系统’}
      则D1, D2的笛卡尔积为:
      D1×D2= { (‘李小勇’, ‘数据库系统概论’),
      (‘李小勇’, ‘操作系统’),
      (‘刘方晨’, ‘数据库系统概论’),
      (‘刘方晨’, ‘操作系统’),
      (‘王红敏’, ‘数据库系统概论’),
      (‘王红敏’, ‘操作系统’) }
  • D1×D2×…×Dn有限子集称为在域D1, D2, …, Dn 上的关系,表示为 :r(D1, D2, …, Dn)
    其中,r表示关系的名字,n是关系的目或度(degree)。当 n=1时,该关系称为单元关系;当n=2时,称为二元关系

    • 关系是笛卡尔积的有限子集,所以关系也是一个二维表, 表的每行对应于关系的一个元组,表的每列对应于关系的一个
    • 由于域可以相同,为了区别就必须给每列起一个名字,称为属性(attribute)。n目关系共有n个属性。
  • 表的一行(即关系的一个元组)是由有关联的若干值构成,它对应于现实世界中一个实体的若干属性的值的集合。

    • 关系的最基本要求:
      • 关系中的每个属性的必须是原子的,即域中的每个值都是不可再分的一个完整单元。
        • 例如,表示出生日期的域BD(即属性birthday的取值范围)是由所有形如“year-month-day”的值构成。如果将year,month,day3部分看成是一个整体,则域BD是原子的;如果将year,month,day3部分看成是构成一个birthday的3个独立部分,即一个birthday是由集合{year,month,day}组成,则域BD就不是原子的。
      • 关系中的每个元组都是可区分的,即存在唯一标识不同元组的属性(集)——码

2. 关系模式

  • 对于一个二维表,有表头部分表体部分
    • 表头部分定义了该表的结构,即定义了列构成和取值范围等;(即定义了一个元组由哪些属性构成,每个属性的名字和来自的域等。)
    • 表体部分就是所有数据行(元组)的集合
    • 表头部分对应于关系模式, 是的概念。
    • 表体部分对应于关系,是元组的集合,是的概念。
  • 元组语义实质上是一个n目谓词。凡是使该n目谓词为真的笛卡儿积中的元组(即符合元组语义的元组)的集合就构成了该关系模式的一个关系实例(relation instance),
  • 关系的描述称为关系模式(relation schema)。
    • 形式化地表示为:r(U, D, DOM, F)
      • r为关系名
      • U为组成该关系的属性名的集合
      • D为属性集U中所有属性所来自的域的集合
      • DOM为属性向域的映像集合,
      • F为属性间数据的依赖关系集合(即体现各属性取值之间的“关联”性)。
    • 关系模式通常被简记为 :r(U) 或 r(A1, A2, …, An)
      • r为关系名,U为属性名的集合{A1, A2, …, An}
    • 关系模式是静态的、稳定的。由于关系是关系模式的一个实例,关系中的一个元组是现实世界的一个实体对应于关系模式中各属性在某一时刻的状态和内容,因此关系的内容是动态的、随时间不断变化的。在实际应用中,人们经常把关系模式和关系都笼统地称为关系。

3. 码

  • 超码:对于关系r的一个或多个属性的集合A,如果属性集A可以唯一地标识关系r中的一个元组,则称属性集A为关系r的一个超码 (superkey)
  • 候选码:如果属性集A是关系r的超码,且属性集A的任意真子集都不能成为关系r的超码,则称属性集A为候选码 (candidate key) 。(候选码是最小的超码。)
  • 主码:若一个关系有多个候选码,则可以选定其中的一个候选码作为该关系的主码
    在这里插入图片描述
  • 外码:设F是关系r的一个属性(或属性集),Ks是关系s的主码。如果F与Ks相对应(即关系r中属性F的取值范围对应于关系s中主码Ks的取值范围的子集),则称F是关系r参照关系s的外码(foreign key),简称F是关系r的外码。并称关系r为参照关系,关系s为被参照关系或目标关系,
    在这里插入图片描述
    • 目标关系。的主码K和参照关系的外码F必须定义在同一个域上,

4. 关系数据库模式

  • 所有实体以及实体之间的联系所对应的关系的集合就构成一个关系数据库
  • 关系数据库也有之分:
    • 就是关系数据库模式,即它所包含的所有关系模式的集合;
    • 就是这些关系模式在某一时刻所对应的关系的集合,通常就称为关系数据库实例
  • 在实际应用中,人们经常把关系数据库模式和关系数据库实例都笼统地称为关系数据库
    在这里插入图片描述

2.1.2 关系完整性约束

  • 注意几个问题
    • 哪几种完整性约束?
    • 完整性规则的内容(定义2.8、定义2.9)
    • 图2-8与图2-9的区别在哪里?图2-9解决了图2-8的哪些问题?
  • 关系模式中有3类数据完整性约束:实体完整性、参照完整性和用户自定义完整性。
  • 其中实体完整性和参照完整性是关系模型必须满足的数据完整性约束,被称作是关系的两个不变性,应该由关系数据库管理系统自动支持。用户自定义完整性是应用领域需要遵循的数据完整性约束,体现了具体应用领域中的数据语义约束

1. 实体完整性

  • 若属性集A是关系r的主码,则A不能取空值null。
    • 由于现实世界中的实体都是可区分的,即它们具有某种唯一性标识;而一个关系对应于现实世界的一个实体集,关系中的每一个元组对应于一个实体。因此,作为唯一区分不同元组的主码属性(或属性集)不能取空值。如果主码的属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这是不允许的。
    • 例如,关系Student,由于studentNo是关系Student的主码,因此它在任何时候的取值都不能为空值null。
  • 如果主码是由若干个属性的集合构成,则要求构成主码的每一个属性的值都不能取空值
    • 例如,关系Score,它的主码是{studentNo, courseNo, term},因此这3个属性都不能取空值null 。

2. 参照完整性

  • 现实世界中的实体之间存在各种联系,而在关系模型中实体以及实体间的联系都是用关系来描述。因此,实体间的联系也就对应于关系与关系之间的联系。
  • 实现两个关系之间多对一联系的外码。
    在这里插入图片描述
  • 实现两个关系之间多对多联系的联系关系及外码
    在这里插入图片描述
  • 实现关系内部多对一联系的外码。
    在这里插入图片描述
  • 定义2.9 参照完整性规则
    若关系r的外码F参照关系s的主码,则对于关系r中的每一个元组在属性F上的取值要么为空值null,要么等于关系s中某个元组的主码值(属性F的域<=主码的域)。
    • 例如,对于课程关系Course的外码priorCourse,如果它取空值表示该课程没有先修课程或不知道其先修课程;如果它不为空值,则它的先修课程必须是该校已经存在的某门课程,即它的取值必须是课程关系Course中某元组的主码“课程编号”courseNo的值(因为通过主码“课程编号”能够唯一标识一门课程)。

3.数据库模式导航图

在这里插入图片描述
在这里插入图片描述

4.用户自定义完整性(user-defined integrity)

  • 任何关系数据库管理系统都应该支持实体完整性参照完整性
  • 用户定义完整性是针对某一具体应用要求而由用户自己来定义的一些完整性约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。例如,
    • 限制关系中某些属性的取值要符合业务语义要求。
      • 学生的学号属性是一个7位的字符串,但要求第1位代表学生类别(如研究生、本科生、专科生等)语义、接下来的2位代表年级语义、剩余的4位是流水号等。
    • 限制关系中某些属性的取值之间需要满足一定的逻辑关系
      • 一本书的归还日期必须晚于其借出日期等。
    • 限制关系中某属性集上的取值必须唯一
      • 例如,CourseClass关系,属性集{term,time,classroomNo}、{term,time,teacherNo}上的取值都必须唯一,前者所对应的业务语义是同一学期、同一时间、同一教室不能安排两个教学班,后者所对应的业务语义是同一学期、同一时间、同一教师不能安排两个教学班。
  • 关系数据库管理系统(relation database management system,RDBMS)应该提供定义和检查这类用户自定义完整性的机制,以便统一处理,而不要由应用程序承担该任务。

2.1.3 关系操作

  • 现实世界随着时间在不断变化,因而在不同的时刻,数据库世界中关系模式的关系实例也会有所变化,以反映现实世界的变化。关系实例的这种变化是通过关系操作来实现的。
  • 关系模型中的关系操作有查询操作更新操作(插入、删除和修改)两大类 。
    • 查询操作是关系操作中最主要的部分。查询操作又可以分为选择(select)、投影(project)、连接(join)、除(divide)、 并(union)、交(intersection)、差(except)、笛卡尔积等。
  • 关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一个集合的方式(set-at-a-time)。相应地,非关系数据模型的数据操作方式则为 一次一个记录(record-at-a-time) 的方式。
  • 查询语言可以分为过程化语言(procedural language)和非过程化语言。在过程化语言中,用户指导系统对数据库执行一系列操作以计算所需结果。在非过程化语言中,用户只需描述所需信息,而不用给出获取该信息的具体过程。
  • 关系操作可用两种方式来表示——代数方式和逻辑方式。
    • 关系代数是用代数方式表达的关系查询语言。
    • 关系演算是用逻辑方式表达的关系查询语言。
      • 又分为元组关系演算和域关系演算,它们都是非过程化的查询语言。
    • 对于关系代数、关系演算均是抽象的查询语言,在表达能力上是完全等价的。

关系数据库语言的分类

  • 一、关系代数语言
    用对关系的运算来表达查询要求。)代表:ISBL
  • 二、关系演算语言
    谓词 [(即选择条件),它是一个逻辑表达式,取值为“真”或“假”。] 来表达查询要求。
    ①元组关系演算语言:谓词变元的基本对象是元组变量
    代表:APLHA,QUEL
    ②域关系演算语言:谓词变元的基本对象是域变量
    代表:QBE
  • 三、具有关系代数和关系演算双重特点的语言
    代表:SQL(Structured Query Language)

关系模型总结

  • 关系数据结构:二维表
    • 概念:关系、元组、域 、空值、笛卡尔、关系模式表示、
    • 表头:关系模式、属性
    • 表体:关系、元组
    • 超码、候选码、主码外码
  • 关系操作:关系代数、 (元组、域)关系演算
    • 集合操作方式
  • 关系完整性约束:(实体、参照、用户自定义)完整性
    • 实体完整性:主码属性不能为null
    • 参照完整性:外码属性要么为null,要么为参照的主码
    • 模式导航图
    • 用户自定义完整性

2.2 关系代数

  • 关系代数是通过关系代数运算构成的表达式来表达查询。
  • 基本的关系代数运算有选择、投影、集合并、集合差、笛卡尔积更名等。
  • 关系代数运算是以一个或两个关系作为输入(即运算对象)产生一个新的关系作为结果
    • 集合操作方式操作的对象和结果都是集合,一次一集合的方式。
  • 关系代数按运算符的不同可分为传统的集合运算专门的关系运算两类。
    • 集合运算是从关系的水平方向即行的角度进行。
      专门的关系运算不仅涉及而且涉及

2.2.1 传统的集合运算

  • 前提假设:关系r和关系s具有相同的n个属性,且相应的属性取自同一个域,即两个关系的模式或结构相同。t是元组变量,t∈r表示t是r的一个元组。

并运算

关系r与关系s的并记作 :r∪s = { t∣t∈r∨t∈s }
其结果关系仍为n目关系,由属于r或属于s的所有元组组成。

关系r与关系s的差记作 :r-s = { t∣t∈r∧t∉s }
其结果关系仍为n目关系,由属于r而不属于s的所有元组组成。

关系r与关系s的交记作:r∩s = { t∣t∈r∧t∈s }
其结果关系仍为n目关系,由既属于r又属于s的所有元组组成。关系的交可以通过差来表达,即r∩s = r-(r-s)。

笛卡尔积

两个分别为n目和m目的关系r和s的笛卡尔积是一个n+m目元组的集合。
元组的前n列是关系r的一个元组,后m列是关系s的一个元组
若关系r有kr个元组,关系s有ks个元组,则关系r和s的笛卡尔积有kr×ks个元组。记作 :
r×s = { tr · ts∣tr∈r∧ts∈s }

2.2.2 专门的关系运算

  • 相关记号
    • 1)设关系模式为r(A1,A2,…,An),它的一个关系实例为r。t是元组变量,t∈r表示t是r的一个元组。
    • 在这里插入图片描述
  • (5) 给定一个关系R(X,Z),X和Z为属性组。 当t[X]=x时,x在R中的象集(Images Set)为: Zx={t[Z]|t ∈R,t[X]=x}
    (它表示R中属性组X上值为x的诸元组在Z上分量的集合 )
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

选择

  • 选择操作是在关系r中查找满足给定谓词(即选择条件)的所有元组,记作:
    σP ( r ) = { t∣t∈r∧P(t) }
    • P表示谓词(即选择条件),它是一个逻辑表达式,取值为“真”或“假”。 基本形式为:X1θY1
      其中,θ表示比较运算符,它可以是>,≥,<,≤, = 或<>。逻辑运算符,非¬ 与∧或∨。X1,Y1等是属性名,或为常量,或为简单函数;属性名也可以用它的序号来代替。
  • 注意:属性名若为字符,需要用 ‘’ 包围
  • 例如,在数据库ScoreDB中,查找2015级的所有班级情况
    σgrade=2015(Class)
  • 例如,在数据库ScoreDB中,查找所有2000年及以后出生
    的女学生情况 ,σyear(birthday)>=2000∧sex=‘女’(Student)

投影

  • 关系是一个二维表,对它的操作可以从水平(行)的角度进行,即选择操作;也可以从纵向(列)的角度进行,即投影操作。
  • 关系r上的投影是从r中选择出若干属性列组成新的关系。记作:
    A( r ) = { t[A]∣t∈r }
    • A为关系r的属性集合。投影操作主要是从列的角度进行运算,投影之后不仅取消了原关系中的某些列)而且还可能取消某些元组(避免重复行)
  • 例如,在数据库ScoreDB中,查找所有学生的姓名和民族 ∏studentName,nation (Student)
  • 例如,在数据库ScoreDB中,查找所有“蒙古族”学生的 姓名和籍贯∏ studentName,nativenation=‘蒙古族’(Student))

连接

  • 连接也称为θ连接。记为A op B,其中A、B分别为关系r和s中的属性个数相等且可比的连接属性集,op为比较运算符。 θ连接是从两个关系的笛卡尔积中选取连接属性间满足谓词θ的所有元组。记作 :
    r ⋈θ s = { tr·ts∣tr∈r∧ts∈s∧(r.A op s.B) }
  • θ连接运算就是从关系r和s的笛卡尔积r×s中选取r关系在A属性集上的值与s关系在B属性集上的值满足连接谓词θ所有元组,即 r ⋈θ s =σθ(r×s)
  • 连接运算中有两种最常用、最重要的连接,一种是等值连接(equijoin),另一种是自然连接(natural join)。
    • θ比较谓词不为等值的连接运算称为一般连接
    • θ为等值比较谓词的连接运算称为等值连接
    • 自然连接是一种特殊的等值连接,它要求两个参与连接的关系具有公共的属性集,并在这个公共属性集上进行等值连接;同时,还要求将连接结果中的重复属性列去除掉,即在公共属性集中的列只保留一次
    • 等值连接和属性名无关,只要两个属性值相等就连接,自然连接时根据属性名(两个属性名需相等)进行连接
  • 例如,在数据库ScoreDB中,查找所有2016级的“蒙古族”学生的姓名
    分析:
    • ① σnation=‘蒙古族’(Student)可以找到所有蒙古族学生的情况,但关系Student中没有年级的信息,因此必须将关系Student与关系Class关联起来。
    • ② 根据模式导航图可知,关系Student与关系Class可通过外码classNo关联起来,这种外码引用关系可通过自然连接表示
      Student ⋈ Class =σStudent.classNo=Class.classNo(Student×Class)
    • ③ 最后的查询可表达为:
      studentNamenation=‘蒙古族’(Student) ⋈σgrade=2016(Class))
    • studentNamenation=‘蒙古族’(Student) ⋈σgrade=2016(Class))
      =∏studentNameStudent.classNo=Class.classNonation=‘蒙古族’(Student)×σgrade=2016(Class)))
      =∏studentNameStudent.classNo=Class.classNonation='蒙古族’∧grade=2016(Student×Class)))
      =∏studentNamenation='蒙古族’∧grade=2016∧Student.classNo=Class.classNo(Student×Class))
      =∏studentNamenation='蒙古族’∧grade=2016Student.classNo=Class.classNo(Student×Class)))
      =∏studentNamenation='蒙古族’∧grade=2016(Student ⋈ Class))
  • 例如,在数据库ScoreDB中,查找课程号为AC001课程的考试中比学号为1503045的学生考得更好的所有学生的姓名和成绩。
    • 分析:① 找出学号为1503045的学生在课程号为AC001的课 程中的成绩元组
       (结果关系记为r1),可表达为:(σstudentNo='1503045’∧courseNo=‘AC001’(Score) ) AS r1
    • ② 找出选修了课程号为AC001课程的所有学生的成绩元 组 (结果关系
       记为r2) ,其查询可表达为:(σcourseNo=‘AC001’(Score) ) AS r2
    • ③ 将关系r1与关系r2进行θ连接 (结果关系记为r3),其查询可表达为:
       r1 ⋈~r 1.score<r2.score~ r2 = σr1.score<r2.score(r1×r2) AS r3
    • ④ 将关系r3与学生关系Student按外码studentNo进行自然连接,并对连接
      结果在属性studentName和r2.score上进行投影,其查询可表达为:
      ∏~studentName, r2.score(∏r2.studentNo, r2.score~(r3) ⋈ Student)
      = ∏~studentName, r2.scorer2.studentNo=Student.studentNo(∏r2.studentNo, r2.score~(r3)×Student))
      = ∏~studentName, r2.scorer2.studentNo=Student.studentNo~(
      ∏~r2.studentNo, r2.scorer1.score<r2.score~(r1×r2)) ×Student) )
  • 一些概念
    • 悬浮元组:两个关系R和S在自然连接时,关系R和S中被舍弃的元组称为悬浮元组。
    • 外连接:如果把悬浮元组舍弃的元组也保存在结果关系中,而在其他属性上填空值(NuIl),这种连接就叫做外连接(OUTER JOIN)
    • 左外连接:如果只保留左边关系R中的悬浮元组叫做左外连接(LEFT OUTER JOIN 或 LEFT JOIN)
    • 右外连接:如果只保留右边关系S中的悬浮元组叫做右外连接(RIGHT OUTER JOIN 或 RIGHT JOIN)

除运算

  • 例如,需要查找修读过信息学院开设的所有课程的学生学号,如何表达查询?
  • 分析:①查找出修读过信息学院课程的所有学生:
    r1 = ∏studentNo, courseNo(σcourseNo LIKE ‘CS%’(Score))
    ②找出信息学院开设的所有课程:
    r2 = ∏courseNo(σcourseNo LIKE ‘CS%’(Course))
    ③ 比较图2-20(a)和(b) ,修读过信息学院开设的所有课程的学生 就是关系r1中满足“courseNo列包含关系r2的所有行”的那些学生 。
    在这里插入图片描述

象集Zx

  • 给定一个关系R(X,Z),X和Z为属性组。
    当t[X]=x时,x在R中的象集(Images Set)为:
    Zx={t[Z] | t∈R,t[X]=x}
    (它表示R中属性组X上值为x的诸元组在Z上分量的集合 )
  • 【例】关系R、S的除运算R÷S:
    在这里插入图片描述
  • 分析:
    在关系R中,A可以取四个值{a1,a2,a3,a4}
    a的象集为{(b1,c2),(b2,c3),(b2,c1)}
    a2的象集为{(b3,c7),(b2,c3)}
    a3的象集为{(b4,c6)}
    a4的象集为{(b6,c6)}
    S在(B,C)上的投影为{(b1,c2),(b2,c1), (b2,c3)}
    只有a1的象集包含了S在(B,C)属性组上的投影,所以R÷S={a1}。
  • 除运算:设关系r( R)和s(S),属性集S是R的子集,即S⊆R,则关系r÷s是关系r中满足下列条件的元组在属性集R-S上的投影:∀ tr∈r,记 x= tr[R-S],则关系r中属性集R-S的取值x的象集Sx包含关系s。记作 r÷s = { tr[R-S]∣tr∈r∧s⊆Sx }
    • 除运算的例子。关系数据库ScoreDB 中,求以下结果
      • (1) (∏studentNo,courseNo(Score))÷(∏courseNocourseName='基础会计’∨courseName=‘操作系统’(Course)))
        表示查找既选修了“基础会计”又选修了“操作系统”课程的学生学号,查询结果如图2-21©所示。其中, 被除数∏studentNo, courseNo(Score)和除数 ∏courseNocourseName='基础会计’∨courseName=‘操作系统’(Course))的 查询结果分别如图2-21(a)和(b)所示。
        在这里插入图片描述
      • (2) ∏studentNo,studentName(((∏studentNo,courseNo(Score))÷(∏courseNo(Course))) ⋈ Student)
        表示查找选修了所有课程的学生的学号和姓名,查询结果如图2-21(e)所示。其中除数∏courseNo(Course)的查询结果如图2-21(d)所示 。
        在这里插入图片描述
      • (3) ∏courseNo,courseName(((∏courseNo,studentNo(Score))÷(∏studentNosex=‘男’(Student)))) ⋈ Course)
        表示查找被所有男同学选修过的课程的课程号和课程名,查询结果如图2-21(g)所示。其中除数∏studentNosex=‘男’(Student))的查询结果如图2-21(f)所示 。
        在这里插入图片描述
      • (4) ∏studentNo,studentName( ((∏studentNo,courseNo(Score))÷((∏courseNo,studentNo(Score))÷(∏studentNosex=‘男’(Student))))) ⋈ (σsex=‘女’(Student)) )
        表示查找选修了被所有男同学同时选修过的所有课程的女学生的学号和姓名,查询结果如图2-21(h)所示。
        在这里插入图片描述
  • 给定一个查询需求,构造其关系代数表达式的步骤 :
     明确该查询涉及到哪些属性
     明确该查询涉及到哪些关系
     根据数据库模式导航图,通过多对一联系(或一对多联系)把所有涉及的关系连接起来,每一个多对一联系(或一对多联系)都可以表示为外码属性的自然连接
    • 例如,ScoreDB数据库中,查找“蒙古族”学生所修各门课程的情况,要求输出学生姓名、课程名和成绩。
      分析:
       该查询共涉及4个属性,分别是民族nation、姓名studentName、课程名courseName和成绩score,其中,nation属性用于选择条件nation=‘蒙古族’
       共涉及3个关系,分别是学生关系Student、课程关系Course和成绩关系Score
       成绩关系Score通过外码studentNocourseNo分别与学生关系Student、课程关系Course建立多对一的联系 。
      在这里插入图片描述
      studentName,courseName,scorenation=‘蒙古族’((Student ⋈ Score) ⋈ Course))

关系代数(总结)

  • 传统的集合运算:并、交、差、笛卡尔积
    • 交:r∩s = r-(r-s)
  • 专门的关系运算:选择、投影、连接、除
    • 连接: θ连接、等值连接、自然连接
  • 给定一个查询需求,构造其关系代数表达式的步骤 :
    • 明确该查询涉及到哪些属性;
    • 明确该查询涉及到哪些关系;
    • 根据数据库模式导航图,通过多对一联系(或一对多联系)把所有涉及的关系连接起来,每一个多对一联系(或一对多联系)都可以表示为外码属性的自然连接。
  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值