数据库学习笔记(八)

一、IDEF1x数据建模

1.IDEF1x基本概念

IDEF1x是将E-R模型的细化,是一种数据库设计工程化的方法

2.实体

有之前的笔记七知识可以知道,实体表示要给现实和抽象事物的集合,这些事物必须具有相同的属性和特征。这个集合的一个元素就是该实体的一个实例

实体又被区分成独立实体(强实体)从属实体(弱实体)

  • 独立实体:一个实体的实力都被唯一标识而不决定于它与其它实体的联系
  • 从属实体:一个实体的实例唯一标识需要依赖于该实体与其它实体的联系

独立实体的示例:

这里表示成IDEF1x格式有:

从属实体示例,一个合同内可能有多个合同条目,标识合同条目依赖于合同实体的联系。所以从属实体需要从其他实体继承属性作为关键字的一部分。也可以说从属实体的主关键字包含了外来属性的实体。其标识方法如下图左部分所示

独立实体与从属实体的规则上的差异:

独立实体用直角方形框,从属实体用圆角方形框。

独立实体主关键字没有外键,从属实体主关键字有外键。

同时丛书实体的实例依赖于独立实体实例存在而存在

属性的表示方式,注意标号相同的联合作为一个候选键

外来关键字(FK)如果在主关键字一栏,则是从属实体,否则是独立实体。

3.联系

(1)标定联系:父实体的主关键字是子实体主关键字的一部分。

与之前介绍的从属实体一致,零件工序代码的零件代码属性继承于零件实体,并作为零件工序的主关键字

表示成:

(2)非标定联系:父实体的主关键字不是子实体的关键字。

顾客与合同都是两个独立实体,合同继承顾客实体的主关键字,但并不作为本实体的主关键字。

表示方式为:

(3)非确定联系:实体之间多对多的联系

非确定联系必须分解为若干个一对多的联系表达,需要引入相交实体。

上图说明了一个书号可以发出多次借阅,一个借书号也可以产生多次借阅关系。

同样地,如下图

(4)分类联系:一个实体实例是由一个一般实体实例以继多个分类实体实例构成

例如零件分为自制件,外购件。其中自制件与外购件不仅有相同的属性,还有不同的属性,表达形式如下所示:

E-R模型中用标记为ISA的三角形表示:

Crow's foot表达方式:

完全分类联系:比如零件只可能是自制件或者是外购件。也就是说自制件和外购件二者集合的并集等于零件

非完全分类联系:零部件除了产品、零件外还可能有其他的分类成分,也就是产品与零件集合的并集小于零部件集合。

需要注意的是,分类实体必须有特有的属性,否则分类就没有意义。

二、IDEF1x建模案例

1.零件加工方法管理

需求分析:一个零件可能需要多个过程完成,每个过程又称作一道工序,多道工艺加工的次序称为工艺路线

所以需要管理零件,管理零件的加工,管理零件每道工序内的操作次序,因此表可以设计成:

则有IDEF1x工序图

2.产品结构即零件构成关系

下图表示一个A是有3个A1,4个A2构成,同样的,一个A1由5个A11,3个A12构成。

这种关系属于一元联系,用如下表的形式:

则有IDEF1x图表示:

这里的产品结构实体与其父实体零部件清单由多种联系,因此需要加作用名.继承属性名(FK)区分

3.入户单管理

需求理解:管理一张张单据、管理一张单据中的一条条

因此表设计成:

用图表示:

4.客户跟踪信息表

因此图可表示成:

5.仓储系统数据模型设计

仓储管理系统:管理若干仓库及其物资的出库和入库,并填写入库单出库单以及记录库存物资账

由题目可以知道显而易见的实体由库房,物资,入库单,出库单,库存账。

进一步进行分析,入库物资需要供应商提供,出库物资需要记录部门号。下面一步步分析实体间的联系:

入库单需要与供应商产生联系,因为需要入库物资,自然也要与物资,库房发生联系。与物资发生联系是记录物资的编码,还有数量,与库房发生联系是要将物资存放进哪个库房。同理出库单需要与部门产生联系,因为部门要领取物资,自然也要与物资,库房发生联系,所以需要记录物资的编码,还有数量,要从哪个库房领取物资。并且入库单和出库单都需要相应的编号唯一标识。而实际情况中入库单(出库单)由多个入库单明细(出库单明细)构成。入库单明细(出库单明细)由入库单编号(出库单编号)还有明细的序号唯一标识,它记录了物资的编码,还有入(出)库物资的数量,因此还与物资有关联。

库存总账通过库房编号,物资编码唯一标识。记录了当前库房的物资数量还有结算余额。

库存流水账通过库房编号还有流水号唯一标识,需要记录当前出入帐的日期,负责人,物料等信息。因此它不仅与库房、物资有联系,还与入库单和出库单有关联。

因此最终图可表示成:

6.企业物料系统的数据模型设计

首先设计如下表

由上述表理解需求:

有一个个的产品,每个产品一张表。一个的零部件,由一项项构成的。比如ZA100由ZA110和ZA120构成。其中每个零部件由一道道工序完成,这一道道工序对应着一个个部门。物项分成产品、装配件、自制 件、毛坯、原材料、外购件—不同物项需要不同属性来刻画。

因此图表示成:

再设计如下表

这里,一个零件对应多道工艺,一道工艺对应多道工序,一道工序对应一个生产部门,一道工序对饮一个加工设备,一道工序对应一组工艺装备。因此设计如下表的型式:

将两个图合成一个:

 

三、IDEF1x模型之点评

1.读图基本方法:

  • 要区分每个实体的实体名和属性
  • 实体的关键字能否唯一确定每个实例
  • 实体之间联系绘制及命名的正确性
  • 检查属性继承的正确性

2.错误示例

(1)

图中又五项错误:

  • 合同下达与分解的命名错误,需要用名词进行命名
  • 产品合同与客户的联系方向错误,应该是一个客户对应多个合同
  • 客户需求与客户项目的属性继承错误。客户需求的主关键字未能包含客户项目号
  • 合同执行信息、合同下达与分解应该与产品合同相连
  • 未标注联系名称

因此正确的模型图为:

 

(2)

  • 材料清单与产品结构间的继承关系没有说明白
  • 材料价格中的价格不应做主关键字
  • 库存中的数量不应做主关键字
  • 材料定额的数量不应做主关键字
  • 其他理解性错误

最终绘制结果:

(3)

(4)

  • 老板、收银员、搓澡工构成的实体集合(澡堂)不能用重叠量词度量画圈的地方应该是员工、顾客、员工类别、工作类别和工作等。
  • 流程图思想不应应用再E-R图中

(5)

  • 分类实体的关键字应该与一般实体的关键字一致
  • 每个分类实体应有不同于其他分类实体和一般实体的属性
  • 需要表明鉴别器属性

(6)

正确画法:

(7)联赛管理

猜你喜欢

转载自blog.csdn.net/adorkable_thief/article/details/84169986