物件角色建模 Object Role Modeling

ORM (Object Relational Mapping) 是目前在做资料库应用程序中,用来定义型别,然後透过这些定义好的型别建立资料库和程序中的资料 Entity 对应的一种方法。

不过,这个 ORM 与本文的 Object Role Modeling (ORM) 是完全不同的东西,跟他们之间有关的就是他们都涉及资料库,除此之外这篇文章不应混谈 Role Modeling 跟 Relational Mapping。

对於资料库设计的图表以及其关联性设计,我选了三种的建模方法来介绍:

  1. Object Role Modeling (物件角色建模)
  2. ER Diagram (Entity Relation) 最常用的建模图
  3. Property Graph

这三种建模方法都是针对问题领域的建模方式,这篇文章要介绍的是其中之一 ORM。

ORM 使用较多文字语义化的方式来描述资料模型和他们的业务逻逻辑,这可以让非专业人士也能够读懂他们的关系。

一个具体的例子来自开发此方法的 Dr. Terry Halpin 的网站:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753MxOYK48Lv3.png

从第一个例子,就可以知道这是一个用语义化的方式来呈现,我将图稍微修改了一下,从这张图可以知道这里有两个最主要的资料库 Table 以及传入的资料。

[学生.nr]於 (日期) 被授予 [学位.code]

[学生.nr] 攻读 [学位.code]

在这段话中,描述了某个资料的学生攻读目标学位 (可能是任何形式的学位,所以要用 code),等到完成攻读後,学生就会在某个指定的资料日期被授予某个学位。

资料库的设计就会有这两个资料,而攻读、被授予本身就是一个事务关联。

从这张图中,也可以看到在完成一个事务处理的当下,要组合哪一些资料进来:

https://ithelp.ithome.com.tw/upload/images/20210921/2009275340gnzVWrNL.png

所以连接的空格子不但要描述行为以外,还要给空格子关联其他的物件。

Orm.net 本身也衍生了一个 ORM 很重要的使用方式: Conceptual Queries (概念查询),刚才这个例子其实就是概念的查询。

假设要使用语意化的方式来定义模型有哪些关联,可以参考下图:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753ETd8WLQuSu.png

在这里可以得到一个结论,ORM 关注的点是物件被 [什麽事务] 关联,这似乎很适合用来描述待开发的系统细节,例如下图是一个颇复杂的电影院系统:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753SY551wFxAN.png

Wiki 上,ORM 的一个完整的范例图是:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753kaUwZmQ75x.png

显然这是某一个特定问题领域的 ORM 概念查询,图中先用图的方式定义 Employee (员工)has, was born on, was hired on, uses 的事务关联之後,在下方写了语意化的概念:

  1. 所有员工的生日一定小於雇用日期
  2. 每个非执行级别的员工最多使用一台公司车
  3. 有执行级别的员工可以使用一些车 (大於 1 台)

我还发现了市面上有一个很酷的语意画软件,可以使用自然语言来建模 ORM:

Natural language interface to a Object-Role Modeling aware database

这个软件是: Viev 开发的 Boston Professional,不过看起来是要钱。

https://ithelp.ithome.com.tw/upload/images/20210921/20092753gYZ3IdGwIm.png

除了上述对 ORM 图形的看法之外,我在 [7] 另外找到了手写的画法,这个图中包含了一些举例:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753vZ5TuppdCR.png

最上方的事务中,绘制了一个包含两个事务的箭头,这表示 【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


<<:  Day 7 从个资隐私裁罚案例中学习

>>:  Day21:[排序演算法]Heap Sort - 堆积排序法

CSS微动画 - Loading来了!时钟转转转

Q: 连假後脑袋不好使呢! A: 脑袋可不可以也Rotate转起来? 本篇还是Loading,这次...

Day 8. Compare × G2 × Slate

这一篇是这一系列 Libraries 比较文实质性的最後一篇了,在下一篇稍做总结以後接着我们就要正...

Day28. Blue Prism最安全的管家 -BP自动登入Gmail

有些人常常遇到紧张时刻密码就是打不好, 因此常常错失登入三次失败的机会, 被锁定帐密光是请IT协助就...

LeetCode解题 Day01

565. Array Nesting https://leetcode.com/problems/a...

户外知识管理系统

教育部在108课纲中,要求要做到「带着走的知识」,但如果只是为了考试和升学为目的,现阶段学科补充教材...