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