chapter-3 -数据库数据模型

本文介绍了数据库中的关系模型,包括关系、关系模式、元组、笛卡尔积以及关系的定义。讨论了关系的属性、域和基数,强调了第一范式的重要性。此外,还涵盖了关系数据库中的键(候选键、主键、外键)、完整性约束(实体完整性、参照完整性)以及关系代数的基本操作,如并、交、差、投影和选择。
摘要由CSDN通过智能技术生成

以下内容来源于MOOC学习—原课程请见:数据库原理与应用
考研复习

概述

image-20210115232203774

image-20210116144633188

关系及关系模式

笛卡尔积

定义在一组域上的有序对的集合,

域是一组具有相同类型的集合,比如自然数,长度小于n的字符串结合等【比如int age】

从n个域的每个域里任取一个值,构成元素集合中的一个,【name取zhao,age取15,构成 zhao,15】

每一个元素称为一个n元祖 简称元祖,元祖中每个值称为分量【name:zhao,age:15即元组】

注意基数的计算

关系

日常生活:事物之间关系的描述,比如人的关系,电压电流

数学中:集合论里—关系本身也是一个集合,是具有某种联系的对象(序组)组合

image-20210116103451876

​ D1 D2 D3上的笛卡尔积共有12个元组(3x2x2),但是由于一个人只有一个姓名,许多元组[一个元祖表示一个学生的姓名,性别,年龄]并没有意义,因此其中有意义的即关系

​ 从笛卡尔积中取出一定语义的元祖,构成这N个域上的一个关系,或者说关系是笛卡尔积上的某个有意义的自子集R(D1,D2,…Dn)

image-20210116104746640

同时要满足:

  1. 域要求满足第一范式-------域都是原子数据的集合
  • 属性值不能再细化分成多个

image-20210116104323605

  • 属性也不能是多值属性,

image-20210116104353614

  1. DOM

image-20210116104546454

  1. 属性间的依赖关系

比如张山的性别?是男----反应姓名和性别的依赖;数据内在的性质

关系模式简化

关系名和属性名的集合 R(A1,A2,…An); 比如指导(指导老师,专业,学生姓名)

关系实例

给定关系下 某一时刻的元祖的集合(二维表),时刻变化的数据;理解为具体数据库中表值

关系模式

是关系的型的描述,静态,稳定的;比如指导(指导老师,专业,学生姓名)

关系数据库

略,参考第二章补充

概念分析

集合中的关系:关系可以是一个无限集合 • 关系中每个元组是“序组”

关系模型的关系:关系必须是有限集合 • 为关系的每个属性附加一个属性名(age)取消分量的有序性

如果不附加属性名,那么关系模式语义相同,可以表达同一个关系,如下

image-20210116105352193
在这里插入图片描述

参考第二章

关系
关系是n个域上的一个n元组的集合表是关系的“二维”呈现
关系中属性的次序和元组的次序都是任意的在表中各列从左到右是有序的,各行从上到下也是有序的
关系中不能有相同的元组(行)[但是可以属性值可以相同,比如指导老师和学生都叫李亮]在表中,可能包含重复的行

候选键,主键和外键

候选键:能唯一 标识一个元祖的 最小属性集

如果有多个候选键,可以选择一个作为主键

如果仅一个候选键,且候选键就是关系所有的属性,称为全键

包含候选键的属性集称为超键;

构成候选键的每个属性(候选键的每个属性)都是主属性,其他都是非主属性

外键:关系R的一个属性(集)F与关系S的主键KS对应,对应即取值相对应,称该属性(集)F是关系R的外键

image-20210116111051283
  1. 外键不一定要与相应主键同名;如果属于不同的关系(表),往往取相同的名字
  2. 外键与相应主键必须有相同的域,即属性值的数据类型要完全一致
image-20210116111230182

例:在关系模式EMP(职工号,姓名,年龄,技能)中,假设职工号唯一,每个职工只能申报一项技能,则EMP表的主键是( )。

A.职工号 B.姓名,技能 C.技能 D.职工号,技能

正确答案:A你错选为D

完整性约束

实体完整性[主属性不能为空]

如果属性A是关系R(表R)的主属性,则A不能为空值(null)

参照完整性[外键完整]

该属性(集)F是关系R的外键

该属性(集)F取值只有两种:

  • 取空值
  • 等于某个KS 的值

用户自定义的完整性

  • 属性类型约束:年龄取整数

  • 属性值的范围:成绩

  • 同一关系的不同元祖进行约束:不允许出现姓名相同的人

  • 同一关系的各种属性:工资=绩效+· 等等

关系代数

代数:操作运算符(±*/)+原子操作数

关系代数:基于一组以关系为惭怍对象的运算符+原子操作数(理解为一行数据)

传统集合运算【二目运算】:并、交、差,笛卡尔积

专门关系运算:投影、选择、连接、除

五种基本操作(可扩展得到其他)并、交、笛卡尔积、投影、选择

