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

域(Domain)

笛卡尔积

笛卡尔积 1

笛卡尔积 2

笛卡尔积 3

笛卡尔积 4

  • 例如,给出3个域:

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

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

笛卡尔积 5

关系

关系 1

关系 2

  • 关系的表示

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

关系 3

    • 候选码(Candidate key)

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

关系 4

关系的类别

  • 基本关系(基本表或基表)

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

基本关系的性质

  • 列是同质的(Homogeneous)

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

关系模式

关系模式 1

  • 关系模式(Relation Schema)是型,关系是值
  • 关系模式是对关系的描述
    • 元组集合的结构

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

关系模式 2

关系模式与关系

  • 关系模式

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

关系数据库

  • 关系数据库

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

ch 09 关系的完整性

关系的三类完整性约束

  • 实体完整性和参照完整性

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

实体完整性

实体完整性 1

  • 实体完整性规则(Entity Integrity)

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

实体完整性 2

  • 实体完整性规则的说明

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

关系间的引用

关系间的引用 1

关系间的引用 2

外码

外码 1

外码 2

  • 例1中,学生关系的“专业号”与专业关系的主码“专业号”相对应

    • “专业号”属性是学生关系的外码
    • 专业关系是被参照关系,学生关系为参照关系

外码 3

  • 例2中,选修关系的“学号” 与学生关系的主码“学号”相对应,选修关系的“课程号”与课程关系的主码“课程号”相对应

    • “学号”和“课程号”是选修关系的外码
    • 学生关系和课程关系均为被参照关系
    • 选修关系为参照关系

外码 4

  • 例3中,“班长”与本身的主码“学号”相对应

    • “班长”是外码
    • 学生关系既是参照关系也是被参照关系

参照完整性规则

参照完整性规则 1

参照完整性规则 2

  • 例1中,学生关系中每个元组的“专业号”属性只取两类值:

    • 空值,表示尚未给该学生分配专业
    • 非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业

参照完整性规则 3

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

参照完整性规则 4

  • 例3中,学生(学号,姓名,性别,专业号,年龄,班长)

    • “班长”属性值可以取两类值:

      • 空值,表示该学生所在班级尚未选出班长
      • 非空值,该值必须是本关系中某个元组的学号值

用户定义的完整性

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

