DBMS 中的关系模型

2025年5月14日 | 阅读10分钟

与分层或网络数据库系统相比,关系模型使得查询更加容易。E.F. Codd 于 1970 年开发了它。关系数据库被定义为一组独立的表,这些表通过每个相关表的某些公共字段相互链接。该模型可以表示为具有列和行的表格。每一行称为一个元组。每一列都有一个名称或属性。它在数据库技术中广为人知,因为它通常用于表示现实世界的对象及其之间的关系。如今,一些流行的关系数据库包括 Oracle、Sybase、DB2、MySQL Server 等。

关系模型术语

以下是关系模型的术语

关系
元组行,记录
属性列,字段
领域它由一组合法值组成
基数它包含行数
它包含列数
主键唯一标识符
外键用于引用另一个表的标识符

让我们结合示例逐一解释每个术语

示例:学生关系

Stu_NoS_NamePHONE_NO地址性别 (Gender)
10112Rama9874567891Islam ganjF
12839Shyam9026288936德里M
33289Laxman8583287182古尔冈M
27857Mahesh7086819134GhaziabadM
17282Ganesh9028939884德里M

关系(Relation):关系通常表示为表格,分为行和列。一个关系由多个记录组成。例如:学生关系,包含元组和属性。

元组(Tuple):关系中包含对应于属性的值的行称为元组。例如:在学生关系中有 5 个元组。

元组的值包含 (10112, Rama, 9874567891, islam ganj, F) 等。

数据项(Data Item):关系中最小的数据单位是单个数据项。它存储在行和列的交叉处,也称为单元格。例如:在学生关系中,10112、“Rama”等是数据项。

域(Domain):它包含一个属性可以取值的原子值集合。它可以显式地通过列出所有可能的值来完成,或者通过指定所有在该域中的值都必须确认的条件来完成。例如:性别属性的域是“M”(男性)和“F”(女性)的数据值集合。没有数据库软件能够完全支持域,通常只允许用户定义非常简单的数据类型,如数字、日期、字符等。

一个关系(表)中的一个以上的属性(列)可能从同一个域派生其值。例如:在学生关系中,我们添加了一个新列 Fath_name,其中包含一些值。现在,父亲的名字,即 Fath_name,可以与另一个学生的姓名(即 S_Name)相同。因此,所有名字都可以来自公共域。同样,在学生关系的情况下,同一个域可以用于 Home_Ph 属性(即住宅电话号码)和 Office_Ph 属性,后者表示父亲的办公室电话号码。域的其他一些例子是大学系的名称集合,如 Comp_Sc.、Economics、Physics 等。一周可能的值是星期一、星期二、星期三、星期四、星期五、星期六和星期日。它们构成了一个星期域。

域定义可以通过显式方式完成,即列出所有可能的值,或者通过指定该域的所有值应满足的条件。

属性(Attribute):关系模型中最小的数据单位是属性。它包含特定表中某一列的名称。每个属性 Ai 必须有一个域 dom(Ai)。例如:Stu_No、S_Name、PHONE_NO、ADDRESS、Gender 是学生关系的属性。在关系数据库中,任何行中的列条目都是单个值,仅包含一个项目。

基数(Cardinality):关系中随时拥有的总行数称为该关系的基数。例如:在一个学生关系中,该关系中的总元组数为 3,因此关系的基数是 3。关系的基数会随着时间的推移而变化,因为添加或删除了更多的元组。

度(Degree):关联的度称为关系中属性的总数。有一个属性的关系称为一元关系,有两个属性的关系称为二元关系,有三个属性的关系称为三元关系。例如:在学生关系中,属性的总数为 5,因此关系的度为 5。关系的度不会随着元组的添加或删除而随时间变化。

键(Keys):关系模型中的核心概念是键的概念。键是属性或属性的集合,它可以唯一地标识关系(表)中的特定元组(行)。

不同类型的键是

  • 主键
  • 外键
  • 候选键
  • 超键
  • 备用键
  • 复合键
  • 人工键

让我们看下面的员工关系示例。

Emp_IDE_NameE_AGEE_Qualification
1Ajeet Singh24M.C.A
2Aryan Manhas20B.C.A
3Mahesh Thakur40MTech
4Ratan Kumar22BTech
5Vimal Chabbra26M.C.A

在上面的示例中,Emp_ID 是主键,因为它不包含任何重复值。

让我们看下面的员工技能关系示例。

Emp_IDE_Skill
1Web technologies
2Frontend Developer
3UI/UX Developer
4Backend Developer
5数字营销

在上面的示例中,Emp_ID 和 E_Skill collectively 被称为主键,因为它们唯一地标识了一个元组。Emp_ID 属性被称为外键,因为它引用了 Employee Relation 的主键 Emp_ID。

关系实例(Relational instance):在关系数据库系统中,关系实例由有限的元组集合表示。关系实例不包含重复的元组。

关系模式(Relational schema):关系模式包含关系名称以及所有列或属性的名称。关系模式通常是静态的,不经常更改。

例如,添加一个属性来表示最初未存储在关系中的新信息并不经常发生。关系结构、其域规范以及对其可能施加的任何其他限制有时被称为关系的强度。它通常是静态的,除非关系的含义被更改以包含其他属性。例如,当定义关系时,列数在关系的持续时间内(表)保持不变。

我们通常对行执行插入、删除和更新操作,因此关系(表)中的行数必然会变化。当前的关系状态,代表给定时间仅有效的元组,称为关系的扩展(或状态)。

关系键(Relational key):在关系键中,每一行有一个或多个属性。它可以唯一地标识关系中的行。

关系属性

  • 关系中的每个属性只对应一个数据值,即它们不包含两个或多个值。
