关系模式

一. 关系模式研究内容

一个关系就是一个Table
关系模型就是处理Table的,有三个部分:

  • 描述DB各种数据的基本结构形式(Table/Relation)
  • 描述Table与Table之间所可能发生的各种操作(关系运算)
  • 描述这些操作所应该遵循的约束条件(完整性约束)

就是要学习:Table如何描述?有什么操作?结果是什么?有哪些约束等?

二. 关系模型三个要素

  • 基本结构:Relation/Table
  • 基本操作:∪,−,×,δ,∏,∩,⋈,÷∪, -, ×, \delta, \prod, ∩, ⋈, ÷∪,−,×,δ,∏,∩,⋈,÷
  • 完整性约束:实体完整性,参照完整性,用户自定义的完整性

三. 关系模型与关系数据库语言的关系

关系运算

  • 分为关系代数关系演算

  • 关系演算又可分为:元组演算和域演算

  • 关系运算是基于集合的运算,而非关系型数据库操作通常是一次一记录的操作。

关系代数

转换为数据库语言(ISBL)

元组演算:基于逻辑的运算


转换为数据库语言(Ingres系统的QUEL)

域演算:基于示例的运算


转换为数据库语言(QBE)

四. 关系(Relation)与表(Table)

表的基本构成要素

表的严格定义

域(Domain)

列的取值范围

  • 一组具有相同数据类型值的集合
  • 如整数集合,字符串集合,全体学生的集合等
  • 集合元素的个数为域的基数(Cardinality)

笛卡尔积(Cartesian Product)

元组及所有可能组合成的元组

  • 一组域 D1,D2,...,DnD_1,D_2,...,D_nD1​,D2​,...,Dn​ 的笛卡尔积为 D1×D2×...Dn={(d1,d2,...,dn)∣di∈Di,i=1,...,n}D_1×D_2×...D_n = \{(d_1, d_2,..., d_n) | d_i∈D_i, i=1,... ,n\}D1​×D2​×...Dn​={(d1​,d2​,...,dn​)∣di​∈Di​,i=1,...,n}
  • 笛卡尔积的每个元素 (d1,d2,...,dn)(d_1, d_2,...,d_n)(d1​,d2​,...,dn​) 称为一个 n-元组(n-tuple)
  • 元组(d1,d2,...,dn)(d_1, d_2,...,d_n)(d1​,d2​,...,dn​)的每一个值did_idi​叫做一个分量(component)
  • 笛卡尔积是由n个域形成的所有可能的 n-元组 的集合
  • 若DiD_iDi​的基数为mim_imi​,则笛卡尔积的基数,即元组个数为m1×m2×...mnm_1×m_2×...m_nm1​×m2​×...mn​

笛卡尔积所有的元组并不都是有意义的,笛卡尔积具有某方面意义的那些元组被称为一个关系,由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,即属性名

关系模式(Schema)/ 表标题(head)

关系可用R(A1:D1,...An:Dn)R(A_1:D_1,...A_n:D_n)R(A1​:D1​,...An​:Dn​)表示,可简记为R(A1,...An)R(A_1,...A_n)R(A1​,...An​),这种描述又被称为关系模式/表标题

  • R是关系的名字,A是属性,D是属性所对应的域,n是关系的目(degree),关系中的元组的数目称为关系的基数

关系和关系模式

  • 同一关系模式下,可有很多的关系
  • 关系模式是关系的结构,关系是关系模式在某一个时刻的数据
  • 关系模式是稳定的,而关系是某一时刻的值,是随时间可能变化的

关系模式是关系的结构,关系是某一时刻的值。

概念辨析

候选码(Candidate Key)

关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,他就不具有这一性质了,这样的属性组称作候选码。

主码(Primary Key)/主键

有多个候选码时,可以选定一个作为主码。
DBMS以主码为主要线索管理关系中的各个元组。

主属性与非主属性