ch 10 关系操作和关系代数

  • 基本的关系操作

    • 常用的关系操作

      • 查询操作:选择,投影,连接,除,并,差,交,笛卡尔积

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

    关系代数

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

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

    使用的记号 1

    • 设关系模式为R(A1,A2,...,An)R(A_1,A_2,...,A_n)R(A1​,A2​,...,An​)

      • 他的一个关系设为R

        t∈Rt\in Rt∈R

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

        若A={Ai1,Ai2,...,Aik}A=\{A_{i1},A_{i2},...,A_{ik}\}A={Ai1​,Ai2​,...,Aik​},其中Ai1,Ai2,...,AikA_{i1},A_{i2},...,A_{ik}Ai1​,Ai2​,...,Aik​是{A1,A2,...An}\{A_1,A_2,...A_n\}{A1​,A2​,...An​}种的一部分,则称A为属性列或属性组

        t[A]=(t[Ai1,t[Ai2],...,t[Aik])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ˉ则表示{A1,A2,...,An}\{A_1,A_2,...,A_n\}{A1​,A2​,...,An​}种去掉{Ai1,Ai2,...,Aik}\{A_{i1},A_{i2},...,A_{ik}\}{Ai1​,Ai2​,...,Aik​}后剩余的属性组

    使用的记号2

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

      tr∈Rt_r\in Rtr​∈R,ts∈St_s\in Sts​∈S, tr⌢ts{t_r}^{\frown}{t_s}tr​⌢ts​称为元组的连接。

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

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

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

    并 Union

    • R 和 S

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

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

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

    差 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)R∩S=R−(R−S)

    笛卡尔积

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

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

    • R×S

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

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

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

    基础关系

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

    • 选择运算符的含义

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

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

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

        • 基本形式为:X1θY1X_{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]∣t∈R}

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

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

    连接 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相关推荐

  1. 数据管理基础-NoSQL

    数据管理基础-NoSQL ch 62 关系型数据库的价值 获取持久化数据 持久存储大量数据 在大多数的计算架构中,有两个存储区域: 速度快但是数据易丢失的"主存储器"(main m ...

  2. 为指定的职工在原工资的基础上长10%的工资,并打印涨工资前和涨工资后的工资

    /* 为指定的职工在原工资的基础上长10%的工资,并打印涨工资前和涨工资后的工资 select sal into psal from emp where empno=? update emp set ...

  3. 电子商务基础课件(10.25更新)

    电子商务基础课件(10.25更新) 电子商务基础课件 unit01-01-1.rar unit01-01-2.rar unit03-01.rar unit04-01.rar unit05-01.rar ...

  4. 1177: 按要求排序(指针专题)_L2算法基础第10课 排序中

    L2-算法基础-第10课 排序中 排序 归并排序 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用 ...

  5. 计算机绘图图层基本线性,计算机绘图基础-第10章 尺寸标注.ppt

    计算机绘图基础-第10章 尺寸标注 第10章 尺 寸 标 注 10.1 尺寸标注基础 10.1.1 尺寸标注的规则 10.1.2 尺寸的组成 10.1.3 尺寸标注的基本类型 AutoCAD提供了四种 ...

  6. ArcGIS二次开发基础教程(10):三维分析

    ArcGIS二次开发基础教程(10):三维分析 坡度分析 请务必学会使用帮助文档!!! //DEM数据的坡度分析 将分析结果添加到地图上 //首先获取DEM数据,方法有很多例如从个人地理数据库获取,也 ...

  7. 两个运放制作加法器_运放基础第10讲,加法器、减法器、积分器、微分器、仪表放大器...

    运放基础第10讲,加法器.减法器.积分器.微分器.仪表放大器课程介绍 <运放第2部,运放电路设计实战基础视频> 课程介绍:<运放电路设计基础视频教程>的第一部分内容有三分之一到 ...

  8. Python语音基础操作--10.2隐马尔科夫模型的孤立字识别

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

  9. Python语音基础操作--10.1基于动态时间规整(DTW)的孤立字语音识别试验

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

  10. android 实现 3d 文字,android 3d 游戏 开发 基础 第10课-2D文字显示.ppt

    <android 3d 游戏 开发 基础 第10课-2D文字显示.ppt>由会员分享,可在线阅读,更多相关<android 3d 游戏 开发 基础 第10课-2D文字显示.ppt(1 ...

最新文章

  1. 面试热点|理解TCP/IP传输层拥塞控制算法
  2. 二叉树的建立与遍历_51、二叉树遍历-重建二叉树JZ4
  3. Java之jdk与jre的区别
  4. java中重新加载指定文件_java-更改后重新加载属性文件
  5. 数据包提取文件_航测怎样高效提取无人机POS航点数据
  6. 解决:-source 1.6 中不支持 diamond 运算符 [ERROR] (请使用 -source 7 或更高版本以启用 diamond 运算符)
  7. stl中copy()函数_std :: copy()函数以及C ++ STL中的示例
  8. 华谊兄弟:拟向阿里影业、腾讯等发行不超8.2亿股股票
  9. VS2013 MFC 中DLL链接库断点不能命中的解决方案总结
  10. ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例
  11. win10计算机护眼,win10系统开启电脑护眼的操作方法
  12. 计算机辅助翻译工具客户端,OmegaT(计算机辅助翻译软件)
  13. 捷普服务器群组防护系统,捷普入侵防御系统
  14. 常用软胶材料基本知识
  15. 深度好文|面试官:进程和线程,我只问这19个问题
  16. 外部电源和锂电池自动切换电路
  17. c语言五子棋如何添加计时,五子棋教程:计时
  18. 从零开始的Android:Android应用程序开发概述
  19. 高考作文做个标题党,有何不好!
  20. H5的重要知识技术点

热门文章

  1. 中M2018春C入门和进阶练习集 7-6 重要的话说三遍(5 point(s))
  2. Http/2 升级指南
  3. 数据库、数据库管理系统和数据库系统的区别
  4. 锐龙r9 6900hx和锐龙r7 6800h差距 r96900hx和r76800h选哪个好
  5. 创业公司股权分配的七大实操建议
  6. 在mt6735中添加新的开机logo与开\关机动画
  7. SDWU 2021 Autumn Training Series C1 1st Round题解
  8. 人工神经网络算法的应用,神经网络是机器算法吗
  9. 计算x的n次幂,n的阶乘,计算斐波那契数列的第n位
  10. android画直角坐标系,用Android画个五角星