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):用户自定义的数据约束,如属性列取值范围、取值类型、取值唯一性等
约束 描述 关键字
非空约束 限制该字段的数据不能为 null NOT 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 $,笛卡尔积的逆操作

Author

Efterklang

Posted on

2024-03-08

Updated on

2024-09-18

Licensed under

Comments