数据库系统概论

关系数据模型

关系模型基础

  • 关系:数据以一张二维表格描述

  • 属性:关系的列,是关系特征的描述。

  • 模式:关系名和其属性的集合 movies(title, year,length, genre)

  • 元组:除属性行外,关系的每一行对应一个元组。

  • 域:属性的数据类型及取值范围。

关系的性质:

  • 不能出现相同的行
  • 不能出现相同的列名
  • 列是不可分割的最小数据项

    属性相同,属性域相同才可以进行并交差的运算,投影运算$\pi_{A_1A_2…A_n}(R)$从关系R中取出这些列生成一个新的关系(表),$\sigma_{c}(R)$从关系R中取出满足条件C的元组生成一个新的关系

关系代数

笛卡儿积运算:关系R和关系S的乘运算,记作R×S

关系R 关系S R×S
属性个数 i j i+j
元组个数 m n m×n
元组 r s <r,s>

image-20250220151755298

自然连接:R$\bowtie$S,需要有相同的部分

image-20250220153521415

$\theta$连接:关系R和关系S满足条件c的$\theta$连接表示为R$\bowtie_{c}$S

image-20250220153853953

    重命名:$\rho_{S}(A_1,A_2,\dots,A_n)(R)$对关系R进行重命名,拥有相同的元组,关系名字变成了S,各属性分别命名为$A_n$,如果属性名不变的话可写作$\rho_s(R)$

关系上的约束

    关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为关系的键(码)

sql里的主键(id),唯一标识

    一个关系中存在多个键,这些键统称为候选键,从候选键中选一个键作为关键的键,这个键被称为主键,候选键中的属性统称为主属性

完整性约束:

    若属性A是关系R的主键,则属性A不能去空值NULL

外键(外码)与参照关系:

    设F是关系R的一个或一组属性,G是关系S的键,F不是关系R的主键,如果FG,则称:

  • F是关系R的外键
  • 关系R为参照关系
  • 关系S为被参照关系

因此F的取值要么取空值即没有对应关系,要么等于某一个G的值

$$
\pi_{CNAME}([\rho_{SC1}(SC)\bowtie_{SC1.S井号=SC2.S井号and SC1.C井号 > SC2.C井号 }\rho_{SC2}(SC)]\bowtie_{SC1.S井号=s.s井号}S )
$$

$$
\pi_{name}(\sigma_{major=’softwarre engineering’}(Scholarship\bowtie_{Scholarship.studentid=Student.sid} Student))
$$

$$
\pi_{amount,year}(\sigma_{name=’Hu Xia’}(Scholarship\bowtie_{Scholarship.studentid=Student.sid} Student))
$$

$$
\pi_{name}([\rho_{S1}(Scholarship)\bowtie_{S1.studentid=S2.studentid ,and,s1.year > S2.year}\rho_{S2}(Scholarship)]\bowtie_{S1.studentid=Student.sid}Student )
$$

$$
\pi_{name}Student-\pi_{name}(Student\bowtie_{Scholarship.studentid=Student.sid}Scholarship)
$$

第三章 关系数据库设计理论

函数依赖

    如果关系R的两个元组在属性$A_1,A_2,\dots,A_n$上的值相同,那么它们必定在其它属性$B_1,B_2,\dots,B_n$上的值相同,记作$A_1,A_2,\dots,A_n->B_1,B_2,\dots,B_n$或$A=(A_1,A_2,\dots,A_n),B=(B_1,B_2,\dots,B_n)$,称作,A决定B,或者B依赖于A。$A->A$

A B A->B
相同 相同 成立
相同 不同 不成立
不同 相同 成立
不同 不同 成立

    如果$C->B,C->A$,那么$C->AB,C->ABC$成立

例题:

image-20250310160738240

image-20250310160938582

函数依赖的规则

image-20250310161624028

若两个FD集合S与T满足:

    关系的每个实例在满足T中依赖关系的同时也满足S中的函数依赖关系,称S蕴含于T,如果同时T也蕴含于S,那么S和T等价

