Свойства на основе узла на основе отношения

Я начинаю с Neo4J, чтобы создать график пользователей и их отношений. На данный момент между пользователями существует единое отношение «ЗНАЕТ», т. Е.

введите описание изображения здесь

Сейчас я хочу указать свойства отношения специально для каждого из пользователей. Например, «интерес», который указывает, насколько пользователь заинтересован в другом пользователе. Могу ли я указать это для каждого пользователя в одной связи ЗНАЕТ, или мне нужно будет создать две связи между пользователями и установить атрибут для каждой из отношений?

Любая помощь будет оценена.


person Swordfish    schedule 07.01.2019    source источник
comment
Если ваши комментарии не представляют ценности для других после того, как человек, которому вы ответили, прочитал их, то рекомендуется удалить их. Обратите внимание, что я удалил здесь свои комментарии.   -  person Guy Coder    schedule 09.01.2019


Ответы (1)


Могу ли я указать это (свойство: интерес) для каждого пользователя в одной связи ЗНАЙТЕ, или мне нужно будет создать две связи между пользователями и установить атрибут для каждой связи?

Вам понадобятся два отношения.

Вы могли бы сделать это с одним, но тогда вам нужно сохранить два свойства в отношении и информацию о том, какое свойство соответствует какому узлу. Намного проще с двумя отношениями.

Из комментария:

Могу ли я сохранить их как двунаправленные или в этом случае мне нужно будет использовать направленность?

Отношения всегда направлены. Концепция двунаправленности появляется только тогда, когда вы запрашиваете, но на самом деле это не двунаправленное, а без направления, например. (a)-[r]-(b). Таким образом, вы должны использовать (a)-[r]->(b) и (b)-[r]->(a) или (a)<-[r]-(b). Если вы запрашиваете направление, тогда вы знаете, как применить свойство отношения.

Обычно я больше работаю с Java в виде встроенного вместо Cypher, и использование направленных запросов окупается, так как сокращает объем кода для выполнения ассоциаций.


Примечание

Поскольку ваш случай настолько прост, просто попробуйте разные методы и посмотрите, что сработает. Не забывайте следить за тем, сколько времени занимают запросы, и при необходимости добавлять индексы. Также используйте инструмент профилирования запросов, чтобы убедиться, что вы делаете эффективные запросы.

person Guy Coder    schedule 07.01.2019