ch02-关系模型

1. 数据模型

  1. 是一组定义,描述了如何在概念上将现实世界的数据表示为计算机化信息。
  2. 它还描述了可用于访问和更新此信息的操作类型。

2. CAP数据库示例

  1. 以上为同属一个数据库的多张数据表

2.1. 关系模型的基本概念

关系数据库管理系统 关系模型 文件系统
关系 记录文件
属性
元组 记录
表头 模式 记录类型
  1. 数据库是表(关系)的集合。
  2. 表的标题是表的列名的集合,也被叫做关系模式(组成关系的属性的集合),记为Head(T)。
  3. 数据库模式:数据库的所有关系模式的集合
  4. 表的内容:表的行(元组)集合
  5. 表的基数:表的行数
  6. 域一般定义为可以被用作表的属性的常数的集合,类似枚举,记为Domian(A) = { 列A的取值范围 }
    1. SQL预留的数据类型:real、integer、char(n)、date等
    2. 大部分商业数据库不支持枚举类型
    3. 域char(n)和char(n + 1)无法进行比较

2.2. 数据独立性

  1. 当你执行一个问题的查询时,即使数据本身发生了变化,但是这个查询仍然能回答你的问题。
  2. 也就是查询语句与表内容无关,仅与列名有关

3. 关系规则

3.1. 第一范式规则:关系模型不允许有多值属性

  1. 内容:在定义的表中,关系模型不允许含有多值属性(有时称为重复字段)和有内部结构(比如记录类型)的列。
  2. 第一范式强调了属性的原子性,不允许含有多值属性(某行某列有多个值)和含有内部结构的列(列类型是一个对象)

3.2. 第二条规则:只能基于内容存取行规则

  1. 只能通过行的内容即每一行所在的属性值来检索列。
  2. 第二条规则说明了行和列没有次序,可以随意进行交换

3.3. 第三条规则:行唯一性规则

  1. 关系中的任何两个元组在同一个时刻不能是完全相同的,保证有键的存在。
  2. 可以推出每一个表都至少有一个键

3.4. 第四条规则:实体完整性规则

  1. 表T中的任意行在主键列的取值都不允许为空值。

3.5. 备注

  1. 虽然上面几个规则并适用于部分数据库,但是在本章我们在其适用继续讨论。

4. 键、超键和空值

4.1. 键和超键

  1. 键/关键字(key):最小的超键,没有任何一个真子集是超键
  2. 超键(superkey):在二维表中,其取值具有唯一性的属性集合被称为该表的超键,满足上图条件1,但是不满足条件2的为超键。
  3. 最小的超键是候选键

4.2. 键的推导

  1. 首先检查有没有单一属性可以成为一个键。
  2. 然后排除不可能包含在键中的属性(上图中的D,没有任何区分度)。
  3. 将剩下的排列组合,然后检查键的定义。
  4. 注:关系规则3保证了一个关系中至少有一个键。
  5. 答案:AB、AC和BC都是这个表的键。

4.3. 每个表都至少有一个键

  1. 由于关系规则3,所以我们可以知道,所有属性的集合S1,必然为这些属性的一个超键
  2. 然后两种可能:S1为键,或者S1的子集S2也是超键,然后链式递归。
  3. 课本25页

4.4. 主键

  1. 表T的主键是被数据库设计者选择出来作为表T中特定的行的唯一性标识符的候选键。
  2. 主键的值不可以为空值

4.5. 空值

  1. 空值(null value):当一个具体值未知或不合适时填充表

    • 不能够进行比较(等于 也不行)
  2. 空值是不会被筛选出来的,即便是< x或者>=x
  3. 通过特殊的语句才能检查出来,比如IS NULL。(非空 NOT IS NULL)

5. 关系代数

  1. 关系代数是为了演示一个查询语言从关系数据库系统中检索信息的潜力。
  2. 关系代数包含集合运算和自然关系运算两部分

5.1. 关系代数的基本运算


  1. 集合运算依赖于表是行的集合
  2. 自然关系运算依赖于表的结构

5.2. 集合运算

  1. 包含并、交、差和乘积。
  2. 前三种运算要求表是兼容表才可以进行运算。

