IDEF (ICAM DEFinition method) 代表的是一整套的概念建模方法,总共有 IDEF0 ~ IDEF14 + IDEF1X 共 16 种,不过篇文章不太可能介绍完,只会对一些重点做介绍,首先列一下 IDEF 16 种到底有哪些? [1]
本篇文章就挑 IDEF1X 来介绍好了,IDEF1X 的元素种类可以透过 ER 图来比较 [5]:
.
用来表达 Entity-Relation 的方式都一样,详情可以回头看看 ER Diagram,并请简略参考下图:
这是 Wiki 中的 IDEF1X 的范例图,在上面同样可以看到每个关联性都有写上关系文字,跟上一节的 ER 图介绍的作法是差不多的。
由於图、画法都与 ER 图相近,所以现在要介绍一些不同於 ER 图章节的内容,就是【建模方法】,具体来说就是对一整套系统(或称业务需求)来做建模,这个建模需要经过 5 个阶段 (A~E):
每个项目在第零阶段中,你会需要运用以下工具来稍微撰写目前得到的所有资料、文件、把文件整理成 Workspace,建立绘制模型的约定,以下是目标。
第一阶段有两大目标产出:
第一阶段要完成的话,需要把所有手边的资料全数整理完 (这包含问题领域、Domain Knowledge) ,建立出所有实体和他们的定义 (定义要有上下文关联) 以及赋予一些名称,全部定义出来在一个图表中,你就会得到第一阶段需要的【实体表】。
下图是一个转换所有角色、物件,归纳出实体的例子,比方说这套 ERP / 员工系统,将 【人】 这个角色分离出【员工】这个实体,并写上属性。
然後,也许建立一份文件,把每个定义的名称做一些解释说明,方便日後 Ctrl+F 搜寻,这样就完成【实体术语表】。
第二阶段有三大目标产出:
比方说上图是 Buyer (购买者), Requester(请购者), Approver(审核者), Purchase Requsition(申请采购), Purchase Req. Item(采购物品),这一连串的东西很显然都是不同的概念 (指他们都不是继承、父子关系),用这个关系矩阵,就是直接把行列都变一样成这 5 个,然後对照这个表填上他们之间是否有关,有关就划记,还记得 SQL Cross Table 吗? 就是这麽回事,画表可以帮助你完整检查所有必要的关联性,而不会只有你想到的某几个。
第三阶段的目标是:
1. 把第二阶段的关联性更详细的描述,把粗略的关联详细化 (可能会造出新的实体 Entity)
2. 定义每个实体的【关键属性值】 (注意这个步骤只是请你把这个 Entity 最关键的属性填上,其他的还没有)
3. 定义 Primary Key 和对应的 Foreign Keys
4. 验证关联性和这些 Keys
对 2 点需要详细解释,这个 2 指的是关键属性,可以使用矩阵的方法列出所有【可能会是 KEY 的候选人】,比方说 Customer Id, Account Id, 或是 Payment Id, IDNo, Pass-code, Discount Code,不过这次是 Entity 对所有列出的关键属性做划记:
属性、Entity 可能有非常庞大的数量,想要减少一些不相关的资料出现在这张表上,要特别小心有没有疏漏。
第四阶段的目标是:
以上补充,池可以当作是一种字卡,定义完池之後,再把字卡拿出来排列组合。
References:
[1] https://zh.wikipedia.org/wiki/IDEF
[2] https://en.wikipedia.org/wiki/IDEF0
[3] https://support.microsoft.com/zh-hk/office/%E5%BB%BA%E7%AB%8B-idef0-%E5%9C%96-ea7a9289-96e0-4df8-bb26-a62ea86417fc
[4] https://zh.wikipedia.org/wiki/IDEF1X
[5] https://www.cnblogs.com/jplee/archive/2006/10/12/527775.html
[6] https://zh.wikipedia.org/wiki/IDEF1X
[7] https://www.edrawsoft.com/cn/idef0-solutions.php
[8] https://read01.com/0KeBym.html
[9] http://www2.nkfust.edu.tw/~percy%20/Report4/IDEF0_QFD_CIM_Selection.pdf
[10] http://businessprocessagility.com/wp-content/uploads/2015/06/IDEF03-guidebook.pdf
[11] https://edisciplinas.usp.br/pluginfile.php/5043740/mod_resource/content/1/JME2009_p131_140.pdf
[12] https://books.google.com.tw/books?id=TZPHDwAAQBAJ&pg=PA155&lpg=PA155&dq=idef+wiki&source=bl&ots=EL59BiBeVd&sig=ACfU3U0WrAfXu1GIFFHX3K1XDcoUgz60-Q&hl=ja&sa=X&ved=2ahUKEwibxP7Q1djyAhWLN5QKHfZUAqUQ6AF6BAgZEAM#v=onepage&q=idef%20wiki&f=false
<<: Day 10 实用的 let 方法以及客制化错误讯息!
>>: 【Day24】 Transformer 实作包(一)
昨天抱病撰文,终於在本机端将单笔资料透过ORM的方法,成功将新增的订单资料更新到Heroku Pos...
Iteration forEach()、every()、some() 三者的差异在於:他们会对我们...
开始罗!准备好hello world了吗? 昨天我们讲完配置环境了,今天就开始写code吧! 开始吧...
上一篇已经处理好注册与登入的部分,但一个完整的帐户机制还需要包含 登入後 的身份识别,为什麽登入後还...