例:T={A->B},S={A->$B_1$},则S蕴含于T

T={A->B},S={A->$B_1$,A->$B_2$},则T与S等价

FD集合推导规则

  • 若两个FD集合等价,用一个FD集合替换另一个FD集合
  • 从原有FD集合中推断出新的FD集合

    若$A_1A_2\dots A_n->B_1B_2\dots B_m$,等价于$A_1A_2\dots A_n->B_i$

    传递规则:设$A=[A_1A_2\dots A_n],B=[B_1B_2\dots B_m],C=[C_1C_2\dots C_k]$为关系R的属性集,若满足FD:A->B且B->C,则A->C成立

设$A=[A_1A_2\dots A_n],B=[B_1B_2\dots B_m],C=[C_1C_2\dots C_k]$:

  • 如果$B\subseteq A$,那么A->B,自反率,平凡依赖
  • 如果A->B,那么AC->BC,增广率,非平凡依赖
  • A->B且B->C,则A->C,传递依赖

一个FD集合S,与S等价的任何FD集合都称为S的基本集

若给定的基本集B满足:

  • B中所有FD的右边都是单一属性
  • 从B中任何一个FD中删除左边的一个属性或多个属性,B不再是基本集
  • 从B中删除任何一个FD,B不再是基本集

则称为最小基本集(最小基)

一个关系可能存在多个最小基本集

例题:

image-20250312195634130

image-20250312195644525

闭包及作用

    设$A=(A_1,A_2,\dots,A_n),B=(A_1,A_2,\dots,A_n,B_1,B_2,\dots,B_n)$都是关系R的属性集,S是R上的一个FD集,如果从S中可以推出A->B,称B是A的闭包,记作$A^+$

例题:

image-20250313152717641

image-20250313160813575

image-20250313161636854

image-20250313162023541

BC范式

关系模式R是BCNF的充要条件:R中每一个非平凡FD的左边是超键

如何分解BF范式

image-20250314133238259

例题:

image-20250314134324602

另一种分解

image-20250314134519579

BC范式分解结果不唯一

无损连接:指将一个关系模式分解为多个子关系模式后,通过自然连接等操作能够恢复成原来的关系模式,且恢复后的关系与原关系相比既不丢失信息,也不增加多余信息

表格法判断无损连接

image-20250314140256633

第三范式

关系R上的任一非平凡FD:A->B,满足A是超键或B由候选键中的属性组成

是BF范式一定是第三范式

例题
image-20250319200851637

表格法检验

image-20250319200935343

第一范式:关系的每个属性都是不能再分的

第二范式:关系R及R上的FD:X->Y,X->Y是完全非平凡FD,且不存在$Z\subset X$,使得Z->Y

范式对比

image-20250319225155562

ER模型

ER图

  • 实体集:矩形
  • 属性:椭圆形及指向实体集的连线
  • 联系:棱形及指向实体集的连线

概念设计

  • 忠实性
  • 避免冗余
  • 简单性
  • 选择正确的联系
  • 选择正确的元素种类

逻辑结构设计

转换规则:

  • 一个实体集转化成一个关系模式
  • 实体集的属性转化成关系的属性
  • 实体集的键转化成关系的键

一对一的联系

①单独转化成一个关系模式,关系的键为两个实体集的键的组合,联系的属性转化为关系的属性。

创建一个中间表,通过中间表进行相互索引

将联系与任意一端实体集所对应的关系模式合并,需要在该关系模式的属性中加入另一端实体集的键和联系本身的属性。

外键,通过这个键去索引另一个表

多对一的联系

通常是从多的那端添加外键去索引一,若一去索引多则会冗长

image-20250327154628780

多对多的联系

创建一个中间表进行索引

isa联系

image-20250327154640399

弱实体联系转化为关系

image-20250327154721513


数据库系统概论
http://2819461143wp.github.io/数据库系统概论/
作者
cwdp.sky
发布于
2025年2月19日
许可协议