我看了一下如何进行数据建模,对于Grakn中角色的具体使用有一些疑问。
我们举一个简单的案例。我有一个公司,这个公司可以是分销商,供应商,客户,或者任何这样的组合。A公司可以同时是分销商和客户。
如果我使用的是关系型数据库,我将会有一个CompanyS的表,然后有SupplierS、CustomerS等表,这些表就会引用Company表。
然而,我想从一个公司开始,知道它在扮演什么角色,而不需要创建这些额外的表。这样,在我的应用程序中,我就可以在一次查询中知道一个公司既是分销商又是供应商。
我能想到的方法有几种,但我觉得这个问题域是如此的普遍,一定有一些最佳实践来模拟这些概念。
所以我在寻找一些常见的模式或策略来对某些实体角色进行建模和命名。我正在使用Grakn。感谢任何帮助。
如果我没理解错的话,你的意思是问选择角色的一般经验规则。选择角色也会涉及到为你的关系、实体和属性选择命名的问题。在给出的案例中。company
是无处不在的实体模型,但是有很多例子你可能会意识到你把实体关系角色的命名搞混了。
试着用这个来做一般指导。
实体: 应该能够在这个世界上独立存在。可以是一个抽象的概念。使用抽象名词(company
, religion
)、集体名词、普通名词。
关系。应该是依附于其角色的存在而存在的。使用抽象名词(marriage
, membership
, hierarchy
)和动词名词(authorship
, ownership
, ).
作用。应该描述一个关系背景下的行为。你可以尝试使用这个句子。一个[实体]的行为就像一个[关系]中的[角色]。例如一个 station
俨然 stop
在...中 train-route
. 应使用名词。
属性。应描述一个 仅数量 例如 name
(字符串)。age
(长)。colour
(字符串)。is-green
(boolean)。verbose
(boolean)。is-running
(boolean)。score
(双)。一般是名词或动词。只要能很好地描述一个值,什么都可以。
如果你很难找到一个名词,就用一个以名词结尾的名字,但前面要加上一个描述性的术语,比如说 authored-book
.