包含在任何一个候选码钟中的属性被称为主属性,而其他属性被称作非主属性。
最简单情况,候选码只包含一个属性
最极端情况,所有属性构成这个关系的候选码,称为全码(All-Key);比如“教师授课”(T#,C#)就是全码。

外码(Foreign Key)/外键

关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码对应,则称这个属性组为R的外码。
两个关系通常是靠外码连接起来的。

五. 关系模型完整性

实体完整性

关系中的主码属性值不能为空

针对主码

参照完整性

如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2中的某个元组的Pk值,或者为空值

针对外码,用于保证关系之间连接的一致性

用户自定义完整性

用户针对具体的应用环境定义的完整性约束条件

针对属性与属性组合

DBMS对关系完整性的支持

实体完整性和参照完整性由DBMS系统自动支持

MOOC战德臣数据库课程自用笔记_2_关系模式相关推荐

  1. MOOC战德臣数据库课程自用笔记_3_关系模式之关系代数

    关系代数 一. 概述 关系代数特点 基于集合,提供一系列关系代数操作:并,差,笛卡尔积(广义积),选择,投影,更名等操作 以及交,连接和关系除等扩展操作,是一种集合思维的操作语言 关系代数操作以一个或 ...

  2. MOOC战德臣数据库课程自用笔记_1_数据库系统结构和数据模型概述

    数据库系统的结构 从数据库应用开发人员角度,数据库系统通常采用三级模式结构,这是数据库系统内部的系统结构. 从数据库最终用户角度看,数据库系统的结构分为单用户结构,多用户结构,主从式结构,分布式结构, ...

  3. MOOC战德臣数据库课程自用笔记_9_范式

    关系范式 一. 范式 1NF 若关系模式 R(U)R(U)R(U) 中关系的每个分量都是不可分的数据项(值,原子),则称 R(U)R(U)R(U) 属于第一范式,记为:R(U)∈R(U) \inR(U ...

  4. MOOC战德臣数据库课程自用笔记_5_SQL复杂查询与视图

    SQL复杂查询与视图 一. 子查询 出现在 Where 子句中的 Select 语句被称为子查询(subquery) 三种类型的子查询: (NOT) IN θ-Some/θ-ALL ,θ 为比较运算符 ...

  5. MOOC战德臣数据库课程自用笔记_4_SQL概述与简单SQL语句

    SQL 一. SQL概述 集DDL,DML,DCL于一体得数据库语言 1. DDL语句引导词 Create(建立) Alter(修改) Drop(撤销) 模式的定义和删除,包括定义 Database, ...

  6. MOOC战德臣数据库课程自用笔记_6_数据库完整性

    数据库完整性 一. 概述 1. 定义 数据库完整性是指 DBMS 应保证的 DB 的一种特性,即在任何情况下的正确性,有效性,一致性. 广义完整性:语义完整性,并发控制,安全控制,DB 故障恢复等 狭 ...

  7. MOOC战德臣数据库课程自用笔记_7_函数依赖

    函数依赖 一. 概念 1. 函数依赖定义 设 R(U)R(U)R(U) 是属性集合 U=A1,A2,...,AnU = {A_1, A_2,...,A_n}U=A1​,A2​,...,An​ 上的一个 ...

  8. MOOC战德臣数据库课程自用笔记_8_属性闭包计算方法

    属性闭包计算方法 [Algorithm]: 计算一属性集关于一组函数依赖的属性闭包 [Input]:有限属性集合 UUU,UUU 上的函数依赖集合 FFF,及 UUU 的子集 XXX [Output] ...

  9. 战德臣数据库ppt_为我们的健康数据而战

    战德臣数据库ppt We all know that there's a lot of money in health, because humans have frail, sensitive bo ...

最新文章

  1. 美丽的童话故事都是从城堡开始...
  2. 1.11 Lambda表达式遍历Iterator迭代器
  3. C++箴言:理解inline化的介入和排除
  4. 【FI学习笔记】客户发票收款清账
  5. 从三点解读,入行Java从业前景如何?
  6. Java 反射 (Class、ClassLoader、Constructor、Method、Field)
  7. SDOI2017R2PKUSC2017
  8. 程序员为3万福利放弃30万年薪:贪小便宜的人,都把自己坑惨了
  9. MySQL要不要用函数_2.mysql函数的使用
  10. ios 打印 详细错误日志_iOS打印Debug日志的方式
  11. Django自定义分页、bottle、Flask
  12. Java 关于类型类、this.getClass()的理解
  13. 有趣有用的PCA——PCA压缩图片
  14. 马化腾的格局:最后都是人品的竞争
  15. 从浏览器中打开我们的应用
  16. python import注意事项
  17. python 期货现货差价监测_现货价格和期货价格的关系怎么看?
  18. python 模拟键盘自动打字敲英语文章
  19. 解决vue项目中重复点击导航路由报错
  20. Linux 编程之非局部跳转:longjmp siglongjmp

热门文章

  1. kali+php+缓冲区溢出,CVE-2018-18708:Tenda路由器缓冲区溢出漏洞分析
  2. IAST技术进阶系列(五):共生进化,自适应云原生
  3. Swing关于JButton透明处理的问题纪要!
  4. 如何创建微信公众号, 微网站 以及发多图文消息
  5. 信号处理-Chirp-Z变换
  6. 英威腾GD200电路图 GD300原理图 CHF100图纸 pdf格式
  7. 谷歌翻译停服后,chrome无法自动翻译?解决办法来了~ (最新)
  8. Android 文件转语音TTS输出(文字转语音)
  9. Windows Mobile是什么
  10. java sfc模拟器_Higan(sfc超精准模拟器)