一、概述
ERD图(Entity Relationship Diagram)是一种用于展示实体(entity)及实体之间关系的图形化工具。它作为一种数据建模工具,被广泛应用于软件工程中的需求分析、设计阶段。
ERD图的主要目的是将需要建模的数据实体以及它们之间的关系以直观、易懂的方式呈现出来。这样做的好处在于可以帮助开发人员更好地理解数据需求,从而更好地设计和优化数据结构。
在ERD图中,最常用的三类实体是:数据、过程、或者逻辑实体。其中的每一个实体都有其对应的属性,而关系则是将不同实体间逻辑上的相互作用表示出来。
二、ERD图的组成
ERD图由实体、属性和关系三部分组成。
1、实体
实体是一种具有独立存在意义的事物(object),在ERD图中用矩形框表示。实体有实体的名称。
<div class="entity">
<p class="entity-name">Student</p>
</div>
2、属性
属性是实体的特征或属性,用实体下的矩形框来表示。属性有属性的名称。
<div class="entity">
<p class="entity-name">Student</p>
<div class="attribute">
<p class="attribute-name">Name</p>
<p class="attribute-type">varchar(20)</p>
</div>
<div class="attribute">
<p class="attribute-name">Gender</p>
<p class="attribute-type">char(1)</p>
</div>
</div>
3、关系
关系用菱形来表示,其中包含关系名称、实体和联系属性。关系可分为:一对一、一对多、多对多。
<div class="relationship">
<p class="relationship-name">Attend</p>
<div class="relationship-entity">Student</div>
<div class="relationship-entity">Course</div>
<div class="relationship-attribute">
<p class="attribute-name">Score</p>
<p class="attribute-type">int</p>
</div>
</div>
三、ERD图的设计原则
设计ERD图时,有很多要注意的地方。我们来看看其中的三条设计原则。
1、规范建模
规范建模是指在建模时要注意规范,尽量把数据表分解到最规范状态,减少数据库冗余,避免重复数据。
2、关系符合逻辑
逻辑关系应当符合实际情况,数据建模应当贴上实际场景。
3、容易维护
数据模型的设计要考虑其未来的可维护性,简单易懂可以减少后期的维护成本。
四、ERD图的实战
一份简单的ERD图如下所示:
下面是一份使用MySQL Workbench设计的ERD图代码示例。
/*==============================================================*/
/* DBMS name: MySQL 8.0 */
/* Created on: 2021/7/19 18:32:51 */
/*==============================================================*/
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`email` VARCHAR(45) NOT NULL,
`password` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`));
CREATE TABLE `posts` (
`id` INT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(45) NOT NULL,
`body` TEXT NULL,
`author_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_posts_users_idx` (`author_id` ASC),
CONSTRAINT `fk_posts_users`
FOREIGN KEY (`author_id`)
REFERENCES `users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
CREATE TABLE `comments` (
`id` INT NOT NULL AUTO_INCREMENT,
`body` TEXT NOT NULL,
`post_id` INT NOT NULL,
`user_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_comments_posts_idx` (`post_id` ASC),
INDEX `fk_comments_users1_idx` (`user_id` ASC),
CONSTRAINT `fk_comments_posts`
FOREIGN KEY (`post_id`)
REFERENCES `posts` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_comments_users1`
FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
五、小结
本文从ERD图的概述、组成、设计原则以及实战案例四个方面对ERD图做了详细的阐述,希望可以对读者对于ERD图的使用及应用有所启示和帮助。