DBMS 中的关系模型是一个抽象模型,用于组织和管理存储在数据库中的数据。它将数据存储在二维相互关联的表中,也称为关系,其中每行表示一个实体,每列表示实体的属性。
在本文中,我们将探讨数据库管理的关系模型、它的重要性以及我们日常生活中的各种应用。
什么是关系模型?
数据库管理的关系模型是一种在逻辑上表示和管理存储在数据库中的数据的方法。在此模型中,数据被组织成二维相互关联的表(也称为关系)的集合。每个关系都是列和行的集合,其中列表示实体的属性,行(或元组)表示记录。
使用表来存储数据提供了一种直接、高效和灵活的方式来存储和访问结构化信息。由于这种简单性,此数据模型提供了简单的数据排序和数据访问。因此,它在世界范围内被广泛用于数据存储和处理。
让我们看一个场景来理解关系模型:
考虑一个案例,您希望存储特定班级所有学生的姓名、获得的 CGPA 和卷号。这些结构化数据可以很容易地存储在表格中,如下所述:
从上面的关系中我们可以注意到:
-
关系的任何给定行都表示学生,即表的行描述了一个真实世界的实体。
-
表的列指示与实体相关的属性。在本例中,为卷号、CGPA 和学生姓名。
关系模型概念
如前所述,关系数据库基于关系模型。该数据库由基于关系模型的各种组件组成。这些包括:
- 关系:用于存储数据元素集合的二维表。
- 元:关系的行,描绘真实世界的实体。
- 属性/字段:关系的列,描述定义关系的属性。
- 属性域:属性可以采用的预定义原子值集,即描述属性可以采用的合法值。
- 度:它是关系中存在的属性总数。
- 基数:它指定关系中涉及的实体数,即关系中存在的行总数。阅读有关 DBMS 中的基数的更多信息。
- 关系架构:它是关系的逻辑蓝图,即它描述了关系的设计和结构。它包含表名称、其属性及其类型:
TABLE_NAME(ATTRIBUTE_1 TYPE_1, ATTRIBUTE_2 TYPE_2, ...)
对于我们的学生关系示例,关系架构将为:
STUDENT(ROLL_NUMBER INTEGER, NAME VARCHAR(20), CGPA FLOAT)
突出:
- 关系是行(元组)和列(属性)的集合。
- 在关系中,元组描述真实世界的实体,而属性是定义关系的属性。
- 关系的结构由关系架构描述。
- 关系键用于唯一标识表中的行或确定两个表之间的关系。
关系模型中的约束
关系模型利用一些规则来确保数据的准确性和可访问性。这些规则或约束称为关系完整性约束。在对关系数据库中存在的数据执行任何操作(如插入、删除或更新)之前,会检查这些约束。这些限制包括:
- 域约束:它指定每个属性都绑定有一个位于特定值范围内的值。它是在属性域概念的帮助下实现的。
- 关键约束:它指出,每个关系都必须包含一个属性或一组属性(主键),这些属性可以唯一标识该关系中的元组。对于两个不同的元组,此键永远不能为 NULL 或包含相同的值。
- 参照完整性约束:它是在两个相互关联的表之间定义的。它指出,如果给定关系引用不同或相同表的键属性,则该键必须存在于给定关系中。
突出:
- 为了确保数据的准确性和可访问性,实施了关系完整性约束。
- 它包括域、键和引用完整性约束。
关系模型中的异常
当我们在使用关系数据库时注意到任何意外行为时,数据库中存储的数据中可能存在过多的冗余。这可能会导致 DBMS 出现异常,并且可以有多种类型,例如:
-
插入异常:由于缺少其他数据,无法在数据库中插入数据。例如:假设我们将整个类划分为一个项目的组,并且定义了 GroupNumber 属性,以便不允许 null 值。如果新学生被录取到班级,但未立即分配到组,则无法将该学生插入数据库。
-
删除异常 -它是在删除任何其他数据元素时数据库中的数据意外丢失。例如:假设我们有一个员工关系,其中包含员工的详细信息以及他们所在的部门。现在,如果一个部门有一名员工在其中工作,而我们从表中删除了该员工的信息,那么与该部门相关的数据也会丢失。这可能会导致数据不一致。
-
修改/更新异常 -数据不一致是由数据库中的数据冗余和部分更新引起的。例如:假设在将数据更新到数据库时,输入了重复的条目。现在,如果用户没有意识到数据在更新后是冗余存储的,则数据库中将出现数据不一致的情况。
所有这些异常情况都可能导致意外行为和用户不便。这些异常可以在称为归一化的过程的帮助下消除。
突出:
- 关系数据库中的任何意外行为都可能由异常引起。
- 异常的发生主要是由于数据库中存在数据冗余。
- 异常有 3 种类型,即插入、更新和删除异常。
DBMS 中的 Codd 规则
关系模型的创建者 Edgar F. Codd 提出了 13 条规则,称为 Codd 规则,其中指出:
要使数据库被视为完美的关系数据库,它必须遵循以下规则:
- 基础规则 -数据库必须能够以关系形式管理数据。
- 信息规则 -存储在数据库中的所有数据都必须作为某个表单元格的值存在。
- 保证访问规则 -每个唯一的数据元素只能通过表名、主键值和列名的组合来访问。
- NULL 值的系统处理 -数据库必须支持 NULL 值。
- 活动在线目录 -数据库的组织必须存在于可由授权用户查询的联机目录中。
- 综合数据子语言规则 -数据库必须支持至少一种语言,该语言支持:数据定义、视图定义、数据操作、完整性约束、授权和事务边界。
- 查看更新规则 -所有视图在理论上和实践上都应该由系统更新。
- 关系级操作规则 -数据库必须支持高级插入、更新和删除操作。
- 物理数据独立性规则 -存储在数据库中的数据必须独立于可以访问它的应用程序,即存储在数据库中的数据不得依赖于任何其他数据或应用程序。
- 逻辑数据独立性规则 -数据的逻辑表示形式(表的结构)的任何更改都不得影响用户的视图。
- 诚信独立 -在数据库级别更改完整性约束不应反映应用程序级别的任何更改。
- 分销独立性 -即使数据存储在多个位置或由多个最终用户使用,数据库也必须正常工作。
- 非颠覆规则 -使用低级关系语言访问数据不应能够绕过高级关系语言中表达的完整性规则和约束。
使用关系模型的优点
DBMS中的关系模型被广泛接受为标准的优点和原因包括:
- 简单易用 -与其他存储技术相比,将数据存储在表中更容易理解和实现。
- 可管理性 -由于关系数据库中每个关系的独立性,因此易于操作和管理。这样可以提高数据库的性能。
- 查询能力 -随着关系代数的引入,关系数据库可以通过 SQL 等高级查询语言轻松访问数据。
- 数据完整性 -通过引入和实现关系约束,关系模型可以保持数据库中的数据完整性。
使用关系模型的缺点
DBMS中关系模型的主要缺点发生在处理大量数据时,例如:
- 关系模型的性能取决于数据库中存在的关系数。
- 因此,随着表数量的增加,对物理内存的需求也会增加。
- 结构变得复杂,查询的响应时间缩短。
- 由于所有这些因素,实现关系数据库的成本会增加。
结论
- DBMS 中的关系模型是一种通过将数据存储在表中来逻辑表示和管理存储在数据库中的数据的方法。
- 关系、属性和元组、度数和基数、关系架构和关系实例以及关系键是关系模型的一些重要组件。
- 为了维护数据完整性,在关系模型中实现了域、键和引用完整性等约束。
- 数据中存在冗余可能会导致关系数据库中的插入、删除和更新异常。
- 一个完美的关系数据库遵循并实现所有 13 条科德规则。
- 由于使用了表和约束,关系模型易于使用、易于管理、提供数据完整性并且支持查询。
- 增加数据量可能会导致关系数据库的性能和存储问题。