Neo4j Cypher - как запросить «унаследованные» отношения на дочернем узле? - PullRequest
0 голосов
/ 23 марта 2019

Я хочу использовать Cypher для запроса всех спецификаций, которые действительны для продукта, но со спецификациями, определенными на разных родительских уровнях продукта.

У меня есть модель данных, которая представляет собой дерево категоризации продукта с уровнями C1, C2, C3, ... и продуктами самого низкого уровня P. Чтобы упростить обслуживание и ввод данных в спецификации продукта, действительность спецификаций продукта определяется на уровнях категоризации. Продукты «наследуют» спецификации, действительные для всех родительских категорий, вплоть до корня дерева категоризации.

(упрощенная) модель данных показана на рисунке. В этом случае спецификации продукта определяются для уровней категоризации C1, C2 и C3. Продукт связан с самым низким уровнем категоризации C3. Моя цель состоит в том, чтобы запросить все спецификации, которые действительны для продукта P, на основе их отношений с уровнями категоризации C1, C2 и C3.

graph model

У меня есть следующие вопросы:

  1. Возможно ли это с помощью одного запроса Cypher?
  2. Какова наилучшая стратегия запросов в большой базе данных? Использовать запрос? Создать реальные отношения для всех допустимых спецификаций для продукта вместо запроса «унаследованных» спецификаций?
  3. Изменить модель данных?

Другие советы?

спасибо

1 Ответ

1 голос
/ 24 марта 2019

Вы можете найти все характеристики продукта, сопоставляя шаблоны переменной длины.

Если у вас есть параметр productId, вы бы использовали что-то вроде этого

MATCH (p:PRODUCT {productId:$productiId)-[:BELONGS_TO*]->(c:Category)<-[:VALID_FOR]-(s:Specification)
RETURN s

для получения соответствующих спецификаций.

Поскольку вы, похоже, работаете над списками материалов, некоторые вещи, которые вы можете захотеть посмотреть:

Управление сложными характеристиками продукта путем разделения его на «атомы» https://www.slideshare.net/neo4j/graphtour-neo4j-murrelektronik

и

Пример того, как вы можете отслеживать версии своей спецификации: https://www.youtube.com/watch?v=7iMraBHtTqE

Раскрытие информации: я являюсь членом команды Graphileon и участвую в показе слайдов и видео.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...