4.4 IDEF1X 建模方法4 R' I0 r' J* T3 C% n4 v
4.4.1 IDEF1X概述
0 f! j, N0 v. C# C1 w1、 IDEF0侧重描述系统功能,被称为功能建模方法;IDEF1X侧重分析、抽象和概括应用领域中的数据,称为数据建模方法;; n& o, Y) n) Y2 \- h
2、 IDEF1X方法具有丰富的语法和语义;
; [% g, i. @8 ~- \% Q N3、 实体集分为(1)独立标识符实体集;(2)从属标识符实体集;7 L6 A9 o' ?4 A
4、 实体集之间的联系分为:(1)标定型联系;(2)非标定型联系;(3)分类联系;(4)不确定联系6 y' Y* ?/ x9 w/ b: o2 J& ^8 c2 I2 ^
4.4.2 IDEF1X模型元素 T6 `1 `9 }0 I
1、 实体集:
1 m9 I9 L+ S, ?$ f. y8 V(1) 实体集语义:如果一个实体集的每一个实例都能被惟一地标识,而不决定于它与其他实体的联系,那么该实体集称为独立实体集;否则就叫从属实体集;" ~& t# t* |$ a5 T) \. _1 t
(2) 实体集语法:IDEF1X用矩形框来表示独立实体集,用圆角矩形框来表示从属实体集;
: m$ I% v4 b6 Z: T- V5 Z2 G1 ~# Y$ [2、 联系:
: [1 {' d. R, j0 ]' v( ?% ^* h# n& n(1) 联系语义:
7 E0 X' j$ ^( B" a(A) 标定型联系:一个“确定型联系”中,如果子女实体集中的每个实例都是由它与双亲的联系而确定的,这个关系称为“标定型联系”;
( [1 V ?2 O# S% x(B) 非标定型联系:一个“确定型联系”中,如果子女实体集中的每一个实例都能被惟一地确认而无需了解与之相联系的双亲实体集的实例,这个问题关系叫“非标定型联系”。1 D: [' ~3 y0 s0 u2 ?' f
(C) 分类联系:是两个或多个实体集之间的联系,且在这些实体集中存在一个一般实体集,它的每一个实例都恰好与一个且仅一个分类实体集的一个实例相联系。 F2 k; w. R8 J7 m+ m
(D) 不确定联系:一个非确定联系又称为多对多联系,这种联系关联的两个实体集之间,任一实体集的一个实例都将对应另一实体集的0个、1个或多个实例。5 m2 ^ }) [0 g6 O' k+ R; P+ J# X
(2) 联系的语法:4 k5 N" o. K. [' s0 U4 e
(A) 标定联系语法:在IDEF1X图中,联系的语法用直线表示,在一个标定型联系中,子女实体集总是一个从属实体集,用圆角矩形框表示;: M: h# p) E0 D8 w4 `. M- O7 Y
(B) 非标定联系语法:如果两个实体集之间有关系,并且是一个非标定联系,就用一条虚线把它们连接起来。
0 k3 y. ?" a% T6 s; f6 }: m(C) 分类联系语法:一般实体集的一个实例只能与分类实体集的一个实例相对应;
$ t9 U% H- e7 {6 l* h(D) 不确定联系m:n的语法:不确定联系用一个两端带有实心圆的线段描述,表示多对多的连接关系。
# o' v7 b2 G9 t, m: C( }& Z3、 属性" ^* {% q a# l4 ?6 J& m# X. Q$ k
(1) 属性的语义:用来描述一类现实或抽象事物的特征或性质。一个属性的具体取值叫属性实例,它由属性的类型和值来定义。/ f5 h8 I& i: r
(2) 属性的语法- c. y; _: o k. r/ a
(A) 主码和非主码属性语法:在一个实体集中属性要有惟一的名字,属性名由名词表示,主码属性名后加(PK)标注,被列在属性列表的顶端,并用水平线将主码和其他属性分开。
' q6 I+ C* u' K) _7 D(B) 外码语法:在外码属性后加“FK”来识别由联系继承得到的外来属性。
% X! a( U" t' ~4.4.3 建模过程
& i2 D- Y1 y, ?" \1、第一阶段:建模规划及准备
% d/ w! ]2 R' K/ g8 A( Z(1) 建模目标:) e0 A8 O" ?0 O% h ^& C6 W
(A) 目标说明:回答将构造的模型完成什么功能,涉及的问题和数据范围,同时说明是一个当前系统模型还是待建模型。; [, K/ A$ Q- q$ @6 S8 y
(B) 范围说明:在建模初期要给出模型覆盖的问题范围;( n u0 f" T. ^+ j
(2) 建模计划2 H4 v. S/ g4 z( N# A3 }6 T; w0 |2 y
(A) 项目说明;
5 o$ o9 O g" ?* n0 y(B) 收集数据;) ]# n/ X7 X8 |. ^
(C) 定义实体;
9 a' c5 N3 w3 | x0 ?- Z2 b; s(D) 定义联系;0 p7 Y# `$ b& ~3 r; _6 e* c. w8 v5 }
(E) 定义码属性;4 v6 ]. \: c- j; H- o1 b( j
(F) 定义非码属性;
- y- w, `. C0 N4 H7 T# W" ~(G) 确认模型;
+ Z9 h* X" y- G, [5 ^% B(H) 评审验收。
# x# b, v" }" T2 f5 P' D(3) 组织队伍:包括项目负责人、建模者、信息源、课题专家、评审委员会
# B; r( c" D/ }& U* ^, r6 T1、 第二阶段:定义实体集- E Y% H+ d% u V# j
(1) 目标是标识和定义应用领域中的实体集,方法是分类标识原始材料中的所有名词;) A, s( C- D! ^% t6 p; a
(2) 区别实体集名词和非实体集名词的方法,是否具有下列特征:' W& s5 J$ ~8 [7 V
(A) 它能够被描述或说明吗?
- Y5 Q: q" W8 R(B) 有多少同类的实例吗?
5 {- _, F# s! D8 S: D; \9 A(C) 每个实例可以被标识和区分吗?. v+ G5 y2 T8 J4 @# w4 \" ]0 W' s- `
2、 第三阶段:定义联系2 G5 k/ J, s# j6 h7 U
(1) 标识实体集之间的联系:建立联系矩阵,联系矩阵由一个二维数组表示。把实体集沿水平和垂直两方向列出,分析两个实体间的联系,有联系就用“X”表示,不存在联系用“null”表示。联系只标识直接关系,不标识间接关系。
+ w9 ^$ s6 [: a& s' g3 @(2) 定义联系:包括表示依赖、命名联系、关于联系的说明;当实体集之间的依赖关系建立后,就可以命名联系了。联系的名字可以动词表示。原则必须是具体的、简明的和有意义的。" C! H0 y! f. i+ B
(3) 构造实体级数:实体级图的范围和数目,依赖于建模的规模和建模问题涉及的实体集数目。
6 [+ b" S! u; p2 V8 C3、 第四阶段:定义健2 T. P ]) U2 V0 f0 t6 K V
(1) 分解不确定的联系:把实体级图中不确定的关系转换成确定的连接形式,把每一个不确定的联系转换成为两个确定的联系;
/ n4 a: h G O% r* f* k! g- @" r4 Y(2) 标识码属性:码属性是那些能够惟一识别实体集中每一个实例的属性;2 Q$ l4 c/ p; b$ w9 ^& z
(3) 迁移主码:把一个实体集的主码复制到其他有关实体集的过程,但要遵守以下规则:# W; A L e$ m. ]: D+ N8 B
(A) 在一个联系中,迁移总是从父到子或从一般实体集移向分类实体集;; }/ ^' s: E6 d8 F" Y4 R
(B) 主码属性才能被迁移,如主码由多个属性组成,则要全部迁移;. C- D: e- l2 W ?+ z2 c
4、 第五阶段:定义属性
! I( ]5 I+ F3 [) Q( J(1) 标识和定义非主属性;
. ~! ?& \& F8 K* w. X(2) 建立属性的所有者;
/ V g+ Y7 }2 L) L; B(3) 确认属性的定义;
$ ?# t6 c( h8 t) k0 ?' _(4) 绘制局部数据视图;& F* V8 H8 E7 X
(A) 实体集的名称和编号写在矩形框外的上面;
9 B0 c. m3 f. o(B) 主码属性写在矩形框内水平线的上面并用“PK”标注;
- ^7 w# I& J& I. s# E: D# [(C) 外码属性写在矩形框内水平线的下面并用“FK”标注;# U. ?; c3 z7 ^; ]/ E% B
(D) 非主属性也可以写在矩形框内水平线的下面; |