我意识到,在dataomic中,我们不需要普通的透视表,因为我们只需选择关系的一侧,并在其上放置:db.cardinality/many
属性(确保仅在一个方向上对关系建模(。
在从sql转换时,我遇到的下一件事是一个透视表,它还存储关系的一个属性,比如:
series_subscriptions
user_id int
series_id int
expires_at timestamp
我想知道在数据模型中有什么选择。我注意到模式中有一些东西我还不了解原因,或者不了解适当的用法,比如复合元组、组件。
不过,一种选择是将枢轴提升到自己的实体,这样它就可以处理额外的属性:
:series-subscription/user ; ref, one
:series-subscription/series ; ref, one
:series-subscription/timestamp ; timestamp, one
但以上似乎有点不对。这样做意味着在数据日志中,联接将不再是隐式的,这似乎是一种损失。不知道是否有更好的选择。
自2019年7月推出以来,异构元组是实现这一目标的更简洁的方法。
请参阅此问题的答案。
2019年7月对Datomic的更新同时包含了许多不同的功能,尽管文档确实对其进行了解释(不需要太多解释——这是一个简单但可能并不容易的例子(,但使用情况尚未在网上得到很好的记录。请注意,特别是异构元组解决了这里的问题,忽略其他类型的元组可以开始使用此用例。