5.2.1. 相容表(Compatible Table)

  1. 列类型不能不同
  2. 列数量不能不同
  3. 列名不能不同
  4. 列顺序可以不同
  5. 只有相容表才可以做交、并、差的操作

5.2.2. 并、交、差

  1. R和S两个兼容表。
  2. R和S的并,是具有相同标题的,由或者属于R或者属于S或者属于二者的所有行组成的。
  3. R和S的交,是具有相同标题的,由既属于R又属于S的行组成的。
  4. R和S的差,R-S,是具有相同的标题的,由属于R而不属于S的行组成。

5.2.3. 并、交、差的性质

  1. 并和交满足交换律和结合律
  2. R-S=R-(R∩S) ≠ S-R=S-(R∩S)
  3. R∩S=R-(R-S)=S-(S-R)
  4. (R-S)∩(S-R)=∅

5.2.4. 赋值和别名

  1. 赋值运算符:=
  2. 赋值运算符合别名搭配使用可以保存中间结果

5.2.5. 笛卡尔积

  1. 笛卡儿积:集合S1,S2,...,SkS_1,S_2,...,S_kS1​,S2​,...,Sk​的笛卡尔积S1∗S2∗...∗SkS_1 * S_2 *...* S_kS1​∗S2​∗...∗Sk​由所有的k元组(e1,e2,…,ek)组成。
  2. 如果Head(T) = A1…An,那么表T是Domain(A1)…Domain(An)的笛卡尔积的一个子集。

5.2.6. 乘积

  1. 乘积是基于笛卡尔积的


  1. 注意如上乘积后的表头,使用R.S形式的.限定符来明确原来属于的位置

5.3. 自然关系运算

5.3.1. 投影(π)

  1. 记为 πAi1,...,Aik(R)\pi_{Ai1,...,Aik}(R)πAi1,...,Aik​(R) 或R[Ai1,…,Aik]。
  2. 选择就选择对应的列,避免造成重复运算。
  3. 如果有重复的就会处理的只剩下非相同列。

5.3.2. 选择(δ)

  1. 记为S where C或δC(S)\delta_{C}(S)δC​(S)
  2. 运用逻辑表达式来完成联合查找
  3. 课本33页例子(注意通过添加条件,保证查询结果唯一)
  4. 查询应该避免内容依赖

5.3.3. 关系代数的优先级

  • 投影 > 选择 > 乘积 > 连接、除法 > 交 > 并、差

5.3.4. 连接(∞)

  1. 联接包括等值联接和自然联接

  1. 通过联接可以避免笛卡尔积(简化)
  2. 联接过程中执行必要的映射,不然可能会出现错误

  1. 外连接

    1. 左外连接(右表缺失值为null)可以反向重构
    2. 右外链接(做表缺失值为null)可以反向重构
    3. Theta连接:R ∞F S = (R * S) where F(按照条件F进行连接)

5.3.5. 除法(÷)

  1. 如果R=T*S,那么T=R÷S,S=R÷T
  2. 如果R=T÷S,那么R*S包含于T

  1. 除法往往用来统计都怎么样了(所有)
  2. 结果最好也进行投影得到最小的子集

5.4. 复杂查询例子

  1. 课本上还有例子
  2. 课件的例子可以再看一看

5.4.1. 查找最大值

5.4.2. 反向思维

  1. 注意反向思维的时候注意全集是不是找对了,因为没有买A的客户还包含没有买东西的客户
  2. 注意理解中文表达含义

5.4.3. 多解思维

  1. 有很多情况是有多种解决方案的,保证自己正确即可

5.4.4. 复杂的排查

6. 运算依赖

  1. R和S的连接可以用积、选择投影运算以及赋值算子重写。

  1. 课本42页(证明):作为SQL没有除法的解释。

7. 关系完备

  1. SQL语言如果能达成和关系操作同样的功能,就称为关系完备的。

8. 难点

  1. 查询条件带有‘否定’语义:‘不等’比较 & 减法运算
  2. 使用表联接查询,还是使用除法?
  3. 正确使用自然连接运算 和 除法运算
  4. 表的自联接结

