数分学习笔记-数据库系统:模型和语言(二)

1.关系模型概述

  • E.F.Codd在1970年提出的
  • 是从表(Table)及表的处理方式中抽象出来的,是在传统表及其操作进行数学化严格定义基础上,引入集合理论与逻辑学理论提出的
  • 标准的数据库语言(SQL语言)是建立在关系模型基础之上的,数据库领域的众多理论模型也都是建立在关系模型基础之上的
  • 形象地说,一个关系就是一个table。
  • 关系模型就是处理table的,它由三个部分组成:
    • 描述DB各种数据的基本结构形式(Table/Relation)
    • 描述Table与Table之间所可能发生的各种操作(关系运算)
    • 描述这些操作所应遵循的约束条件(完整性约束)
  • 要学习:Table如何描述,有哪些操作、结果是什么、有哪些约束等?
  • 关系模型的三要素:
    • 基本结构:Relation/Table
    • 基本操作:
      • 基本的:并∪(Union)、差-(Difference)、×(广义积,product)、选择(selection)、投影(Π  projection)
      • 扩展的:交∩(intersection)、连接Join
    • 完整性约束:实体完整性、参照完整性和用户自定义的完整性
    • 关系运算:关系代数运算和关系演算;关系演算:元组演算和域演算
      • 基于集合的运算,操作的对象及结果都是集合,是一次一集合(Set-at-a-time)的操作,而非关系型的数据操作通常都是一次一记录(Record-at-a-time)的操作。
      • 基于关系代数设计的数据库语言(ISBL):用计算机可以识别的符号表征关系代数的运算符号。(后续会详细介绍这些符号)
      • 元组演算:基于逻辑的运算
      • 基于元组演算设计的数据库语言(Ingres系统的QUEL):用计算机可识别的符号表征元组演算的运算符号
      • 域演算:基于实例的运算
      • 基于域演算设计的数据库语言(QBE:Query By Example)

2.什么是关系

"表"的严格定义--关系

  • 首先定义“列”的取值范围“域”
    • 域(Domain):一组值的集合,这组值具有相同的数据类型,集合中元素的个数称为域的基数(Cardinality)
  • 再定义“元组”及所有可能组合成的元组:笛卡尔积(Cartesian Product)
    • 一组域D1,D2,....,Dn的笛卡尔积为:D1*D2*....*Dn={(d1,d2,...,dn)|di∈Di,i=1,2,...,n}
    • 笛卡尔积的每个元素(d1,d2,...,dn)称作n-元组(n-tuple)
    • 元组(d1,d2,...,dn)的每一个值di叫做一个分量(component)
    • 元组(d1,d2,...,dn)是从每一个域任取一个值所形成的一种组合,笛卡尔积是所有这种可能组合的集合,即:笛卡尔积是由n个域形成的所有可能的n-元组的集合
    • 若域Di的基数为mi,则笛卡尔积的基数,即元组个数为:m1*m2*...*mn
    • 由于笛卡尔积中的所有元组并不都是有意义的,因此。。。。
    • 关系Relation:一组域D1,D2,...,Dn的笛卡尔积的子集;笛卡尔积中具有某一方面意义的那些元组被称作一个关系
      • 由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,改名字即为属性名
      • 关系可表示为:R(A1:D1,A2:D2,...,An:Dn),可简记为R(A1,A2,...,An)这种描述又被称为关系模式(schema)或表标题(head),Ai表示属性,Di是属性对应的域,n是关系的度或目。关系中元组的数目称为关系的基数,关系模式中,属性向域的映象在很多DBMS中一般直接说明为属性的类型、长度等
    • 关系模式与关系
      • 同一关系模式下,可以有很多的关系
      • 关系模式是关系的结构,关系是关系模式在某一时刻的数据
      • 关系模式是稳定的,而关系是某一时刻的值,是随时间可能变化的
  • 关系的特性:
    • 列是同质的:即每一列中的分量来自同一域,是同一类型的数据。
    • 不同的列可来自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。关系模式R(A1:D1,A2:D2,...,An:Dn)中,Ai(i=1,...,n)必须是不同的,而Di(i=1,...,n)可以是相同的
    • 列位置互换性:区分哪一列是根据列名
    • 行位置互换性:区分哪一行是靠某一或某几列的值(关键字/键字/码字)
    • 关系是以内容(名字或值)来区分的,而不是属性在关系的位置来区分的
    • 理论上,关系的任意两个元组不能完全相同。(集合的要求:集合内不能有相同的两个元素);现实应用中,表Table可能并不完全遵守此特性。
    • 元组相同是指两个元组的每个分量都相同
    • 属性的不可再分特性:又被称为关系第一范式
  • 侯选码(Candidate key)/候选键
    • 关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。(创建一个表的时候要先确定候选码)
    • 有时,关系中有很多候选码
  • 主码(Primary Key)/主键
    • 当有多个候选码时,可以选定一个作为主码
    • DBMS以主码为主要线索管理关系中的各个元组
  • 主属性与非主属性
    • 包含在任何一个候选码中的属性被称作为主属性,而其他属性被称为非主属性
    • 最简单的,候选码只包含一个属性
    • 最极端的,所有属性构成这个关系的候选码,称为全码(All-Key)
  • 外码(Foreign Key)/外键
    • 关系R中的一个属性组,他不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或者外键。
    • 两个关系通常是靠外码连接起来的

3.关系模型中的完整性约束

  • 实体完整性
    • 关系的主码中的属性值不能为空值
    • 空值:不知道或无意义的值(关系中的元组对应到现实世界相互之间可区分的一个个个体,这些个体是通过主码来唯一标识的;若主码为空,则出现不可标识的个体,这是不允许的)
  • 参照完整性
    • 如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2中某个元组的Pk值或者为空值。
    • 意义:如果关系R1的某个元组t1参照了关系R2的某个元组t2,则t2必须存在。
  • 用户自定义完整性
    • 用户针对具体的应用环境定义的完整性约束条件
  • DBMS对关系完整性的支持
    • 实体完整性和参照完整性由DBMS系统自动支持
    • 对于用户自定义完整性,它使用户可以自行定义有关的完整性约束条件,当有更新操作发生时,DBMS将自动按照完整性约束条件检验更新操作的正确性,即是否符合用户自定义的完整性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值