E/R 图(实体 - 联系图)转换为关系模式(数据库表结构)的核心规则

从 E/R 图(实体 - 联系图)转换为关系模式(数据库表结构)的核心规则,是数据库设计中 "概念模型→逻辑模型" 的关键步骤。以下是详细拆解:

一、核心逻辑:E/R 图的元素如何对应数据库表

E/R 图的核心元素是实体(Entity)属性(Attribute)联系(Relationship),它们会被转换为数据库中的 "表(Relation)""列(Column)""外键(Foreign Key)"。

二、实体(Entity)的转换规则

实体对应数据库中的 ,实体的属性对应表的,但不同类型的属性有不同处理方式:

  1. 普通属性(单值、原子属性) :直接转为表的列,实体的主码(主键)对应表的主键。
    • 例:"Product(产品)" 实体→Product表,其属性 "产品 ID""名称"→Product表的列,"产品 ID" 作为主键。
  2. 复合属性 :拆分为多个原子属性(列)。
    • 例:"地址"(含省、市、街道)→拆为 "省份""城市""街道" 三列。
  3. 多值属性 :单独新建一个表,通过外键关联原实体表。
    • 例:"Product" 的 "标签"(一个产品可多个标签)→新建Product_Tag表,包含 "产品 ID(外键,关联 Product 表)""标签内容" 两列。
  4. 实体象形图(空间数据) :在 PostGIS 等空间数据库中,转为Geometry类型列(存储 WKB/WKT 格式的空间几何数据)。

三、联系(Relationship)的转换规则

联系的转换取决于其基数(1:1、1:N、M:N),核心是通过 "外键" 或 "新表" 实现关联:

  1. 1:1(一对一)联系
    • 方式:可新建一个表,或把其中一个实体的主键作为外键,放到另一个实体的表中(需加唯一约束,保证 "一对一")。
    • 例:"员工" 与 "工牌"(1:1)→可在员工表中加 "工牌 ID(外键 + 唯一约束)" 列。
  2. 1:N(一对多)联系
    • 方式:将 "1 端" 实体的主键作为外键,放到 "N 端" 实体的表中(无需唯一约束,因为 N 端可对应多个)。
    • 例:图中 "Company(公司)-makes-Product(产品)" 是 1:N(一个公司可生产多个产品)→在Product表中加 "公司 ID(外键)" 列。
    • 优势:减少表的数量,提升查询效率。
  3. M:N(多对多)联系
    • 方式:必须新建一个表,包含参与联系的两个实体的主键(作为外键),这两个外键共同构成新表的主键。
    • 例:"学生" 与 "课程"(M:N)→新建学生_课程表,包含 "学生 ID(外键)""课程 ID(外键)" 两列(联合主键)。
  4. part-of 联系(部分 - 整体联系,如聚合 / 组合)
    • 通常按 "1:N" 或 "M:N" 处理,若为 "组合"(整体删除则部分也删除),需在数据库中设置 "级联删除" 约束。

四、E/R 图中的约束在关系模式中的体现

  1. 主键约束:实体的主码对应表的主键,保证实体的唯一性。
  2. 单值约束(1:1、1:N):通过外键的 "唯一约束"(1:1)或 "非唯一约束"(1:N)实现。
  3. 参照完整性约束 :外键必须关联到对应表的主键,保证数据的一致性(如Product表的 "公司 ID" 必须是Company表中存在的 ID)。

总结

E/R 图转关系模式的核心是:

  • 实体→表,属性→列
  • 联系→外键或新表(根据基数选择);
  • 多值 / 复杂属性→拆分为新表或特殊类型列。

这一过程是将 "概念上的实体 - 联系" 转化为 "数据库可存储的表结构",是数据库设计的基础步骤。

E/R 转关系模式的规则速查表

这是一份E/R 图转关系模式的规则速查表,涵盖核心元素 + 不同场景的处理方式,方便你快速查阅:

E/R 图元素 → 关系模式对应表

E/R 图元素 关系模式(数据库)对应物 处理规则
实体(Entity) 表(Relation) 实体名→表名;实体属性→表的列;实体主码→表的主键。
普通属性(单值、原子) 表的列(Column) 直接作为对应实体表的列。
复合属性 多个列 拆分所有原子子属性,作为对应实体表的多个列。
多值属性 新表 + 外键 新建表(含 "原实体主键(外键)"+"多值内容"),外键关联原实体表。
空间属性(象形图) 特殊类型列(如 PostGIS 的Geometry 存储 WKB/WKT 格式的空间数据,对应实体表的一列。
1:1 联系 外键(二选一) 方式 1:将 A 的主键作为外键(加唯一约束)放到 B 表;方式 2:新建表,含 A、B 的主键(联合主键)。
1:N 联系 外键(放 N 端) 将 "1 端" 实体的主键作为外键,放到 "N 端" 实体的表中。
M:N 联系 新表 + 双外键 新建表,含参与联系的两个实体的主键(作为外键,联合主键)。
part-of 联系(聚合 / 组合) 外键 + 约束 按 1:N/M:N 处理;若为组合,加 "级联删除" 约束(整体删除时,部分自动删除)。

示例对照(以 "Company-makes-Product" 为例)

E/R 图元素 关系模式实现
实体 Company(主码:公司 ID) Company(列:公司 ID <主键>、公司名、地址)
实体 Product(主码:产品 ID) Product(列:产品 ID <主键>、产品名、价格、公司 ID <外键>
1:N 联系 "makes" Product表中的 "公司 ID" 外键关联Company表的 "公司 ID"
相关推荐
合方圆~小文17 小时前
工业摄像头工作原理与核心特性
数据库·人工智能·模块测试
jmxwzy17 小时前
Redis
数据库·redis·缓存
零叹17 小时前
Redis热Key——大厂是怎么解决的
数据库·redis·缓存·热key
王五周八17 小时前
基于 Redis+Redisson 实现分布式高可用编码生成器
数据库·redis·分布式
win x18 小时前
Redis事务
数据库·redis·缓存
飞翔的小->子>弹->18 小时前
CMK、CEK
服务器·数据库·oracle
peixiuhui18 小时前
Iotgateway技术手册-7. 数据库设计
数据库·iotgateway·开源dotnet·arm工控板·开源网关软件·开源数据采集
麦兜*18 小时前
【Spring Boot】 接口性能优化“十板斧”:从数据库连接到 JVM 调优的全链路提升
java·大数据·数据库·spring boot·后端·spring cloud·性能优化
qq_3344668618 小时前
U9补丁同步的时候报错
数据库