E-R 模型(实体-联系模型,Entity-Relationship Model)是数据库设计中用于概念建模的核心工具
2026/7/26 8:21:20 网站建设 项目流程

E-R 模型(实体-联系模型,Entity-Relationship Model)是数据库设计中用于概念建模的核心工具,由Peter Chen于1976年提出。它通过图形化方式描述现实世界中的数据结构,帮助数据库设计者在逻辑层面抽象和表达数据需求,为后续关系模式转换(如规范化、映射为关系表)奠定基础。

E-R 模型包含三个基本要素:

  1. 实体(Entity):现实世界中可区分的独立对象,如“学生”“课程”“教师”,用矩形框表示;
  2. 属性(Attribute):实体或联系所具有的特征,如“学生”的学号、姓名、年龄,用椭圆形表示;主键属性常加下划线标识;
  3. 联系(Relationship):实体之间的关联,如“学生选修课程”,用菱形表示,并标注联系的基数约束(如1:1、1:N、M:N)和参与约束(全参与/部分参与)。

此外,还支持弱实体(依赖于强实体存在)、复合属性多值属性派生属性等扩展概念。E-R图最终可系统性地转换为关系模式(如每个实体→一张表,M:N联系→独立关联表),是数据库系统从需求分析走向逻辑设计的关键桥梁。

-- 示例:将“学生-选课-课程”E-R结构映射为关系表CREATETABLEStudent(snoCHAR(10)PRIMARYKEY,snameVARCHAR(20),ageINT);CREATETABLECourse(cnoCHAR(8)PRIMARYKEY,cnameVARCHAR(30));CREATETABLESC(-- M:N联系“选修”转化为独立关系表snoCHAR(10),cnoCHAR(8),gradeDECIMAL(4,1),PRIMARYKEY(sno,cno),FOREIGNKEY(sno)REFERENCESStudent(sno),FOREIGNKEY(cno)REFERENCESCourse(cno));

在E-R图中,三元联系(Ternary Relationship)是指三个实体集之间同时发生的关联(而非两两二元联系的组合),用于表达无法被分解为多个二元联系的语义约束。例如:“供应商(S)向项目(P)供应零件(J)”这一业务规则中,仅知道“谁供应了什么”和“供应给哪个项目”是不够的,必须明确“哪个供应商、向哪个项目、供应哪种零件”三者共同构成一次供应行为——此时需用三元联系建模。

E-R图表示方法

  • 菱形表示三元联系,名称标注于菱形内(如“供应”);
  • 将参与的三个实体(如Supplier、Project、Part)用直线分别连接至该菱形
  • 在每条连线上标注基数比(如1:N、M:N)和参与约束(单线=部分参与,双线=全参与);
  • 若联系本身有属性(如供应数量、日期),则用椭圆连接到菱形

⚠️ 注意:不能简单用三个二元联系替代三元联系,否则会引入语义丢失或冗余组合(如可能错误推导出未实际发生的(S,P)、(P,J)、(S,J)组合)。

转换为关系模式的处理方式(标准方法):

  1. 为三元联系单独创建一个关系表,其主键由三个参与实体的主键组合构成(即复合主键);
  2. 若该联系为全参与(total participation)且基数均为1:1或1:N,需根据具体约束判断是否可简化(但一般仍建议独立建表以保语义完整);
  3. 若联系具有属性(如quantity、date),这些属性作为该关系表的非键字段;
  4. 各外键字段需定义对应实体表的外键约束,确保参照完整性。

📌 示例(供应关系):

CREATETABLESupply(snoCHAR(5),-- Supplier主键pnoCHAR(6),-- Project主键jnoCHAR(4),-- Part主键qtyINT,supply_dateDATE,PRIMARYKEY(sno,pno,jno),-- 复合主键FOREIGNKEY(sno)REFERENCESSupplier(sno),FOREIGNKEY(pno)REFERENCESProject(pno),FOREIGNKEY(jno)REFERENCESPart(jno));

💡 补充说明:若某三元联系中存在一个实体对联系是1端(如1:N:N),且业务上允许将联系“降维”为二元+属性(如“项目-零件”为主实体,“供应商”作为该联系的属性),则需谨慎评估——这通常破坏语义完整性,不推荐,除非经严格分析确认无歧义。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询