Я планирую использовать 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 СДЕЛАНО?
Спасибо, Дэвид! Да, я прочитал, что дизайн модели данных должен основываться на запросах, которые вы хотите выполнить. Я попытался определить точные запросы, которые мне понадобятся, не зная, как это будет реализовано. Полагаю, мои вопросы касаются того, насколько близко возможности Neo4J будут отображаться в моей логике домена. –
Простите мое невежество Дэвида, но могло ли ваше предложение означать, что когда пользователь делает запрос, они изменяют базу данных путем добавления или удаления отношений? –
Нет - вам придется обновлять свои отношения всякий раз, когда вы обновляете свойства в своих узлах. Запросы только для чтения должны быть идемпотентными. Вы не должны обновлять свою базу данных в запросе на чтение. –