如何绘制ER图？
首先，什么是实体关系图？
实体关系图也被称为ERD、ER图、实体联系模型、实体联系模式图或ER模型，是一种用于数据库设计的结构图。一幅ERD包含不同的符号和连接符，用于显示两个重要的资讯：系统范围内的主要实体，以及这些实体之间的相互关系。
这也就是为什么它被称为“实体”“关系”图（ERD）啊！
当我们谈论ERD中的实体时，我们经常提到诸如人员/角色（例如学生），有形商业对象（例如产品），无形商业对象（例如日志）等业务对象。“关系”则是这些实体在系统内的相互关联。
在典型的ER设计中，可以找到诸如圆角矩形和(Roundedrectangle)连接符（具有不同样式的末端）的符号来描述实体，它们的属性和相互关系。
那么，我们该在什么时候绘制ER图呢？虽然ER模型大多是为展示概念和设计物理数据库而绘制的，但也有别的用途的，以下是一些典型的用例。
ERD实体是一个系统内可定义的事物或概念，如人/角色（例如学生），对象（例如发票），概念（例如简介）或事件（例如交易）（注：在ERD中，术语“实体”通常用来代替“表”，但它们是一样的）。在考虑实体时，尝试把它们想成名词。在ER模型中，实体显示为圆角矩形，其名称位于上方，其属性列在实体形状的主体中。下面的ERD示例显示了ER实体的一个用例。
也称为列(Row)，意思是持有它的实体的属性或特性。
一个属性有一个描述属性的名称和一个描述属性种类的类型，例如代表字符串的varchar，整数的int。当为物理数据库开发绘制ERD时，得使用目标RDBMS支持的类型，以确保设计和物理数据库的一致性。
下面的ER图示例显示了一个包含属性的实体。
主键又称PK，是一种特殊的实体属性，用于界定数据库表中的记录的独特性。一个表不能有两笔（或更多）拥有相同的主键属性值的记录，像是身份证明内的ID便是典型的例子，两个人即使性名相同，ID是不会一样，若身份证明是个表，那ID便是主键了。下面的ERD示例显示了拥有主键属性“ID”的实体“Product”，以及数据库中表记录的预览。第三个记录是无效的，因为ID'PDT-0002'的值已被另一个记录使用。
外键又称外来键和外部键，是对主键的引用，用于识别实体之间的关系。请注意，有别于主键，外键不必是唯一的，多个记录可以共享相同的值。下面的ERDiagram示例显示了一个包含一些列的实体，其中一个外键用于引用另一个实体。
两个实体之间的关系表示这两个实体以某种方式相互关联。例如，学生可能参加课程。实体“学生”因此与“课程”相关，而这关系则在ER图中以连接线表达着。
基数定义了一个实与另一个实体的关系里面，某方可能出现次数。例如，一个团队有许多球员，若把这关系呈现于ERD时，团队和球员之间是一对多的关系。
在ER图中，基数表示为连接线端的乌鸦脚。三种常见的主要关系是一对一，一对多和多对多。
一对一关系主要用于将实体分成两部分，简洁地将资讯呈现，使读者更容易理解。下图显示了一对一关系的示例。
一对多关系是指两个实体X和Y之间的关系，其中X的一个实例可以链接到Y的许多实例，而Y的一个实例仅链接到X的一个实例。下图显示了一对多关系的一个例子。
多对多关系是指两个实体X和Y之间的关系，其中X可以被链接到Y的许多实例，反之亦然。下图显示了一个多对多关系的例子。请注意，多对多关系在物理ERD中被分成一对一对多的关系，你会在下一节中学到什么是物理ERD。
ER模型通常被绘制成最多三个抽象层次上：
虽然ER模型的三个层次都包含有属性和关系的实体，但它们的创建目的和目标受众都不同。
一般而言，业务分析人员使用概念和逻辑模型来展示系统中存在的业务对象(BusinessObject)，而数据库设计人员或数据库工程师会为概念和逻辑ER模型加入更详细的资讯，进而生成反映物理模型结构的物理数据模型，好为创建数据库作准备。下表列出了三种数据模型之间的差异。
概念性ERD表达了系统中该存在的业务对象以及它们之间的关系。建立概念模型，是为了通过识别所涉及的业务对象来呈现系统的宏观图像。概念数据模型定义了哪些实体存在，而非哪些表。例如，逻辑或物理数据模型中可能存在“多对多”表，但在概念数据模型下，它们只会表示为无基数的关系。
注意：概念性ERD支持使用泛化(Generalization)来表达两个实体之间的“一种”关系，例如三角形是一种形状，这个用法就像UML中的泛化一样。请注意只有概念ERD支持泛化。
逻辑ERD是概念ERD的详细版本，通过明确定义每个实体中的列并引入操作和事务实体(TransactionalEntities)来让概念模型丰富起来。虽然逻辑数据模型仍流于高层次的设计(非为特定数据库系统而绘画)，但如果会影响数据库的设计，在绘制逻辑数据模型时仍然可酌情调整。
物理ERD是数据库的实际设计蓝图。物理数据模型通过为每列指定类型(Type)，长度(Length)，可为空(Nullable)等来详细阐述逻辑数据模型。由于物理ERD表达了如何在特定的DBMS中构造和关联数据，因此在设计时要考虑到实际的数据库系统的需要和局限，倒如确保DBMS支持某列类型，并在命名实体和列中避用某些保留字(ReservedWords)。
如何绘制ER图？
画出范围内的主要实体。
通过添加列来定义实体的属性。
考虑所有实体之间的关系，将它们联系起来，并写上正确的基数（例如客户和订单之间的一对多关系）。如果有任何实体沒有被连接上，请不要担心，虽然这不常见，但它是合法的。
使用数据库规范化技术(DatabaseNormalization)重构实体，以减少冗余数据和提高数据完整性。例如，“制造商”的资讯可能最初存储在“产品”实体下，透过规范化过程，您可能会发“制造商”的记录不断重复，您便可将其拆分为单独的“制造商”实体，并使用外键将“产品”和“制造商”连接起来。
在系统分析和设计中，可以绘制数据流图（DFD）来展现系统流程中的信息流。在数据流图中，有一个名为数据储存(DataStore)的符号，它代表一个提供系统所需信息的数据库表。
在业务流程映射中(BusinessProcessMapping)，可以绘制BPMN业务流程图（BPD）以展示业务工作流程。在业务流程图中，有一个称为数据对象（DataObject）的符号，表示在流程输入/输出的数据。
由于概念和逻辑数据模型提供了系统内业务对象的高级视图，因此此类ERD中的实体与BPD中的数据对象一致。您可绘制ERD作为BPD的补充，以表示业务工作流程所需的数据对象的结构；或以BPD补充ERD，以显示在整个业务流程中如何运用数据。