三 关系模型之基本概念

关系模型概述

关系模型研究什么

形象地说,一个关系(relation)就是一个Table

关系模型就是处理Table的,它由三个部分组成:
- 描述DB各种数据的基本结构形式(Table/Relation)
- 描述Table与Table之间所可能发生的各种操作(关系运算)
- 描述这些操作所应遵循的约束条件(完整性约束)

所以要研究,Table如何描述,有哪些操作、 结果是什么、 有哪些约束等。

关系模型的三个要素(简略)

  • 基本结构:Relation/Table
  • 基本操作:Relation Operator
    • 基本的
      • (并, UNION)
      • - (差, DIFFERENCE)
      • Χ (广义积,PRODUCT)
      • σ (选择, SELECTION)
      • (投影, PROJECTION)
    • 扩展的
      • (交,INTERSECTION)
      • ▷◁ (连接,JOIN)
      • ÷ (除, DIVISION)
  • 完整性约束
    • 实体完整性
    • 参照完整性
    • 用户自定义的完整性

关系模型与关系数据库语言的关系(简略)

关系运算 : (关系代数(基于集合的运算))和(关系演算(元组演算和域演算))

什么是关系

表的基本构成要素

表的严格定义(关系)

域(Domain)

首先定义“列”的取值范围“域(Domain)”

一组值的集合,这组值具有相同的数据类型(如整数的集合、字符串的集合、全体学生的集合,再如, 由8位数字组成的数字串的集合,由0到100组成的整数集合)

集合中元素的个数称为域的基数(Cardinality)

笛卡尔积(Cartesian Product)

再定义“元组”及所有可能组合成的元组:笛卡尔积

一组域D1, D2,..., Dn的笛卡尔积为:

D1×D2×...×Dn ={(d1 ,d2 ,...,dn)|di∈Di ,i=1,...,n}

笛卡尔积的每个元素(d1 , d2 , … , dn)称作一个n-元组(n-tuple)

  • 元组(d1 , d2 , ... , dn)的每一个值di叫做一个分量(component)
  • 元组(d1 , d2 , ... , dn)是从每一个域任取一个值所形成的一种组合,笛卡尔积是所有这种可能组合的集合, 即:笛卡尔积是由n个域形成的所有可能的n-元组的集合
  • Di的基数为mi,则笛卡尔积的基数,即元组个数为 m1Xm2X...Xmn

关系(Relation)

由于笛卡尔积中的所有元组并不都是有意义的,因此…
- 一组域D1 , D2 ,..., Dn的笛卡尔积的子集
- 笛卡尔积中具有某一方面意义的那些元组被称作一个关系(Relation)
- 由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,该名字即为属性名

关系模式

关系可用R(A1:D1 , A2:D2 , ... , An:Dn)表示,可简记为R(A1 , A2 , ... , An),这种描述又被称为关系模式(Schema)或表标题(Head)

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

例如下图的关系为一3目关系,描述为

家庭(丈夫:男人,妻子:女人, 子女:儿童) 或 家庭(丈夫,妻子, 子女)

关系模式R(A1:D1 , A2:D2 , ... , An:Dn)中属性向域的映象在很多DBMS中一般直接说明为属性的类型、长度等

例如:

