ChⅡ-数据库关系模型

ChⅡ-数据库关系模型

关系及其基本概念 Relation and Basic Concepts

实体(entity)指包含有数据特征的事物对象在概念模型世界中的抽象名称。
关系(relation)指具有关系特征、用于存放实体数据的二维表。关系也常被称为关系表。

  • 表中每行存储实体的一个实例数据(record)
  • 表中每列包含实体的一项属性数据(attribute)
  • 表中单元格只能存储单个值
  • 不允许有重复的行列
  • 行列顺序可任意

在关系中,可以用来唯一标识元组的属性列,称为键(Key),其它属性列都为非键列。
复合键(Compound Key)指关系中用来唯一标识元组的多列作为键。例如(学号,课程号)作为学生选课表的复合键。
候选键(Candidate Key)关系中可能有多个列均适合作为键,将其中每个都称为候选键。例如(学号)和(身份证号)都可以作为学生表的候选键。
主键(Primary key)是关系表中最有代表性的一个候选键,每个关系表中只能定义一个主键。
代理键(Surrogate Key)采用 DBMS 自动生成的数字序列作为关系表的主键,可替代复合主键,以便获得更高性能数据访问操作处理。

关系模式语句中主键表示方法: RELATION_NAME(主键属性,属性 1,属性 2,…)

主键作用:

  • 唯一标识关系表的每个元组 tuple
  • 与关联表的外键建立联系,实现关系表之间连接
  • 数据库文件使用主键值来组织关系表的数据存储
  • 数据库使用主键索引快速检索数据

关系模型原理 Relation Model Principles

关系模型(Relation Model)——是一种基于二维表结构存储数据实体及实体间联系的数据模型。
集合运算操作包括选择(select)、投影(project)、连接(join)、交(intersection)、并(union)、差(difference)等。
专门针对元组的关系操作包括数据行插入(Insert)、 修改(Update)、删除(Delete)操作。

关系模型中的完整性约束 Integrity Constraint

完整性约束作用

  • 消除关系表的元组重复存储
  • 保持关联表的数据一致性
  • 实现业务数据规则

关系模型完整性约束

  • 实体完整性(Entity Integrity):保证关系中的每个元组都是可识别的和唯一的。 关系表中的主键列不允许为空值,不允许重复
  • 参照完整性(Referential Integrity):关系表中的外键列值必须是另一关系表中的主键列值,或者为空值
  • 用户定义完整性(User-defined Integrity):用户自定义的数据约束,如属性列取值范围、取值类型、取值唯一性等
约束描述关键字
非空约束限制该字段的数据不能为 nullNOT NULL
唯一约束保证该字段的所有数据都是唯一、不重复的UNIQUE
主键约束主键是一行数据的唯一标识,要求非空且唯一PRIMARY KEY
默认约束保存数据时,如果未指定该字段的值,则采用默认值DEFAULT
检查约束(8.0.1 版本后)保证字段值满足某一个条件CHECK
外键约束用来让两张图的数据之间建立连接,保证数据的一致性和完整性FOREIGN KEY

关系模型数据操作 Relation Model Data Operation

Select

选择 (Select):$\sigma_{p}(R) = {t | t \in R , \text{且} , p(t) , \text{为真}}$
$\sigma_F(table)$ 根据 F 的判断条件,对 table 表进行选择
等同于SELECT * FROM table WHERE F;例如$\sigma_{age<20>}(Student)$

Project

投影 (Project):$\pi_{A}(R) = {t[A] | t \in R}$
从 R 中选择出若干属性列组成新的关系
$\pi_{(Sname,Sgender)}(Student)$,等同于SELECT Sname,Sgender FROM Student

Join

连接 (Join):$R \bowtie S = {t | t \in R , \text{且} , t \in S}$
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
连接运算从 R 和 S 的广义笛卡尔积 R×S 中选取(R 关系)在 A 属性组上的值与(S 关系)在 B 属性组上值满足
比较关系的元组。

  • 条件连接 cross join
    $R \bowtie_{c} S = \sigma_c(R \times S)$
  • 等值连接 equi join
    $R \bowtie_{R.B=S.B} S = \sigma_{R.B=S.B}(R \times S)$
    条件连接的特例。从关系 R 与 S 的广义笛卡尔积中选取 A、B 属性值相等的那些元组等同于 SELECT * FROM R, S WHERE R.A = S.B
  • 自然连接(Natural join)
    自然连接是等值连接的特例,根据两个表中的所有相同属性列进行连接,连接后多个的相同属性列只保留一个
    SELECT * FROM R NATURAL JOIN S
  • 外连接(Outer join)
    外连接-自然连接的特例:自然连接只有相同属性列的值相同才返回,外连接中若有一方的行的共同属性列没有找到与之匹配的行,则也保留该行,以 NULL 填充。其可分为左外连接、右外连接、全外连接[DataBase03#外连接查询 Outer Join]

Others

交集 (Intersection):$R \cap S = {t | t \in R , \text{且} , t \in S}$

并集 (Union):$R \cup S = {t | t \in R , \text{或} , t \in S}$

差集 (Difference):$R - S = {t | t \in R , \text{且} , t \notin S}$

除操作 (Division):$R ÷ S $,笛卡尔积的逆操作

作者

Jiaxing Gao

发布于

2024-03-08

更新于

2024-10-19

许可协议

评论

}