Давайте сначала рассмотрим более простой случай, когда у вас есть отношение «один ко многим» между типами сущностей (в вашем случае пользователи и комментарии):
user ---- * comment
Вы можете моделировать это, позволяя каждому комментарию указывать только на одного пользователя с помощью атрибута, скажем, :comment/user типа :db.type/ref.
Это было бы естественной моделью, поскольку комментарий мог иметь не более одного пользователя. Мы говорим, что мощность не больше 1, т.е. количество значений (в данном случае ссылок на пользователей) не может превышать 1.
Это можно указать в схеме с помощью :db/cardinality :db.cardinality/one, что на самом деле используется по умолчанию, поэтому нам не нужно указывать это явно.
Обратите внимание, что, поскольку объекты Datomic не типизированы, невозможно принудительно установить фактическую кардинальность, равную 1, т.е. любой атрибут может отсутствовать. (Сущности имеют неявные типы через их фактические атрибуты. Их обслуживание и интерпретация полностью зависят от вашего приложения)
С другой стороны, если вы хотите, чтобы какой-либо комментарий был применим более чем к одному пользователю, у вас есть отношение «многие ко многим»:
user * ---- * comment
Этого можно добиться, разрешив атрибуту :comment/user иметь значение :db/cardinality :db.cardinality/many, т.е. разрешая множественные ссылки из комментариев на пользователей.
Таким образом, на каждого пользователя могут ссылаться несколько комментариев, и каждый комментарий может ссылаться на нескольких пользователей.
Вы также можете сделать так, чтобы количество ссылок на количество элементов было указано на пользователей, а не на комментарии.
Я надеюсь, что это достаточно ясно, чтобы помочь вам начать :)
person
clojureman
schedule
12.02.2013
In terms of this type of system, how do we model these relationships
не уверены, что вы ожидаете, что кто-то создаст для вас всю соответствующую схему Datomic...? отношения «многие ко многим» говорят сами за себя, нет необходимости в конкретном бизнес-примере - person deprecated   schedule 12.02.2013