数据库设计:实体关系图

数据库
一个良好的设计对于数据库系统至关重要,它可以减少数据冗余,确保数据的一致性和完整性,同时使得数据库易于维护和扩展。

一个良好的设计对于数据库系统至关重要,它可以减少数据冗余,确保数据的一致性和完整性,同时使得数据库易于维护和扩展。

实体关系图(Entity-Relationship Diagram、ERD)是一种用于数据库设计的结构图,它描述了数据库中的实体以及它们之间的关系。从结构上来说,数据库的 ERD 主要包括实体、属性以及关系三个部分。

实体

实体代表了一种对象或者概念。例如,员工、部门和职位都可以被称为实体。实体包含一个或多个属性,实体在数据库中对应的就是关系表。下图是一个员工实体员工实体(employee)。

属性

属性表示实体的某种特性,例如员工拥有姓名、性别、工资等属性。属性在数据库中对应的就是表中的字段,字段拥有一个指定的名称和数据类型。下图显示了员工实体的各种属性。


其中,员工编号(emp_id)属性可用来唯一标识每一位员工,被称为主键(Primary Key)。主键可以是单个字段,也可以由多个字段组成。

关系

关系用于表示两个实体之间的联系,三种常见的关系类型包括一对一、一对多以及多对多的关系。

例如,一夫一妻制是一种典型的一对一的关系。一个员工只能属于一个部门,一个部门可以拥有多个员工,因此部门和员工之间是一对多的关系。一个学生可以选修多门课程,一门课程可以被多个学生选修,因此学生和课程之间是多对多的关系。

ERD 建模

数据库的 ERD 模型可以按照业务抽象层次分为三种类型:

  • 概念 ERD。概念数据模型用于描述系统中存在的业务对象以及它们之间的联系,一般由业务分析人员使用。在概念 ERD 中使用长方形表示实体,使用椭圆形表示属性,使用菱形表示联系。
  • 逻辑 ERD。逻辑数据模型用于对概念数据模型进一步的分解和细化,将其转换为关系模型(表和字段)。同时,逻辑 ERD 还会引入规范化过程,对关系模式进行优化。
  • 物理 ERD。物理数据模型是针对特定数据库的设计描述。物理 ERD 需要为每个字段指定数据类型、长度、可否为空等属性,同时为表增加主键、外键以及索引等。

许多常用的数据库软件都提供了 ERD 建模功能,例如 Visual Paradigm Community Edition、MySQL Workbench、Oracle SQL Developer、SQL Server Management Studio 等免费软件,以及 Toad Data Modeler、PowerDesigner、Navicat Data Modeler 等商业软件。

我们以 MySQL Workbench 为例简单介绍如何创建一个用于 MySQL 数据库的物理 ERD。首先点击软件主界面的“File”->“New Model”菜单,然后在打开的模型界面中点击“Add Diagram”按钮,新建一个 ERD 模型。

接下来我们在 ERD 模型中通过拖曳加编辑的方式创建 department、job、employee 以及 job_history 4 个表,同时通过连线建立它们之间的关系。其中 department 和 employee 之间是一对多的关系,job 和 employee 之间也是一对多的关系,job_history 则和其他 3 个表之间存在外键关联。

最终,我们创建的 ERD 如下图所示。

最后,我们可以点击“File”->“Export”菜单,将 ERD 模型导出为 SQL 脚本或者图片,也可以点击“Database”->“Forward Engineer”菜单,连接 MySQL 数据库来创建物理表和索引。

另外,我们还可以点击“Database”->“Reverse Engineer”菜单,从已有的 MySQL 数据库中反向生成物理 ERD 模型。

责任编辑:华轩 来源: SQL编程思想
相关推荐

2023-10-16 13:26:00

RDBMS关系数据库

2021-01-26 13:31:48

数据库关系型数据库冗余

2022-12-27 08:38:45

关系型数据库设计

2018-07-30 10:16:19

存储关联数据

2023-08-01 14:35:00

关系数据库排列

2017-06-14 17:45:49

2021-09-06 10:24:12

鸿蒙HarmonyOS应用

2023-03-30 22:32:21

2021-09-03 15:41:00

鸿蒙HarmonyOS应用

2013-03-28 10:22:33

数据库关系型数据库数据库设计

2011-03-10 11:12:59

数据库

2011-10-11 17:07:12

数据库Internet文件数据库

2011-03-10 11:17:03

数据库设计技巧

2011-04-15 13:28:44

数据库设计

2018-07-18 09:16:39

关系型非关系型数据库

2022-05-01 21:43:38

SQL设计模式

2022-09-05 17:52:44

数据库技术

2020-03-14 16:37:09

数据库IT技术

2023-01-03 08:06:00

2010-12-10 10:17:21

关系型数据库
点赞
收藏

51CTO技术栈公众号