Pixiv - KiraraShss
database-02-关系模型介绍
3199 字
16 分钟
database-02-关系模型介绍
数据库系统原理
关系模型介绍
2025
关系模型概述§2.0
关系模型由关系数据库、关系操作集合和关系完整性约束三部分组成
- 单一的数据结构——
关系(Relation)- 实体和实体之间的联系都用关系描述
- 关系操作
- 特点:一次一集合
- 语言:关系代数、ALPHA、元组关系演算、QBE、SQL…
- 三类完整性约束
- 实体完整性
- 参照完整性
- 用户定义完整性
关系数据库的结构(Structure)§2.1
直观概念,非形式化定义
关系(Relation)
对应不可分的简单二维表
| 学号 | 姓名 | 年龄 | 性别 | 系 |
|---|---|---|---|---|
| 2005004 | 王小明 | 19 | 女 | 社会学 |
| 2005006 | 王小明 | 20 | 男 | 商品学 |
| 2005008 | 王小明 | 18 | 女 | 法律 |
| …… | …… | …… | …… | …… |
| 职工号 | 姓名 | 工资 | 职称 | |
|---|---|---|---|---|
| 基本 | 津贴 | |||
| 86051 | 张三 | 2048 | 1024 | 工程师 |
| …… | …… | …… | …… | …… |
元组(Tuple)
表中的一行即为一个元组
| 学号 | 姓名 | 年龄 | 性别 | 系 |
|---|---|---|---|---|
| 2005004 | 王小明 | 19 | 女 | 社会学 |
| 2005006 | 王小明 | 20 | 男 | 商品学 |
| 2005008 | 王小明 | 18 | 女 | 法律 |
| …… | …… | …… | …… | …… |
属性(Attribute)
表中的一列即为一个属性
| 学号 | 姓名 | 年龄 | 性别 | 系 |
|---|---|---|---|---|
| 2005004 | 王小明 | 19 | 女 | 社会学 |
| 2005006 | 王小明 | 20 | 男 | 商品学 |
| 2005008 | 王小明 | 18 | 女 | 法律 |
| …… | …… | …… | …… | …… |
码(Key)
表中的某属性组,它可以唯一确定一个元组
| 学号 | 姓名 | 年龄 | 性别 | 系 |
|---|---|---|---|---|
| 2005004 | 王小明 | 19 | 女 | 社会学 |
| 2005006 | 王小明 | 20 | 男 | 商品学 |
| 2005008 | 王小明 | 18 | 女 | 法律 |
| …… | …… | …… | …… | …… |
域(Domain)
属性的取值范围
| 学号 | 姓名 | 年龄 | 性别 | 系 |
|---|---|---|---|---|
| 2005004 | 王小明 | 19 | 女 | 社会学 |
| 2005006 | 王小明 | 20 | 男 | 商品学 |
| 2005008 | 王小明 | 18 | 女 | 法律 |
| …… | …… | …… | …… | …… |
分量
元组中的一个属性值(联系矢量概念)
| 学号 | 姓名 | 年龄 | 性别 | 系 |
|---|---|---|---|---|
| 2005004 | 王小明 | 19 | 女 | 社会学 |
| 2005006 | 王小明 | 20 | 男 | 商品学 |
| 2005008 | 王小明 | 18 | 女 | 法律 |
| …… | …… | …… | …… | …… |
关系模式(型):对关系的描述
关系名(属性1,属性2,……,属性n)
| 学号 | 姓名 | 年龄 | 性别 | 系 |
|---|---|---|---|---|
概念总结
关系(Relation):对应不可分的二维表元组(Tuple):表中的一行即为一个元组属性(Attribute):表中的一列即为一个属性码(Key):表中的某属性组,它可以唯一确定一个元组域(Domain):属性的取值范围分量:元组中的一个属性值(联系矢量概念)关系模式(型):对关系的描述关系名(属性1,属性2,……,属性n)
关系模式(Relation Schema)§2.2
关系模型-形式化定义(Formal Definition)§2.2.0
域(Domain)
域是具有相同数据类型的值的集合
笛卡儿积(卡氏积Cartesian Product)
给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡儿积为: 其中每一个元素称为一个n元组(n-tuple),元素中的每个值di称为一个分量- 例:
D1={大,中,小},D2={红,绿}
D1×D2={(大,红),(大,绿),(中,红),(中,绿),(小,红),(小,绿)}
D2×D1={(红,大),(绿,大),(红,中),(绿,中),(红,小),(绿,小)}
笛卡儿积不满足交换律,D1×D2≠D2×D1;即笛卡儿积中元素(元组)的各分量是有序的。基数:
若为有限集,其基数为,则的基数为:
关系(Relation)
- 定义
- 的任意子集叫做在域D1,D2,… ,Dn上的关系,可记做:
R(D1,D2,… ,Dn),R为关系名,n是关系的目或度(degree)注意: 这里的“子集”是“任意子集”,包括空集 单元关系(Unary relation)和二元关系(Binary relation):目n=1和n=2的关系- 笛卡儿积不满足交换律,而关系通过给关系的列附加属性名的方式取消元组各分量的有序性
- 关系可以是无限集。通常在关系数据模型中限定关系为有限关系
- 的任意子集叫做在域D1,D2,… ,Dn上的关系,可记做:
属性(Attribute)
构造笛卡尔积的域可以重复,意味着关系中的一个元素(元组)的两个不同分量可能来自同一个域,无法通过其来自的域区分是哪个分量。为了区分,为元组的分量(列)取不同的名字 ,即属性。n目关系有n个属性。- 基本关系六性质(三列两行一分量)
- 列是同质的(来自同一个域)
- 不同列可出自同一个域,每一列为一个属性,不同属性(列)给不同属性名
- 列的顺序可任意交换
- 任意两个元组不能完全相同
- 行(元组)的顺序可任意交换,即:关系是无序(
unordered)的 - 每一分量是不可分的数据项
属性的类型§2.1
- 某个属性所有允许值的集合称为属性的域(
domainof the attribute) - 属性的值一般要求是“
原子的”(atomic),即不可分割 - 有个特别的值:
null,所有的域中都有这个成员(参见:什是空值(null))- null 值会导致许多操作定义复杂化
关系模式/Relation Schema
关系模式是对关系的描述(是对型的描述)。需描述元组集合的结构:由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系
- 关系模式的符号表述:
为关系名、为组成该关系的属性名集合、为属性组U中属性所来自的域的集合、为属性向域的映象集合、为属性间数据的依赖关系集 - 通常可以简记为: 或
其中R为关系名,A1,A2, …,An为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度
模式(schema)与实例(instance) - 关系/Relation
- 关系是关系模式的
实例(instance),是关系模式在某一时刻的状态或者内容- 关系是同型元组的无序集合
- 关系r的一个成员t是一个元组(tuple),对应简单二维表里的一行
- 关系模式是静态稳定的,而关系是动态时变的
- 关系模式定义了元组的语义
- 一个n目谓词
- 使该n目谓词为真的笛卡尔积中的元素的全体构成该关系模式中的关系
码(Key)§2.3
有关系模式:
超码(superkey) 令 ,如果确定了中各属性的值就能够在的每个可能关系中标记出的唯一元组(或确定中无此元组),则是的超码候选码(Candidate key)
如是的超码,而其真子集不是超码,则称属性组为该关系的一个候选码主码(Primary key)
一个关系可能有多个候选码,则选定其中一个作为主码主属性(Prime attribute)
包含在任何候选码中的属性非主属性(Nonprimary attribute)
不包含在任何候选码中的属性,又称:非码属性(None-key attribute)全码(All-key)
关系模式的所有属性组构成此关系模式的唯一候选码
关系模型 - 完整性(Integrity)约束条件§2.3
- 实体完整性(Entity Integrity)
- 参照完整性(Reference Integrity)
- 用户定义完整性(Custom Integrity) 其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性
什么是空值(null)
- 盘古、上帝、自然数和零
- 0:什么都没有
- NULL
- C++中的null和0
- 什么都不是和什么都是的null
- “说似一物即不中”
实体完整性(Entity Integrity)
候选码是关系中元组的值标识,所以同一关系中候选码取值不能重复- 若属性是关系模式的主属性,则属性不能取空值
注意:实体完整性约束规定候选码的所有属性都不能取空值,不仅是候选码整体不能取空值工程实践中实体完整性约束常采用“主码中的属性”参照完整性(Reference Integrity)
- 引用
现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系之间的引用- 例1:
- 学生(学号,姓名,性别,专业号,年龄)
- 专业(专业号,专业名)
- 例2:
- 学生(学号,姓名,性别,年龄)
- 课程(课程号,课程名)
- 选修(学号,课程号,成绩)
- 例1:
外码(Foreign Key)
有关系模式 ,令 ,如果与关系模式的主码相对应,则称是的外码,并称为参照关系(Referencing relation),为被参照关系(Referenced relation)或目标关系(Target relation)。关系和可以是同一个关系- 例:学生(学号,姓名,性别,年龄,同桌学号)
- 外码不一定与对应主码同名
- R与S不一定是不同的关系
- 例:学生(学号,姓名,性别,年龄,同桌学号)
参照完整性若是关系模式的外码,被参照关系为,则的实例中每个元组在上的值必须- 或者取空值(的每个属性值均为空值)
- 或者等于实例中某个元组的主码值
用户定义的完整性(User-defined Integrity)§2.3.0
- 实体完整性和参照性适用于任何关系数据库系统。除此之外,不同的关系数据库系统
根据其应用环境的不同 ,往往还需要一些特殊的约束条件 。 用户定义的完整性 就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。- 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能
数据库模式(DB Schema)
一个数据库包含若干关系,
如学校管理数据库中包含信息:instructor 、student、advisor……
- 糟糕的设计:
univ (instructor-ID, name, dept_name, salary, student_Id, ..)
导致- 重复信息(例如,两个学生有同一个教师)
- 需要空值(例如,表示没有顾问的学生)
- 规范化理论(第8章) 讲解如何设计“良好”的关系模式
关系查询语言/Relational Query Languages§2.5
过程化(Procedural) vs.非过程化(Non-procedural)- 非过程化又被称为
声明式(declarative)
- 非过程化又被称为
- “纯” 语言:
- 关系代数/Relational algebra
元组关系演算/Tuple relational calculus域关系演算/Domain relational calculus
- 关系运算符(Relational operators)
关系模型-数据操作/存储模式/优劣§2.0
- Operations
- 一次一集合方式:只需指出“What to do”,而非关模型中需要告诉系统“How to do”。
- Storage Schema(Physical Level Schema)
- 表代表所有实体及其联系
- 物理存储方式极其灵活
- Good & Bad
- 严格的数学基础
- 概念单一,结构简单清晰
- 存取路径对用户透明
- 查询效率偏低
简化的选课数据库,后续用于举例
[课程表:Cou( Cno, Cname, Cpno, Ccredit )]
|课程号|课程名|先行课|学分|开课系|
| Cno | Cname | Cpno | Ccredit | dept |
|---|---|---|---|---|
| 1 | 数据库 | 5 | 4 | CS |
| 2 | 数学 | 2 | MA | |
| 3 | 信息系统 | 1 | 4 | IS |
| 4 | 操作系统 | 6 | 3 | CS |
| 5 | 数据结构 | 7 | 4 | CS |
| 6 | 数据处理 | 2 | IS | |
| 7 | C++语言 | 6 | 4 | CS |
[学生表:Stu( Sno, Sname, Ssex, Sage, dept )]
|学号|姓名|性别|年龄|所属系|
| Sno | Sname | Ssex | Sage | dept |
|---|---|---|---|---|
| 95001 | 李勇 | 男 | 20 | CS |
| 95002 | 刘晨 | 女 | 19 | IS |
| 95003 | 王敏 | 女 | 18 | MA |
| 95004 | 张立 | 男 | 19 | IS |
[选课表:SC( Sno, Cno, Grade )]
|学号|课程号|成绩|
| Sno | Cno | Grade |
|---|---|---|
| 95001 | 1 | 92 |
| 95001 | 2 | 85 |
| 95001 | 3 | 88 |
| 95002 | 2 | 90 |
| 95002 | 3 | 80 |
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
database-02-关系模型介绍
https://meteorfate-github-io.pages.dev/posts/02-关系模型介绍/ 相关文章 智能推荐
1
database-03-SQL介绍
database lue
2
database-06-形式化关系查询语言
database lue
3
database-01-引言
database lue
4
Firefly 代码块示例
文章示例 在Firefly中使用表达性代码的代码块在 Markdown 中的外观。
5
Firefly 布局系统详解
博客指南 深入了解 Firefly 的布局系统,包括侧边栏布局(左侧/双侧)和文章列表布局(列表/网格),以及自适应网格列数。
随机文章 随机推荐