关系数据模型

数据模型

数据模型的不同层次

  1. 概念模型(Conceptual Data Model,CDM)
    • 面向现实世界建模
    • 主要用来描述现实世界的概念化结构,与具体DBMS无关
  2. 逻辑模型(Logical Data Model,LDM)
    • 面向用户建模
    • 用户从数据库所看到的数据模型;
  3. 物理模型(Physical Data Model,PDM)
    • 面向具体的DBMS,面向机器
    • 描述数据在存储介质上的组织结构

数据模型的三要素、

  1. 数据结构
    与数据类型、内容、性质有关的对象,如关系模型中的域、属性、关系等 与数据之间联系有关的对象。数据结构是对系统静态特征的描述。
  2. 数据操作
    指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。数据库主要有检索和更新(包括插入、删除、修改)两大类操作。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)及实现操作的语言。数据操作是对系统动态特性的描述。
  3. 数据的约束条件
    一组完整性规则的集合。

数据模型的发展过程:从层次模型到网状模型

image-20240615101511936 image-20240615101549228

关系模型

关系实例

  • 由命名的若干列和行组成的表格。一般地,关系指代实例。
  • 关系中的行称为元组
  • 关系实例中元组的数目称为基(Cardinality)。
  • 元组的次序是无关紧要(关系是元组的集合)。

关系模式(Relation Schema)

  • 包括:关系名、属性的名字及相关联的域名、完整性约束

  • 关系必须是规范化的,满足一定的规范条件

  • 最基本的规范条件(第一范式,1NF):关系的每一个分量必须是一个不可分的数据项,即不能表中有表。

    image-20240615101811066

关系数据库

关系数据库是关系的有限集合。关系数据库也是由两部分组成:关系模式的集合及对应的关系实例的集合。

  • 关系模式的集合称为数据库模式
  • 对应的关系实例的集合称为数据库实例

数据结构

关系(Relation)是笛卡尔积的一个有意义的子集

  • 是一张二维表

  • 每个关系都有一个关系名。

  • 二维表存放两类数据:实体本身的数据,实体之间的联系

    image-20240615102150066
  1. 元组(Tuple) :表中的一行,表示一个实体,关系是由元组组成的。
  2. 属性(Attribute) :表中的每一列在关系中称为属性,每个属性都有一个属性名,属性值则是各元组属性的取值;
  3. 域(Domain)属性的取值范围称为域。同一属性只能在相同域中取值。例如,性别属性“Psex”的域为“男”和“女”
  4. 分量(Component) :元组中的一个属性值。
  5. 键(Key) :关系中能唯一区分不同元组的属性或属性组合,关键字的属性值不能取“空值”——实体完整性规则。
  6. 候选健(Candidate Key)
    凡在关系中能够唯一区分确定不同元组的属性或属性组合,称为候选健。关系中能够成为关键字的属性或属性组合可能不是唯一的。包括在候选键中的属性成为主属性,不包括在候选键中的属性称为非主属性。
  7. 主键(Primary Key,PK)
    当一个关系中有多个候选健的时候,从中选定一个作为关系的主键。关系中主键是唯一的。每个关系中有且只有一个主键。
  8. 外键(Foreign Key,FK)
    关系中某个属性或属性组合并非该关系的键,但却是另一个关系的主键,称此属性或属性组合组合为本关系的外键。
    关系模式(Relation Schema)
    对关系的描述称为关系模式,其格式为:
    关系名(属性名l,属性名2,…,属性名n)
    例如:患者(编号,姓名,性别,年龄)

数据操作

关系数据操作包括两类:

  1. 查询
  2. 更新 (插入、删除和修改 )

用户可以通过关系语言来完成对数据的各种操作,关系语言特点是高度非过程化,即用户只需说明“做什么”而不必说明“怎么做”。

数据约束

关系数据约束:

  1. 数据模型中固有的约束,如元组不能重复。
  2. 可以在数据模型的模式中直接表述的约束,如数据定义语言(DDL)中指定的完整性约束。
  3. 不能在数据模型的模式中直接表述的约束,由应用程序表示和执行。

特点