Relational Model in DBMS
  • 关系名称与其他关系不同。
  • 每个关系单元格包含恰好一个原子(单个)值
  • 每个属性都包含一个不同的名称
  • 属性域没有重要性
  • 元组没有重复值
  • 元组的顺序可以有不同的序列
  • 它还提供有关元数据的信息。

关系模型的优点

以下是关系模型的各种优点

  • 它提供了数据的抽象视图。它将物理结构与数据的逻辑结构分离。
  • 这种模型非常容易设计。表可以根据需要使用不同的属性。
  • 关系模型支持数据独立性。在关系数据库中,数据存储在表中,因此我们可以在不更改物理结构的情况下修改数据。
  • 关系数据库帮助用户使用查询语言来查询数据库。
  • 它比其他模型提供了更大的灵活性。
  • 通过移动敏感属性,我们还可以在特定表中的数据库安全控制和授权实现为单独的关系,并带有其授权控制。
  • 关系数据库帮助用户使用查询语言来查询数据库。
  • 关系模型包含简单的关系。在关系模型的背景下,已经开发了使数据库能免疫某些维护问题的特征。
  • 它适用于表示大多数现实世界的对象及其之间的关系。通过使用复合键,可以非常容易地实现关系,因此该模型持久化方法主导了市场。

关系模型的缺点

关系数据库的缺点大多数不是因为其缺陷,而是因为其实现方式,我们可以通过使用正确的設計技術和强制执行正確的數據庫標準來避免關係模型的缺點。以下是關係模型的各種缺點:

  • 关系模型的主要缺点是它们不支持二进制数据,例如:图像、文档、电子表格等。
  • 关系模型可以轻松适应新硬件,因此会产生大量硬件开销。
  • 关系数据库使用简单的逻辑表到物理结构的映射。
  • 这主要限制了性能,并允许面向对象管理系统等非关系系统在 CAD、CAM 等专用应用上表现更好。
  • 在关系模型中强制执行数据完整性很困难,因为没有一个硬件设备可以控制数据。
  • 关系模型适用于小型数据库,但不适用于复杂数据库,因为用户需要了解复杂的物理数据存储细节。因此,在设计数据库时,它们不会显现出来,可能会导致问题。当数据库增大时,它会减慢系统速度,并导致性能下降和数据损坏。

关系模型上的操作

以下是可以对关系模型执行的基本操作列表

  • 插入操作
  • 删除操作
  • 更新操作
  • 检索操作

让我们逐一解释每个操作。

书籍表

BID标题作者出版商价格
B1CAnshuman SharmaLPB175
B2C++Yashwant SinghBPB200
B3UNIXRobert WilliamTata250
B4JAVAHerbtPHI195

店主表

SID名称Ph_No城市
S1Ram Singh9874689014LPB
S2Mohan Kumar9674689014BPB
S3Ravi Singh9774689015Tata
S4Muskan kumari9574689017PHI

Book_Order 表

BIDSIdQty
B1S175
B2S220
B3S325
B4S495

插入操作(Insert operation):用于在表中插入新记录。与其他模型相比,向表中添加新记录要容易得多。例如:假设我们要插入一本新书 B5,与插入其他数据模型相比,可以轻松地将其插入表中。

  • 如果我们尝试为被选为主键的字段插入重复值。
  • 如果我们向包含主键的属性插入 NULL 值。
  • 如果我们尝试在包含的外键属性中输入一个在相应主键属性中不存在的数据值。
  • 如果一个属性被赋值为一个在相应域中不存在的值。

删除操作(DELETE operation):此操作用于从表中删除记录,但当要删除的行包含一些作为外键属性的属性时,就会出现问题。

例如:让我们举个例子,店主 S1 取消了他的订单 B3,那么我们就必须从 Book_order 关系中删除连接 S1 和 B3 的记录。这可以很容易地从 Book_order 表中删除,而不会影响店主 S1 和 Book B3 的详细信息。

更新操作(Update operation):用于修改或更改表中的记录数据值。更新一个既不是主键也不是外键的属性只需要检查新值是否是正确的数据类型和域。如果我们修改了主键和外键属性的数据值,则需要检查

  • 修改后的值不包含相应外键的值。
  • 新值不得已存在于表中。

检索操作(Retrieval operation):用于从关系中保存记录。此操作非常简单且同质。

让我们看以下两个示例查询

示例 1:查找所有订购特定书籍 B2 的店主。

查询

方法:在上面的查询中,首先,我们必须逐一搜索 BOOKS ORDER 关系的所有记录,然后打印订购了书籍 B2 的店主的值。

示例 2:查找被特定店主 S1 订购的所有书籍。

查询

方法:在上面的查询中,我们必须逐一搜索 BOOKS_ORDER 关系的所有记录,然后打印被店主 S1 订购的书籍的值。

关系模型常见问题解答

1. 什么是关系模型?

关系模型是一种清晰简单的模型,它使用表而不是图形或形状来表示关系。

2. 键在关系模型中的作用是什么?

键的基本作用是消除关系中的重复项,并唯一标识表中的行。

3. 列出关系模型中执行的各种操作类型?

  • 插入操作
  • 删除操作
  • 更新操作
  • 检索操作

4. 列出关系模型中属性的各种属性?

  • 唯一标识关系中每个元组的属性称为主键。
  • 允许为属性设置 NULL 值。
  • 可以对属性值施加限制。
  • 可以为属性指定默认值,如果未为属性指定其他值,则会自动插入该默认值。

5. 列出一些流行的关系数据库管理系统?

  • Oracle
  • Microsoft - SQL Server
  • DB2

下一主题DBMS 关系代数