Student(S# char(8), Sname char(10), Ssex char(2), Sage integer, D# char(2), Sclass char(6))

Course(C# char(3), Cname char(12), Chours integer, Credit float(1), T# char(3))

SC(S# char(8), C# char(3), Grade float(1))

关系的特性

  • 列是同质:即每一列中的分量来自同一域,是同一类型的数据

  • 不同的列可来自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。

    例,我们定义一个域为Person = 所有男人、女人和儿童的集合 = {李基,张 鹏,王芳,刘玉,李健,张睿,张峰},则下述“家庭”关系的三个列将来自同 一个域Person, 因此需要不同的属性名“丈夫”“妻子”“子女”以示区分。

  • 列位置互换性、行位置互换性(无影响)

  • 理论上,关系的任意两个元组不能完全相同。(集合的要求:集合内不能有 相同的两个元素);现实应用中,表(Table)可能并不完全遵守此特性。(元组相同是指两个元组的每个分量都相同)

  • 属性不可再分特性(又被称为关系第一范式)

关系上的一些重要概念

候选码/候选键

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

例如: “学生(S#, Sname, Sage, Sclass)”,S#就是一个候选码,在此 关系中,任何两个元组的S#是一定不同的,而这两个元组的Sname, Sage, Sclass都可能相同(同名、同龄、同班),所以S#是候选码。

再如: “选课(S#, C#, Sname, Cname, Grade)”,(S#,C#)联合起来是一个候选码

有时,关系中有很多组候选码,例如: 学生(S#, Sname, Sage, Sclass, Saddress)其中属性S#是候选码,属性组(Sname, Saddress)也是候选码(同名同地 址的两个同学是不存在的)

再如Employee(EmpID, EmpName, Mobile)每一雇员有唯一的EmpID, 没有两个雇员有相同的手机号Mobile, 则 EmpID是候选码,Mobile也是候选码

主码/主键

当有多个候选码时,可以选定一个作为主码。

主属性与非主属性

包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性。

外码(Foreign Key)/外键

关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。

关系模型中的完整性约束

实体完整性

关系的主码中的属性值不能为空值(不知道或无意义的值)。

参照完整性

如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2中某个元组的Pk值,或者为空值。(简言之,外键要与那张表的主键对应,只能从中取,不能自己造)

用户自定义完整性

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

比如要求名字在5个 汉字字符之内,年龄在[12, 35]之间,性别只能是“男”或“女”等。

名词总结

以家有儿女这部剧中的角色为例。

男人
夏东海
胡一统
女人
刘梅
玛丽
儿童
夏雪
夏雨
刘星

域(Domain)

一组值的集合,这组值具有相同的数据类型

D1=男人集合={夏东海,胡一统}

D2=女人集合={刘梅,玛丽}

D3=儿童集合={夏雪, 夏雨, 刘星}


基数

集合中元素的个数称为域的基数

基数就是有多少行。

D1域的基数为2

D2域的基数为2

D3域的基数为3

笛卡尔积的基数就是2 * 2 * 3 = 12


笛卡尔积

所有可能组合成的元组

男人女人儿童
夏东海刘梅夏雪
夏东海刘梅夏雨
夏东海刘梅刘星
夏东海玛丽夏雪
夏东海玛丽夏雨
夏东海玛丽刘星
胡一统刘梅夏雪
胡一统刘梅夏雨
胡一统刘梅刘星
胡一统玛丽夏雪
胡一统玛丽夏雨
胡一统玛丽刘星

元组

笛卡尔积的每个元素(d1 , d2 , … , dn)称作一个n-元组(n-tuple)

元组就是一行数据。

|夏东海|刘梅|夏雪|


分量

元组(d1 , d2 , ... , dn)的每一个值di叫做一个分量

夏东海是一个分量。刘梅是一个分量。夏雪是一个分量。


关系

一组域D1 , D2 ,…, Dn的笛卡尔积的子集

笛卡尔积中具有某一方面意义的那些元组被称作一个关系(Relation)

取笛卡尔积后的有意义的几行。

家庭

丈夫妻子子女
夏东海刘梅夏雪
夏东海刘梅夏雨
夏东海刘梅刘星

这是一个”家庭“关系,其他的都不能组成家庭!


属性名

由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,该名字即为属性名

原本是男人、女人、儿童,取名为丈夫、妻子、子女。


关系模式

关系可用R(A1:D1 , A2:D2 , … , An:Dn )表示,可简记为R(A1 , A2 , … , An ),这种描述又被称为关系模式(Schema)或表标题(head)


度或目

n是关系的度或目。
男人、女人、儿童,3个度(目)。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值