数据库-2-关系模型相关推荐

  1. 数据库原理—关系模型的数据操作(八)

    数据库原理-关系模型的数据操作(八)

  2. 数据库原理—关系模型的基本概念(七)

    数据库原理-关系模型的基本概念(七)

  3. 数据库MySQL关系模型之基本概念

    1.什么是关系模型 1.1关系模型研究什么 一个关系(relation)就是一个Table 关系模型就是处理Table的,它由三个部分组成: 描述DB各种数据的基本结构形式(Table/Relatio ...

  4. 数据库:关系模型基本介绍

    关系模型研究什么? 关系模型就是处理Table的,它由三个部分组成: 1:描述DB各种数据的基本结构形式 2:描述Table与Table之间所可能发生的各种操作(关系运算) 3:描述这些操作所应遵循的 ...

  5. 数据库之关系模型介绍

    本篇文章是数据库系列的第一篇文章,本系列文章是笔者在学习<数据库系统概念>这本书总结的内容,使用的数据库是MySQL. 关系数据库的结构 关系数据库由表(table)的集合构成,每个表由唯 ...

  6. 数据库 2.关系模型

    2. 关系模型 2.1 关系结构与约束 关系是使用最广泛的逻辑数据模型. 关系模型涉及:关系结构.关系操作.完整性约束. 关系数据库用一系列表来表达数据以及这些数据之间的联系 列:每个列有个列首,也称 ...

  7. Database:数据库的关系模型

    数据库学习笔记:关系模型 Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, School of Artificia ...

  8. 数据库之关系模型的组成,特点以及完整性约束

    关系模型就是用二维表描述数据本身,以及数据之间的关系. 关系模型的组成: 数据结构(表结构)+关系操作(八个操作)+完整性约束(三个完整性) 实体完整性 在关系表中,所有元组主码的值都不能为空. 参照 ...

  9. MySQL的关系模式集是什么,[转载]数据库的关系模型、关系模式、主码。。。。...

    1.关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型.关系模型是由若干个关系模式组成的集合. 2.关系模式:关系模式实际上就是记录类型.它包括:模式名,属性名,值 ... ...

  10. [Russell Han] 24 | 数据库基础 | 关系模型

    文章目录 知识 名词解释 CAP数据库 数据库各部分的命名 关系规则 键.超键.空值 关系代数(由E. F. Codd发明的抽象语言) 集合运算 自然关系运算 运算依赖 其他关系操作 例题 知识 名词 ...

最新文章

  1. 图解Flex开发教程
  2. 将长方形木框拉成平行四边形_【减负提质进行时】平行四边形的面积再思考
  3. linux编译安装的好处,Linux学习—源码安装
  4. DOCKER容器内中文显示乱码
  5. WordPress分页插件WP-PageNavi分页导航nofollow
  6. android选择本地相册或拍照更换软件背景图片
  7. PHP宝塔IDC分销系统,PHP宝塔IDC分销系统,宝塔面板开虚拟主机程序–Bty1.0
  8. 云闪付华为P9指纹_华为云闪付app下载-华为云闪付 安卓版v9.0.11.301-PC6安卓网
  9. fix协议封装挑战-数据有效性校验
  10. vue实现拍照人脸识别功能带人脸选中框
  11. mysql 富文本 字段,富文本引起MYSQL出错
  12. 【合金装备xp热门主题】
  13. ERD(实体关系图)概念了解
  14. vs(c++)修改图标
  15. 叮咚叮咚,京东叮咚音箱Skill开发之路
  16. 一个程序员的减肥方法(男女通用); 饮食+运动
  17. java泛型常用特点_?你必须知道的Java泛型
  18. 计算机软件著作权登记范文,计算机软件著作权登记申请表范本
  19. JavaScript读书笔记(三)布尔值,null,undefined,全局对象,包装对象
  20. 整数拆分的两种解法(已完成)

热门文章

  1. python程序基础知识(五)python文本文件操作
  2. 数据库测试包含哪些?
  3. 笔试题:利用素数定理计算100以内素数的个数
  4. Jenkins+cocoapods+pgy+多版本 持续集成
  5. Android根文件系统认识
  6. 711页的黄海广老师的《机器学习》课件合集.pdf
  7. 同步Google Calendar 与 Ubuntu日历
  8. 世界那么大我要出网关
  9. Boot loader介绍
  10. 中e管家快速学会投资理财