需求分析
数据库建设中,第一步也是最重要的一个步骤就是需求收集、定义以及可视化。需求是数据库建设的基石,需求分析是数据库建设的脚手架。
可以说需求分析阶段的成果直接影响了整个项目的成败。
ER建模
需求分析阶段,也被称为ER建模(Entity-Relationship Modeling)阶段,也常被称为需求可视化,概念建模等。这一阶段数据库系统开发人员将协同需求方以ER图的方式对业务需求进行可视化展现。
基本概念
实体(Entity)
实体表示一个可描述的客观对象或是汇总的抽象概念。例如人、事物、课程、订单等。
实体的一个特点是允许存在多个实例。例如人有各种各样的,也有丰富多彩的课程。
在ER图中,实例通常使用矩形表示:
推荐一款免费轻便型在线做图工具processon
属性(Attribute)
每个实体都有属性,属性是用来描述实体的特征的。例如一个商品订单有商品ID、数量、创建时间、创建人等属性。
在ER图中,使用椭圆来表示属性:
每个实体会有一个唯一属性,使用下划线表示,例如社会人的身份证号。
实体还会有多值属性,使用双线椭圆表示,例如人的昵称外号等。
当一个实体的属性是依附于另外一个属性时,这个属性就叫做派生属性,例如年龄是依附于出生日期的。
若一个属性包含有多个子属性,那么这个属性可以称为复合属性,可以使用圆括号表示。
用一个简单的ER图来表示以上几个关系:
弱实体
通常情况下,实体至少要有一个唯一属性。而当一个实体没有唯一属性时,这个实体就称之为弱实体。
在ER图中,弱实体用双线方框表示,且必须与它的属主实体通过标识性联系连接起来(双框菱形)。
以我们居住的小区举个例子。
小区里有很多幢楼(Building),每一幢都有一个号(Building ID):A、B、C等,甚至幢楼还分为多个单元。
每一幢楼里,都分为6层,每层两户,对应也就生成里12个门牌号(Door No):101、102、201、202......601、602。
在一幢楼的邻里之间,我们可以认为门牌号是每家的唯一属性。一旦走出这栋楼,你再说101室就没人知道了,因为每一幢都有一个101室。这时候只有把楼号和门牌号联系起来,A101就很明确了。
以上例子中,一个门户就是一个弱实体,依附于强实体楼号。
有些楼的楼号会标明xx路/xx小区A号,这是很明显的强实体。只标明xx号的,在某些范围内是强实体,有些范围内是弱实体,是相对的。
使用ER图来表示一下上述的例子:
联系
实体与实体之间通常存在某种联系,并且这种联系还伴随有数量的关系,称之为基数约束。
在ER图中,使用菱形来表示联系,在菱形两端的连线上使用1、M、N来表示基数约束。
例如:
一个学生与一张课桌有联系,并且是1:1的关系。
一个学生与成绩单有联系,关系是1:M,一个学生有多张成绩单,但是一张成绩单只对应一个学生。
一个学生与班级有联系,关系是M:1。
一个学生与老师有联系,关系是M:N,学生有多个老师,老师也有多个学生。
使用ER图表示:
小结
需求分析及可视化是整个数据库生命周期最重要的一步,一定要协同好各方需求,尽可能将需求完整地用ER图展示出来。