用法介绍ERD图(什么是ERD)

一、概述

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图如下所示:

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图的使用及应用有所启示和帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平