并∪、交∩、差-

相容关系:定义在一组相同域上的不同关系:

  • 关系名可以不同,属性名也可以不同,但是**必须具有相同个数的属性**

  • 两个关系(表)具有相同的目(列),且相应属性取值属于同一个域

并、交、差都属于相容关系

并:用关系代数的基本运算表示为R∪S={t|t∈R∨t∈S} 重复元组舍弃

差:以用关系代数的基本运算表示为R-S={t|t∈R∨t∉S} R-S表示在R中但是不在S中

交:用关系代数的基本运算表示为R∩S={t|t∈R^t∈S}=R-(R-S)

例:将王玲的所在系改为数学系:

(S1-{(‘S01’ ‘王玲’ ‘’ ‘女’)})∪{(‘S01’ ‘王玲’ ‘数学’ ‘女’)}

投影π、选择σ

image-20210116145706303

投影:一元的,对属性[列]进行操作的运算;从关系中选取若干属性列重新组合新的关系

  1. 查询所有学生的学号、姓名:π学号,姓名(学生)

选择:一元的,对元祖[行]进行操作的运算;从关系中选取满足给定条件的元祖

  1. 选择所在系属性值为‘计算机’的元组:σ所在系=“计算机”(学生)

  2. 查询计算系学生的姓名:π姓名(σ所在系=“计算机”(学生))

  3. 查询2000-01-01以后出生的学生姓名:π姓名(σ出生时间>“2020-01-01”(学生))

  4. 查询没选修课程编号为“C02”的学生学号:π学号(选课)-π学号(σ课程编号=“c02”(选课))

σF®的R:由基本逻辑表达式组成:其中运算符包括< > = 小于等于 大于等于 不等于 与或非

注释:一元:对一个关系进行操作

广义笛卡尔积R x S

R是m目,S是n目,RxS得到的m+n目,共有k1*k2个元祖

如果有重名属性,则进行更名

连接∞

​ R ⋈AθB S=σF(R×S) R⋈A𝛉B S = σR.A𝛉S.B (RXS) 【R.A𝛉S.B即条件】

​ A和B分别是R和S上列数相等且可以比较的属性组(列),θ是运算符,如><,连接运算时从R和S的笛卡尔积上选取R关系在A属性组的值 与 S关系中B 的属性值 满足运算关系的元祖

可以理解为在笛卡尔积运算的基础上,进行选择运算就是连接

连接和自然连接

等值连接:比较的关系必须是A=B,即选取A和B的值相等的元祖

自然连接:必须是同名的属性组,在结果中去除重复的列

在自然连接时【例如S08没有对应的】,不能和另一个关系的任何元组进行连接,称为悬浮元组

外连接

自然连接后:

1.如果把左右连接的悬浮元组都保存下来就是完全外连接

2.如果把左连接的悬浮元组保存下来就是左外连接

3.如果把右连接的悬浮元组保存下来就是右外连接

左(右)外连接:得到R和S的连接表后,查看左(右)表的剩余元素,补充上,无属性值赋予NULL

image-20210116135511755

举例:学校数据库中有学生和宿舍两个关系:

​ 学生(学号,姓名) 宿舍(楼名,房间号,床位号,学号)

假设有的学生不住宿,床位也可能空闲。如果要列出所有学生住宿和宿舍分配的情况,包括没有住宿的学生和空闲的床位,则应执行–全外连接

重命名ρ

关系(表)的自身连接 或者具有相同属性时的笛卡尔积计算 时,

有相同的字段需要区分,则对表进行重命名 ρs® s就是表的名字

image-20210116142339936

除÷

前提:

  • 前提:R中的属性包含S中的所有属性
  • R÷S的属性由R中那些不出现在S中的属性组X所组成
  • R÷S的结果T元祖 + S 的元祖 都在R中

上例子:查询选修全部课程的学生

​ R选课(学号,姓名,课程名) S课程(课程名)

​ π姓名® X S 得到的是假设每名学生选择了所有课程

①π姓名® X S - R 得到没有选修全部课程的 姓名+课程

②π姓名®-π姓名(π姓名® X S - R)得到结果

R÷S=π姓名®-π姓名(π姓名® X S - R)

像集:本质上是一次选择行的运算和一次选择列的运算。

求x1在表A中的象集,就是先选出所有x属性中x=x1的那些行,然后选择出不包含x1的那些列。

检查各个X在Y上的像集Yxi是否包含S

举例:

查询选修了全部课程的学生学号

​ 第一种方法: 选课÷ 课程编号(课程) ×[错误,不符合除运算的前提]

​ 第二种方法: π学号,课程编号(选课)÷ 课程编号(课程)√

举例:

基于教学视频中的学生选课数据库,能正确查询出“数学系学生都学的课程的课程编号”的关系代数表达式是( π学号,课程号(选课) ÷π学号(σ所在系=‘数学’(学生)) )

