1. 简介
ER图是由实体、实体的属性、实体之间的关系组成的图形,描述现实世界的改练模型。
2. 作用
ER图主要的作用是帮助工程师设计数据库,能清晰地清楚数据库需要添加什么表,表里面需要什么字段,字段需要什么类型,能知道概念和表之间的关系,也清楚实体与实体之间的关系需不需要增加新表。
数据库的设计往往是软件工程中的一个重点。出于数据的冗余和数据的查询性能的考虑,工程师需要花时间精力设计数据库表的字段、表的拆分。
数据库的设计往往影响软件的设计,考虑服务器的内存,工程师把数据库的冗余降低,但往往会面临数据库查询性能的问题,所以不得不增加冗余字段提高查询性能。一旦数据库表设计完成,软件中类的属性也确定,所以为什么说数据库的设计会影响软件的设计。
3. 元素
3.1. 实体(Entity)
实体可以表示具体的人或事物,也可以抽象的概念或联系。
从数据库的角度理解,实体就是数据库表,对应软件软件工程所提到的类。
弱实体(Weak Entity):实体A对于实体B具有很强的依赖联系,且实体A主键的一部分或全部从实体B中获得,则称实体A为弱实体。其中实体B为强实体或依赖于其他强实体的弱实体。
3.2. 属性(Attribute)
实体的特性,一个实体可拥有多个属性。
从数据库中的角度理解,其实就是数据库表的字段。
3.3. 关系(Relationship)
反应实体与实体之间的动作,如拥有、使用、安装等等。实体与实体之间的关系往往存在一般性约束,有一对一、一对多、多对多。
在数据库中,联系通过外键建立,关系也可以产生数据库表,也可以产生属性。
4. 一般性约束
4.1. 一对一(1 : 1)
实体集合A的每个实体有且仅有一个实体集合B中实体对应,反过来一样,则实体集合A和实体集合B是一对一的关系。
荔枝:一个家族有且仅有一个族长,一个族长只属于一个家族,则家族和族长是一对一的关系。
4.2. 一对多(1 : n)
实体集合A的每个实体有一个或多个实体集合B中实体对应,而实体集合B的每个实体有且仅有一个实体集合A中实体对应,则实体集合B和实体集合A是一对多的关系。
荔枝:一个部门有多个部门,一个员工只属于一个部门,则部门和员工是一对多的关系。
4.3. 多对多(m : n)
实体集合A的每个实体有一个或多个实体集合B中实体对应。反过来一样,则实体集合A和实体集合B是多对多的关系。
荔枝:一款游戏有多名玩家,一名玩家可以玩各种各样的游戏,则游戏和玩家是多对多的关系。
备注:如果想要了解其他UML图形,可以到小编主页的UML专栏查找。