最初に、エンティティの種類 (この場合はユーザーとコメント) 間に 1 対多の関係がある単純なケースを見てみましょう。
user ---- * comment
:db.type/ref型の: comment/userなどの属性を使用して、各コメントが正確に 1 人のユーザーを指すようにすることで、これをモデル化することを選択できます。
コメントには最大で 1 人のユーザーが含まれる可能性があるため、これは自然なモデルです。カーディナリティは最大でも 1 であると言います。値の数 (この場合はユーザーへの参照) は 1 を超えることはできません。
これは:db/cardinality :db.cardinality/oneを使用してスキーマで指定できます。これは実際にはデフォルトであるため、明示的に記述する必要はありません。
Datomic エンティティは型指定されていないため、実際のカーディナリティ 1を強制することはできないことに注意してください。どの属性も存在しない可能性があります。(エンティティは、実際の属性を通じて暗黙の型を持ちます。これらの保守と解釈は完全にアプリケーション次第です)
一方、コメントを複数のユーザーに適用したい場合は、多対多の関係があります。
user * ---- * comment
これは、属性:comment/userを:db/cardinality :db.cardinality/manyにすることで実現できます。コメントからユーザーへの複数の参照を許可することにより。
このようにして、各ユーザーを複数のコメントで参照したり、各コメントで複数のユーザーを参照したりできます。
コメントではなくユーザーに多くのカーディナリティの参照を持たせることも同様に選択できます。
これがあなたが始めるのを助けるのに十分明確であることを願っています:)