基于教学视频中的学生选课数据库,能够正确查询“所有学生都选修的课程的课程编号”的关系代数表达式是( π学号,课程号(选课) ÷π学号(学生) )。

关系演算

1.将数理逻辑中的谓词演算推广到关系运算中,用谓词演算表达操作

2.关系是一个集合,因此可以用集合描述法建立谓词与关系之间的描述

3.用谓词表示关系,可用关系的谓词演算来表达关系的操作,把对关系的谓词演算的集合描述形式称为关系演算表达式


注:阅读以下内容:元组可以理解为关系(表)中一个数据,元组所有变量构成一个数组t[i]表示元组(数据)的第i个属性-------

在元组关系演算系统中,称 {t|Φ(t)} 为元组演算表达式。

其中 t 是元组变量, Φ(t) 为元组关系演算公式,简称公式。
它由原子公式和运算符组成。

原子公式有三类:

(1) R(t) R 是关系名, t 是元组变量。 R(t) 表示 t 是 R 中的元组。关系 R 可表示为: {t|R(t)}

(2) t[i] θ u[j]

​ θ 是算术比较运算符。 t[i] θ u[j] 表示断言 “ 元组 t 的第 i 个分量(属性)与元组 u 的第 j 个分量满足比较关系 θ ” 。例如, t[2] < u[3] 表示元组 t 的第 2 个分量小于元组 u 的第 3 个分量。

(3) t[i] θ c 或 c θ t[i]
这里 c 是常量,该公式表示 “t 的第 i 个分量与常量 C 满足比较关系 θ” 。例如: t[4]=3 表示元组 t 的第 4 个分量等于 3 。

​ 在关系演算中定义了 “ 自由元组变量 ” 和 “ 约束元组变量 ” 的概念。这些概念和谓词演算中的概念完全一样。若公式中的一个元组变量前有 “ 全称量词 ” 或 “ 存在量词 ” ,则称该变量为约束元组变量,否则称自由元组变量。

公式可以递归定义如下:

(l) 每个原子公式是公式。

(2) 如果 Φ 1 和 Φ 2 是公式,则 Φ 1 ∧ Φ 2 、 Φ 1 ∨ Φ 2 、 ﹁ Φ1 也是公式。分别表示:

① 如果 Φ 1 和 Φ 2 同时为真。则 Φ 1 ∧ Φ 2 才为真,否则为假;

② 如果 Φ 1 和 Φ 2 中至少一个为真,则 Φ 1 ∨ Φ 2 为真, Φ 1 和 Φ 2 同时为假 才为假;

③ 如果 Φ 1 真,则 ﹁ Φ 1 为假。

(3) 若 Φ 是公式,则 ∃ t(Φ) 也是公式。其中符号 ∃ 是存在量词符号, ∃ t(Φ) 表示:
若有一个 t 使 Φ 为真,则 ∃ t(Φ) 为真,否则 ∃ t(Φ) 为假。

(4) 若 Φ 是公式,则 ∀ t( Φ ) 也是公式。其中符号 ∀ 是全称量词符号, ∀ t( Φ ) 表示:
如果对所有 t ,都使 Φ 为真,则 ∀ t( Φ ) 必为真,否则 ∀ t( Φ ) 为假。

(5) 在元组演算公式中,各种运算符的优先次序为:
① 算术比较运算符最高;
② 量词次之,且 ∃ 的优先级高于 ∀ 的优先级;
③ 逻辑运算符最低,且 ﹁ 的优先级高于 ∧ 的优先级, ∧ 的优先级高于 ∨ 的优先级;
④ 加括号时,括号中运算符优先,同一括号内的运算符之优先级遵循 ①②③ 各项。
(6) 有限次地使用上述五条规则得到的公式是元组关系演算公式,其他公式不是元组关系演算公式。


关系演算和关系代数在表达能力上是等价的 ,体现在五种基本操作

一个元组演算表达式 {t|Φ(t)} 表示了使 Φ(t) 为真的元组集合。
关系代数的运算均可以用关系演算表达式来表示 ( 反之亦然 ) 。下面用关系演算表达式来表示五种基本运算:

(1) 并 R ∪ S={t|R(t) ∨ S(t)}

(2) 差 R - S={t|R(t) ∧ ﹁ S(t)}

(3) 笛卡尔积 R×S={t (n+m) |( ∃ u (n) )( ∃ v (m) )(R(u) ∧ S(v) ∧ t[1]=u[1] ∧ … ∧ t[n]=u[n] ∧ t[n+1]=v[1] ∧ … ∧ t[n+m]=v[m])}

注: t (n+m) 表示 t 有目数 (n+m)

(4) 投影 π t1,t2,…,tk ®={t (k) |( ∃ u )(R(u) ∧ t[1]=u[i1] ∧ …t[k]=u[ik] )}

(5) 选择 σ F ®={t|R(t ∧ F}

​ 注: F 是公式。 F 用 t[i] 代替 运 算 对 象 i 得到的等价公式。

1.image-20210117171539506

4.

5.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值