数据库学习之关系数据库与关系

2.1关系数据库与关系

1. 什么是数据模型?什么是关系数据模型

数据模型是对现实世界物体的一种抽象,是严格定义的一组概念的集合,这些概念精确描述了物体的静态特性,动态特性和完整性约束。
静态特性:数据结构
动态特性:数据操作
完整性约束:数据的完整性约束条件
那么关系数据模型也就是:关系数据结构,关系操作集合,和关系完整性约束条件组成。

2. 关系模型中的关系数据结构是什么?关系是什么?

关系数据结构简单来看,就是一张Table
关系是这张Table的名字 Table=关系
在这里插入图片描述补充开发软件的思维

3. 关系的严格定义

在这里插入图片描述

  • 域(Domain):列的取值范围。一组相同数据类型的集合比如整数集合,全体学生的集合。集合中元素的个数称为域的基数。
    在这里插入图片描述
  • 笛卡尔积(Cartesian Product):元组及所有可能组合成的元组

在这里插入图片描述
元组(d1, d2 , … , dn)的每一个值di叫做一个分量(component)
元组(d1, d2 , … , dn)是从每一个域任取一个值所形成的一种组合,笛卡尔积是所有这种可能组合的集合,即:笛卡尔积是由n个域形成的所有可能的n-元组的集合。
若Di的基数为mi,则笛卡尔积的基数=元组个数为:m1m2m3*…*m_n

  • 但是笛卡尔积的元组不一定是有意义的
    在这里插入图片描述

在这里插入图片描述
练习:写出下图的关系模式(表标题)(Schema)
家庭(丈夫:男人,妻子:女人,子女:儿童)或者家庭(丈夫,妻子,子女)
下表中关系的度(degree)是3,基数是3
在这里插入图片描述

  • 关系模式与关系(简单理解,关系模式就是标题名,关系是还有数据的表)
    同一关系模式下,可以有很多个关系
    关系模式是关系的结构,关系是关系模式在某一刻的数据
    关系模式是稳定的,关系是可能会变化的
Student(S# char(8), Sname char(10), Ssex char(2), Sage integer,   
D# char(2),  Sclass char(6)
  • 练习

在这里插入图片描述
有三列,关系模式为家庭(丈夫,妻子,子女),丈夫的domain是李基,张鹏,妻子的domain是王方,刘玉,子女的domian是李健,张锋,张睿。笛卡尔积为各个域的基数相乘223=12。关系中的元组是三列。

4.关系的特性

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

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

  • 列位置互换性:区分哪一列是靠列名,不是靠列的位置

  • 行位置互换性:区分哪一行是靠某一或某几列的值(关键字/键字/码字)

  • 关系是以内容(名字或值)来区分的,而不是属性在关系的位置来区分
    在这里插入图片描述
    属于相同关系

  • 理论上,关系的任意两个元组不能完全相同。(集合的要求:集合内不能有
    相同的两个元素);现实应用中,表(Table)可能并不完全遵守此特性。
    -属性不可再分特性:又被称为关系第一范式
    在这里插入图片描述

5.关系上的一些重要概念—候选码/候选键

候选码与候选键

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

  • 例如:“学生(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)也是候选码(同名同地址的两个同学是不存在的
    主码与主键

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

  • 例如可选定属性S# Saddress作为“学生”表的主码,也可以选定属性组(Sname )作为“学生”表的主码。
    主属性与非主属性

  • 包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性如“选课”中的S# , C#为主属性,而Sname, Cname, Grade则为非主属性

  • 最简单的,候选码只包含一个属性

  • 最极端的,所有属性构成这个关系的候选码,称为全码(All-Key)
    外码与外键

  • 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选
    码相对应,则称这个属性组为R的外码或外键。(我不是这个关系的自己人,我跟别的关系眉来眼去)

  • 例如“合同”关系中的客户号系中的候选码“客户号不是候选码,但却是外码。因它与“客户”关” 相对应。

  • 两个关系通常是靠外码连接起来的。
    在这里插入图片描述

小结:在这里插入图片描述

6.关系模型中的完整性

1.实体完整性

  • 关系的主码中的属性值不能为空值(不知道或没有意义的值)
  • 意义:关系中的元组对应到现实世界相互之间可区分的一个个个体,这些个体是通过主码来唯一标识的;若主码为空,则出现不可标识的个体,这是不容许的。

2.空值及其含义

  • 空值:不知道、不存在或无意义的值;
  • 在进行关系操作时,有时关系中的某属性值在当前是填不上的,比如档案中有“生日不详”、“下落不明”、“日程尚待公布”等,这时就需要空值来代表这种情况。关系模型中用‘?’表征
  • 数据库中有了空值,会影响许多方面,如影响聚集函数运算的正确性,不能参与算术、比较或逻辑运算等。比如3+?
  • 再例如,一个班有30名同学,如所有同学都有成绩,则可求出平均成绩;如果有一个同学没有成绩,怎样参与平均成绩的计算呢,是当作0,还是当作100呢?还是不考虑他呢?

3.参照完整性

  • 如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2 中某个元组的Pk 值,或者为空值
  • 意义:如果关系R1的某个元组t1参照了关系R2的某个元组t2,则t2必须存在
  • 例如关系Student在D#上的取值有两种可能:空值,表示该学生尚未分到任何系中,若非空值,则必须是Dept关系中某个元组的D#值,表示该学生不可能分到一个不存在的系中。
    简单来说,若两个关系具备参照完整性,那么外码的取值范围只有上述的空和非空两种,其中非空时候取值范围是关系2主码属性值的集合。

4.用户自定义完整性

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

5.DBMS对关系完整性的支持

  • 实体完整性和参照完整性由DBMS系统自动支持
  • DBMS系统通常提供了如下机制:
    (1)它使用户可以自行定义有关的完整性约束条件
    (2)当有更新操作发生时,DBMS将自动按照完整性约束条件检验更新操作的正确性,即是否符合用户自定义的完整性
    在这里插入图片描述
  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值