阿里云分析型数据库使用教程点击学习
。
在数据库设计中,设计的目标就是要建立E-R图(实体-关系图),在PowerDesigner中就是要建立概念模型或者逻辑模型。既然是实体-关系图,所以整个建模的核心就是围绕建立“实体”对象和找到实体之间的“关系”。实体分为两部分:标识(主键)和属性。标识是实体的一个或多个属性的组合,用于唯一的表标识出实体中的每一个数据。在确认一个实体的过程中,首先就是要确认实体的主键,只要找到了实体的主键,那么剩下的就是实体的属性。
1.确认核心实体
在建模过程中,首先需要对业务进行分析,知道我们的模型要表示怎么样的一个事情,从而确定我们模型的核心实体,找到了核心实体和其主键,那么剩下的工作就是以核心实体为中心进行实体关联的扩展和实体属性的抽象。一个数据库模型中一般会有1~2个实体作为整个模型的核心实体,核心实体一般都是一个名词,在整个业务过程中作为主语和宾语。所以总的来说,我们用一个主谓宾的句子来描述我们这个模型,那么基本就可以肯定,这句话中的主语和宾语就是核心实体,而通常谓语也是一个很核心的对象,该对象可能会产生一个实体来表示,也可能只是一个关联(Association)。通常数据库中数据量最大的表就是谓语对应的表。
以上说法可能比较抽象,用一两个简单的例子来说明。假设我们需要设计一个学生选课系统的数据库模型,那么首先就是要分析,我们这个系统是做什么的,记录什么的?“学生选课”!虽然只有4个字,但是已经完整的表达整个系统,从这样一个主谓宾的句子中,我们可以得出,整个模型的核心是“学生”(主语)和“课程安排”(宾语),谓词“选”表名了两个实体之间的核心关系。确定了核心的实体“学生”和“课程安排”,那么接下来就是要确定实体的主键和属性。“学生”实体的主键很容易确定,只要找到能够唯一标识每个学生的一个字段即可,所以我们可以使用“学号”来作为学生实体的主键,一个学校中每个学生的学号肯定是唯一的。“课程安排”这个实体的主键并没有那么明显的属性能够表示,对于无法找到明显的实体属性作为主键的情况下,我们需要创建一个专门的标识列(ID)用来标识实体中的每个实例。在数据库中最常见的ID就是自增列。这里我们可以设计“课程安排ID”作为课程实体的主键,每在数据库中增加一门课程,系统会自动为该课程分配一个自增的唯一整数来标识。
再比如一个要设计一个电子商务系统的数据库模型,首先一句话总结该系统就是“用户在网上购买商品”,所以这个系统的核心实体就是“用户”和“商品”。用户实体的主键是什么?用户的登录名是唯一的、邮箱是唯一的,都可以作为该实体的主键。但是在真实的电子商务系统中很少使用登录名或邮箱来作为主键,因为其中一个很重要的原因是登录名和邮箱都太长,而且长度不确定,所以在数据库中一般会设计一个自增的“用户ID”来作为用户的主键。商品实体的主键可以用商品的条形码来作为主键,确实可以这么做,但是同样的原因,条形码太长了,所以一般会用一个Int型的自增列“商品ID”作为商品的主键。
2.确认相关实体
在找到了核心实体后,接下来就是以核心实体为中心,找到相关的实体。相关实体一般来说就是和核心实体存在直接联系的实体,当然也有些相关实体是要经过另一个相关实体与核心实体关联。相关实体一般情况下都是名词。
以选课系统为例,与学生相关的实体是什么?班级、专业方向、院系等,与课程安排相关的实体是什么?课程、课程的详细安排、安排的教师等,所以我们可以将这些要关联到的实体都建立。