Note01- 关系模型与形式化查询语言

形象来说,一个关系就一个 Table,关系模型用来处理 Table,它由三个部分组成:

关系的数据结构

关系数据库由表构成,每个表有唯一的名字,称之为关系 (Relation)

若干概念

由此可以得到关系的数学定义:

:::tip 定义

A1,A2,An 是值域为 D1,D2,,Dnn 个属性。具有属性 A1,A2,,An 的关系 R 是一个元组集合,其中,每个元组是一个映射的集合 {{A1}D1,,{An}Dn}

:::

性质

关系模式

我们把一个关系模式定义为:

关系模式也可以简记为 R(U)

完整性约束

若干概念

完整性约束分类

关系运算

关系代数

过程化查询语言。包括一个运算集合,这些运算的输入为若干个关系,输出为一个新的关系

基本运算:

:::caution 注意

在笛卡尔积运算中,关系 RS 的属性是不能相交的,如果关系 RS 的属性相交,则需要进行重命名

:::

元组关系演算

非过程化的查询语句

:::tip 定义

{t|P(t)}

:::

如,给定下列关系:

branch (branch_name, branch_city, assets)
customer (c_name, c_street, c_city)
account (account_number, branch_name, balance)
loan (loan_number, branch_name, amount)
depositor (c_name, account_number)
borrower (c_name, loan_number)

域演算

使用从属性域中取值的域变量,而不是整个元组的值

:::tip 定义

{<x1,x2,,xn>|P(x1,x2,,xn)}

:::

还是如上面的例子:

关系运算的安全性

如果一个关系运算系统不产生无限关系和无穷验证, 则这个运算是安全的

:::caution 元组关系和域关系演算不安全

关系代数系统是安全的,而元组关系演算和域关系演算系统不安全,如:

:::