2013-08-25 5 views
3

Я планирую использовать Neo4j для обработки базы данных, которую я заинтересован в создании.Возможны ли условные и комбинаторные условные отношения в Neo4j?

Я не определился с моделью данных, которую я буду использовать для представления своего домена, но давайте предположим модель для базы данных с узлами Evaluator и State с еще неопределенными отношениями между ними. Мне нужна база данных, которую нужно сделать следующим образом:

ФУНКЦИЯ 1 Каждый оценщик может иметь результат, который может быть выше или ниже базового диапазона. Для данного оценщика (E1), если результат выше базового диапазона (BR), существует отношение к состоянию S1. если результат находится в пределах базового диапазона (BR), нет никакого отношения к какому-либо государству. если результат ниже базового диапазона (BR), существует отношение к состоянию S2. Следовательно, Оценщик может иметь два свойства: результат и базовый диапазон. Базовый диапазон может быть представлен как базовый диапазон Hi и Base low low для легкого расчета.

Допустим, пользователь вводит результат для данного Оценщика; Я хотел бы, чтобы этот ввод вызывал автоматический запрос, который зависит от значения результата по отношению к базовому диапазону. Этот запрос возвращает все состояния, связанные с оценщиком с заданным значением результата. Ключевой идеей здесь является условная связь в зависимости от значения пользовательского ввода. Я уверен, что есть другие способы сделать это (свойство отношения?), Но для меня интересна одна и та же идея условного отношения, основанного на пользовательском вводе.

CAN FUNCTION 1 СДЕЛАНО?

FUNCTION 2 Тогда скажем, что есть 2 оценщика E1 и E2. Допустим, что различные комбинации Оценщиков со значениями выше или ниже их различных диапазонов базовых имеют условные отношения к S1, S2 ... Sn

 E1 High, E2 low; relationship with S1 
     E1 High E2 BR; relationship with S2 
     E1 High, E2 High; relationship with S3 
     E1 BR, E2 High; relationship with S4 
     E1 low, E2 High; relationship with S5 
     E1 BR, E2 BR; no relationship to a State 

Допустим, пользователь вводит значение для результатов для Е1 и Е2. Я хотел бы, чтобы эта комбинация вызывала автоматический запрос, который также зависит от значения результатов по отношению к базовым диапазонам. Этот запрос возвратит все состояния, связанные с E1 и E2, с заданными значениями результата. Ключевой идеей здесь является комбинаторная условная связь в зависимости от значения пользовательского ввода.

CAN FUNCTION 2 СДЕЛАНО?

ответ

0

Этот вопрос действительно кажется ориентированным на вашу логику домена приложения, а не на сам Neo4j. С Neo4j вполне возможно динамически добавлять/удалять узлы, добавлять/удалять отношения и т. Д. Для функции 1 вам просто нужно добавить или удалить связь между E1 и S1/S2 (через вашу логику приложения, нет автоматического механизм условных отношений, на который можно положиться). И для функции 2 снова нужно добавить или удалить связь между E1/E2 и S1 - S5 (или просто оставить E1 & E2 без каких-либо отношений).

Вы можете выполнить любой запрос + добавить или запросить + удалить с помощью Cypher (последняя документация - here).

+0

Спасибо, Дэвид! Да, я прочитал, что дизайн модели данных должен основываться на запросах, которые вы хотите выполнить. Я попытался определить точные запросы, которые мне понадобятся, не зная, как это будет реализовано. Полагаю, мои вопросы касаются того, насколько близко возможности Neo4J будут отображаться в моей логике домена. –

+0

Простите мое невежество Дэвида, но могло ли ваше предложение означать, что когда пользователь делает запрос, они изменяют базу данных путем добавления или удаления отношений? –

+0

Нет - вам придется обновлять свои отношения всякий раз, когда вы обновляете свойства в своих узлах. Запросы только для чтения должны быть идемпотентными. Вы не должны обновлять свою базу данных в запросе на чтение. –

Смежные вопросы