ORM (Object Relational Mapping) 是目前在做资料库应用程序中,用来定义型别,然後透过这些定义好的型别建立资料库和程序中的资料 Entity 对应的一种方法。
不过,这个 ORM 与本文的 Object Role Modeling (ORM) 是完全不同的东西,跟他们之间有关的就是他们都涉及资料库,除此之外这篇文章不应混谈 Role Modeling 跟 Relational Mapping。
对於资料库设计的图表以及其关联性设计,我选了三种的建模方法来介绍:
这三种建模方法都是针对问题领域的建模方式,这篇文章要介绍的是其中之一 ORM。
ORM 使用较多文字语义化的方式来描述资料模型和他们的业务逻逻辑,这可以让非专业人士也能够读懂他们的关系。
一个具体的例子来自开发此方法的 Dr. Terry Halpin 的网站:
从第一个例子,就可以知道这是一个用语义化的方式来呈现,我将图稍微修改了一下,从这张图可以知道这里有两个最主要的资料库 Table 以及传入的资料。
[学生.nr]
於 (日期) 被授予 [学位.code]
。
[学生.nr]
攻读 [学位.code]
。
在这段话中,描述了某个资料的学生攻读目标学位 (可能是任何形式的学位,所以要用 code),等到完成攻读後,学生就会在某个指定的资料日期被授予某个学位。
资料库的设计就会有这两个资料,而攻读、被授予本身就是一个事务关联。
从这张图中,也可以看到在完成一个事务处理的当下,要组合哪一些资料进来:
所以连接的空格子不但要描述行为以外,还要给空格子关联其他的物件。
Orm.net 本身也衍生了一个 ORM 很重要的使用方式: Conceptual Queries (概念查询),刚才这个例子其实就是概念的查询。
假设要使用语意化的方式来定义模型有哪些关联,可以参考下图:
在这里可以得到一个结论,ORM 关注的点是物件被 [什麽事务]
关联,这似乎很适合用来描述待开发的系统细节,例如下图是一个颇复杂的电影院系统:
Wiki 上,ORM 的一个完整的范例图是:
显然这是某一个特定问题领域的 ORM 概念查询,图中先用图的方式定义 Employee (员工)
的 has
, was born on
, was hired on
, uses
的事务关联之後,在下方写了语意化的概念:
我还发现了市面上有一个很酷的语意画软件,可以使用自然语言来建模 ORM:
Natural language interface to a Object-Role Modeling aware database
这个软件是: Viev 开发的 Boston Professional,不过看起来是要钱。
除了上述对 ORM 图形的看法之外,我在 [7] 另外找到了手写的画法,这个图中包含了一些举例:
最上方的事务中,绘制了一个包含两个事务的箭头,这表示 【A 学生参加研讨会 / 参加研讨会的 A 学生】 之间是唯一性的关联。
下方的查询则不同,下方是【学生协办研讨会】,一个学生本身可以协办很多个研讨会,因此没有唯一性,可是【P 研讨会参与的学生】是有唯一性的,因为 P 研讨会只会有一个 A 学生。
ORM 的相关文件和教学可以参考 [1] 的网站或是下方的参考中了解看看。
References:
[1] http://www.orm.net/
[2] https://victormorgante.medium.com/object-role-modeling-software-boston-d693ddb43cb8
[3] https://towardsdatascience.com/why-learn-object-role-modelling-4eebd93dcda2
[4] https://www.conceptdraw.com/solution-park/software-orm
[5] https://www.viev.com/index.php/products-menu/boston-professional
[6] http://epaper.gotop.com.tw/pdf/ACL021100.pdf
[7] https://victormorgante.medium.com/why-put-object-role-modeling-at-the-heart-of-a-knowledge-graph-database-f5891c58d42f
[8] http://agilemodeling.com/artifacts/ormDiagram.htm
>>: Day21:[排序演算法]Heap Sort - 堆积排序法
Q: 连假後脑袋不好使呢! A: 脑袋可不可以也Rotate转起来? 本篇还是Loading,这次...
这一篇是这一系列 Libraries 比较文实质性的最後一篇了,在下一篇稍做总结以後接着我们就要正...
有些人常常遇到紧张时刻密码就是打不好, 因此常常错失登入三次失败的机会, 被锁定帐密光是请IT协助就...
565. Array Nesting https://leetcode.com/problems/a...
教育部在108课纲中,要求要做到「带着走的知识」,但如果只是为了考试和升学为目的,现阶段学科补充教材...