【数据库系统设计】第2章 关系数据库

关系模型

关系数据结构

单一的数据结构 ---- 关系
现实世界的实体以及实体间的各种联系均用关系来表示
【数据库系统设计】第2章 关系数据库

是一组具有相同数据类型的值的集合。例:

  • 整数
  • 实数
  • 介于某个取值范围的整数
  • 指定长度的字符串集合
  • {男’,‘女’}

关系

关系

  • D1×D2×.×DnD_1×D_2×.…×D_n子集叫作在域 D1D2DnD_1,D_2,…,D_n 上的关系,表示为 R(D1D2Dn)R(D1,D2…,Dn)
    R:关系名
    n:关系的目或度(Degree)

元组

  • 关系中的每个元素 (d1d2dn)(d_1,d_2,…,d_n) 叫作一个 n元组(n-tuple) 或简称元组,通常用 t 表示。

属性

  • 关系中不同列称为属性(Attribute),每个属性有一个名字
  • n目关系必有n个属性

  • 候选码(Candidate key)
    若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码
    简单的情况:候选码只包含一个属性

  • 全码(All-key)
    最极端的情况:关系模式的所有属性是这个关系模式的候选码,称为全码

  • 主码
    若一个关系有多个候选码,则选定其中一个为主码(Primary key)

  • 主属性
    主属性是指包含在候选码中的属性。
    不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或
    非码属性(Non-key attribute)

单元关系与二元关系

  • 当 n=1 时,称该关系为单元关系(Unary relation)或一元关系
  • 当 n=2 时,称该关系为二元关系(Binary relation)

关系模式

关系模式(Relation Schema)是型、关系是值
关系模式是对关系的描述

  • 元组集合的结构
    • 属性构成
    • 属性来自的域
    • 属性与域之间的映象关系
  • 完整性约束条件

关系的三类完整性

实体元整性(Entity Integrity)

  • 关系中元组在组成主码的属性上不能有空值
  • 每个关系都应有一个主码
  • 每个元组的主码的值应当唯一
  • 主属性不为 NULL
  • 空值就是“不知道”或“不存在”或“无意义”的值

【数据库系统设计】第2章 关系数据库

参照完整性

  • 在关系模型中存在着关系与关系间的引用
  • 外码(Foreign Key)

例 2.1 :
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库
学生关系中每个元组的“专业号”属性只取两类值:
(1)空值,表示尚未给该学生分配专业
(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业


例 2.2 :
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库

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


例 2.3 :
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库
学生(学号,姓名,性别,专业号,年龄,班长)
“班长”属性值可以取两类值:
(1)空值,表示该学生所在班级尚未选出班长
(2)非空值,该值必须是本关系中某个元组的学号值

【数据库系统设计】第2章 关系数据库

用户定义的完整性

  • 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
  • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能

例:
课程(课程号,课程名,学分)

  • “课程号” 属性必须取唯一值
  • 非主属性 “课程名” 也不能取空值
  • “学分” 属性只能取值 {1,2,3,4}

关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询

  • 运算对象是关系
  • 运算结果亦为关系
  • 关系代数的运算符有两类:
    集合运算符
    专门的关系运算符

关系代数运算符

【数据库系统设计】第2章 关系数据库

传统的集合运算

并(Union)\cup

【数据库系统设计】第2章 关系数据库

差(Difference)-

【数据库系统设计】第2章 关系数据库

交(Intersection)\cap

【数据库系统设计】第2章 关系数据库

笛卡尔积 ×\times

【数据库系统设计】第2章 关系数据库

例如,给出 3 个域:

  • D1 = 导师集合SUPERVISOR = {张清玫,刘逸}
  • D2 = 专业集合SPECIALITY = {计算机专业,信息专业}
  • D3 = 研究生集合POSTGRADUATE = {李勇,刘晨,王敏}

D1,D2,D3的笛卡尔积为:
【数据库系统设计】第2章 关系数据库

专门的集合运算

首先给出三张表:学生关系Student、课程关系Course、选修关系SC

  • 学生关系 Student
    【数据库系统设计】第2章 关系数据库
  • 课程关系 Course
    【数据库系统设计】第2章 关系数据库
  • 选修关系 SC
    【数据库系统设计】第2章 关系数据库

选择 σ\sigma

【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库

投影 \sqcap

【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库

连接

【数据库系统设计】第2章 关系数据库

等值连接

【数据库系统设计】第2章 关系数据库

自然连接

【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库

等值与自然连接例题

例:给出关系 R 和关系S 的表:
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库

【数据库系统设计】第2章 关系数据库

悬浮元组

两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组。
【数据库系统设计】第2章 关系数据库

外连接

【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库

除运算 ÷\div

【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库

除运算例题

【数据库系统设计】第2章 关系数据库

解:
【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库

小结

关系数据库系统是目前使用最广泛的数据库系统

关系数据库系统与非关系数据库系统的区别:

  • 关系系统只有 “表” 这一种数据结构
  • 非关系数据库系统还有其他数据结构

【数据库系统设计】第2章 关系数据库
【数据库系统设计】第2章 关系数据库

【数据库系统设计】第2章 关系数据库

课后作业

设有一个 SPJ 数据库,包括 S、P、J 及 SPJ 4 个关系模式:
S(SNO, SNAME, STATUS, CITY);
P(PNO, PNAME, COLOR, WEIGHT);
J(JNO, JNAME, CITY);
SPJ(SNO, PNO, JNO, QTY)。
供应商表 S 由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。
零件表 P 由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表 J 由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
供应情况表 SPJ 由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为 QTY。
【数据库系统设计】第2章 关系数据库

试用关系代数、ALPHA语言、QBE语言完成如下查询:
(1)求供应工程 J1 零件的供应商号码 SNO;
(2)求供应工程 J1 零件Pl的供应商号码 SNO;
(3)求供应工程 J1 零件为红色的供应商号码 SNO;
(4)求没有使用天津供应商生产的红色零件的工程号 JNO;
(5)求至少用了供应商 S1 所供应的全部零件的工程号 JNO。

解:
【数据库系统设计】第2章 关系数据库