关系数据模型的优点:

  • 关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。
  • 数据结构简单、清晰。
  • 更高的数据独立性,更好的安全保密性。
  • 丰富的完整性。

关系数据模型的缺点:

  • 对“现实世界”实体的表达能力弱。
  • 由于存取路径对用户透明,查询效率往往不如非关系数据模型。
  • 关系模型只有一些固定的操作集。
  • 不能很好的支持业务规则。

性质

  1. 有一个关系名,并且跟关系模式中所有其他关系不重名;
  2. 每一个单元格都包含且仅包含一个原子值;
  3. 每个属性都有一个不同的名字(指同一关系中);
  4. 同一属性中的各个值都取自相同的域;
  5. 各个元组互不相同,不存在重复元组;
  6. 属性的顺序并不重要;
  7. 理论上讲,元组的顺序并不重要。

关系的操作

关系的操作本质上是对集合的操作 ,操作的对象与结果都是集合。
一次一集合(set at a time)。

  • 查询:选择、投影、连接、除、并、交、差
  • 数据更新:插入、删除、修改

并运算:所有至少出现在两个关系中之一的元组集合。
$$
R\cup S ={ t | t\in R \vee t\in S }
$$
两个关系R和S若进行并运算,则它们必须是相容的

  • 关系R和S必须是同元的,即它们的属性数目必须相同。

  • 语义是一致的

  • R的第i个属性的域必须和S的第i个属性的域相同

    image-20240615103841461

交运算:结果仍为n目关系,由既属于R又属于S的元组组成,记为:
$$
R\cap S ={ t | t\in R \wedge \ t\in S }
$$
image-20240615103919014

差运算:设关系R和S具有相同的关系模式,。且它们相容,R和S的差是由属于R但不属于S的元组构成的集合,记为:
$$
R-S ={ t | t\in R \wedge t\notin S }
$$
image-20240615104034728

笛卡尔积:两个分别为n目和m目的关系R和S的笛卡尔积是一个 (n+m)列的元组的集合。
元组的前n列是关系R的一个元组,后m列是关系S的一个元组。
若R有k1个元组,S有k2个元组,则关系R和关系S的笛卡尔积有k1×k2个元组。
$$
R\times S = {t_r \cap t_s | t_r \in R \wedge t_s \in S }
$$
image-20240615104329145

选择运算:从关系中找出满足给定条件的所有元组称为选择。
经过选择运算得到的结果可以形成新的关系,其关系模式不变,但其中元组的数目小于或等于原来的关系中的元组的个数,它是原关系的一个子集。
$$
\sigma_F(R)={t | t\in R , F(t) = True }
$$
image-20240615104445241

投影运算:从关系中挑选若干属性组成的新的关系,投影的结果中要去掉相同的行。垂直方向抽取元组
$$
\Pi_A(R) = { t[A] | t\in R } , A\subseteq R
$$
image-20240615104615392

条件连接(q连接):A,B为R和S上度数相等且可比的属性列, 为等号时称为等值连接
$$
R \mathop{\bowtie} \limits_{A=B} S = { \widehat{rs}|r\in R\wedge s\in S\wedge r[A] \Theta s[B]}
$$
image-20240617084635644

自然连接:从两个关系的广义笛卡儿积中选取在相同属性列B上取值相等的元组,并去掉重复的行。n\自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。
$$
R\infty S=:{:\widehat{\mathrm{rs}}:|:\mathrm{r\in R}:\wedge:\mathrm{s\in S}:\wedge:\mathrm{r}[\mathrm{B}]=s[\mathrm{B}]:}
$$
image-20240617085049015

左连接(Left Join)
R左连接S:所有来自R的元组和那些连接字段相等处的S的元组。
右连接(Right Join)
R右连接S:所有来自S的元组和那些连接字段相等处的R的元组。

image-20240617085104678

关系数据库的语言

image-20240615103207000

关系的完整性

关系模型的完整性规则是对关系的某种约束条件,保证数据库中数据的正确性和一致性,三类完整性约束如下:

  • 实体完整性:主码不能取空值
  • 参照完整性:通过外码实现,避免孤子记录
  • 用户定义的完整性:各类商业规则

实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。