在数据库领域,“映射”(Mapping)通常指的是将一种数据结构、模型或概念转换为另一种,以建立它们之间的对应关系。这种转换在数据库设计和操作的各个层面都至关重要,尤其与关系模型紧密关联。
以下是“映射”在数据库中及其与关系模型关联的几个主要方面:
-
概念模型到逻辑模型的映射 (E-R 图到关系模型的转换):
- 这是最直接也最核心的一种映射。E-R(实体 - 关系)模型是一种高层的抽象,用于在概念层面描述现实世界中的实体、属性和它们之间的关系 [3]。而关系模型是 DBMS(数据库管理系统)实际实现和操作的逻辑模型,由一系列二维表构成 [11]。
- 关联:在数据库设计过程中,需要将 E-R 图转换为关系模式(即关系模型中的表结构)。这个过程解决了如何将 E-R 图中的实体和联系转换为关系模式,并确定这些关系模式的属性和码(键) [4.1]。
- 具体映射规则 [4.1]:
- 实体集映射:E-R 图中的每个实体集通常映射为关系模型中的一个关系模式(表),实体集的属性映射为关系模式的属性(列),实体集的主键映射为关系模式的主键。
- 联系集映射:
- 1:1 联系:可以转换为一个独立的关系模式,或将其合并到参与联系的任一方实体集对应的关系模式中。
- 1:N 联系:可以转换为一个独立的关系模式,或将“1”方实体集的主键作为外键添加到“N”方实体集对应的关系模式中。
- M:N 联系:通常转换为一个独立的关系模式,该关系模式的主键由参与联系的实体集的主键组成。
- 多元联系(三个或更多实体间):通常转换为一个独立的关系模式,其主键由所有参与实体集的主键共同构成。
- 具有相同码的关系模式:在转换后,如果存在具有相同码的关系模式,它们可以被合并 [4.1]。
-
逻辑模型到物理模型的映射:
- 在关系模型确定后,还需要将其逻辑结构映射到物理存储结构上。这包括选择存取方法(如索引、聚簇、HASH)和确定数据在磁盘上的存放位置及存储结构 [5.1, 5.2, 5.3]。
- 关联:逻辑模型关注数据如何组织(表、列),而物理模型关注数据如何实际存储和访问(文件、块、索引等),以优化性能。
-
视图(View)到基本表的映射:
- 在关系模型内部,视图是一种虚拟的表,它不实际存储数据,而是由一个或多个基本表(或其它视图)通过查询定义而来 [35]。
- 关联:当用户查询视图时,DBMS 会将对视图的查询映射并转换为对底层基本表(或其它视图)的查询,从而获取所需的数据 [38]。虚拟视图不存储在数据库中,而物化视图是实际构建并存储的 [35]。
-
对象 - 关系映射(Object-Relational Mapping, ORM):
- 这是一种在应用程序开发层面的映射。当使用面向对象编程语言(如 Java、Python、C#)开发应用时,程序中的对象需要与关系数据库中的数据进行交互。
- 关联:ORM 工具提供了对象模型和关系模型之间的桥梁,允许开发者使用对象而非 SQL 语句来操作数据库。例如,程序中的一个
User
对象可以映射到数据库中users
表的一行,ORM 框架会自动处理对象属性到表列的读写转换。
-
函数依赖(Functional Dependency)作为一种数据内部映射:
- 在关系模型中,函数依赖(FD)
X -> Y
表示如果关系中的任意两个元组在属性集X
上取值相同,那么它们在属性集Y
上取值也必须相同 [2]。 - 关联:虽然函数依赖本身是一种约束,但它本质上描述了数据值之间的一种“映射”关系:
X
的值“决定”或“映射到”Y
的值。它是关系模式设计和范式理论(如 2NF、3NF、BCNF)的基础,通过这些理论来消除数据冗余和更新异常 [31, 34]。
- 在关系模型中,函数依赖(FD)
综上所述,“映射”在数据库,尤其是关系数据库中,是一个多层次、多维度的概念,贯穿于从高层抽象设计到底层物理实现,乃至应用程序交互的整个生命周期。它使得不同层面的数据表示和操作能够协同工作。