Datomic のより慣用的なスキーマについて質問があります。
Userと のエンティティがあるPostとしましょうTopic。
PostTopic、Userおよびその他Post(返信)に属することができます。さて、私は、
a) s の:posts単なるリストである属性を作成し、多数のsPostへの参照を必要とするすべてのエンティティにそれを挿入しますか?Post
また
b) aが User への参照である属性を持ち、おそらくaまたは another のいずれかを参照できる属性をPost持つように、より明示的な関係を確立しますか?:post/author:post/belongs-toTopicPost
観察: bを実行すると、より意味的な関係が得られるようです。私は例えば を行うことができます(:post/_author user-entity), これは彼らの関係の性質をより説明しています(なぜなら, aが を持っている(:posts user-entity)とはどういう意味ですか? それらはs のお気に入りの ですか, 作成された ですか?)User:postsUserPostPost
bのもう 1 つの副作用はPost、他のエンティティを変更せずに新しいものを作成できることです。を実行する場合、 を作成し、それを の属性にPost挿入する必要があり、1 回ではなく 2 回の操作が必要になります。:postsUser
しかし、私はそれを行うより慣用的な方法かもしれないと感じています。たとえば、属性を介して参照するのではなく、参照:postsする場合、属性のリストが時間の経過とともにどのように変化したかを確認する方が簡単だと思われます。User:postsPostUser:post/author
何が望ましいでしょうか、またその理由は何ですか?