Нам нужна возможность сопоставлять различные типы объектов с различными типами иерархических данных в нашем веб-приложении. В качестве примера рассмотрим объект под названием Vendor. Нам нужна возможность сопоставлять каждый экземпляр поставщика с географическими регионами. Географические области находятся в следующей иерархии:Возможные варианты хранения иерархических данных
- Почтовый индекс - наиболее гранулированный географический район; пример EC2
- Местность - сформирован из почтовых индексов; пример, Кенсингтон. Каждый почтовый код будет частью только одного местоположения, не более того.
- Город - образованный населенных пунктов; например, Лондон. Каждое местонахождение будет частью ровно одного города, не более.
- Район - образованный из городов; Например, Колумбия.
- Провинция - образована из районов (что эквивалентно государству в некоторых странах); например, Южная Каролина.
- Регион - образованный провинций; Например, северо-восточные провинции.
- Страна - сформирована из регионов.
- Зона - из стран; пример Юго-Восточной Азии.
- Континент - сформирован из зон.
У нас есть полная база данных почтовых индексов, населенных пунктов, городов, районов, провинций, регионов, стран, зон и континентов. Это в настоящее время существует как таблицы в СУБД.
Наших случаи использования:
- Возможность ассоциировать Vendor с несколькими регионами, на любом уровне. Например, мы могли бы сопоставить Nestle в материковой Европе (зона), Калифорнии (провинция США) и Большого Лондона (район в Великобритании).
- Возможность исключить некоторые части географии из картографирования. Например, при картировании Nestle до California, мы можем исключить San Diego.
- Если состав географии изменяется, не требуется никаких изменений для сопоставлений, частью которых является география. Например, если почтовый код добавлен в Greater London, отображение с Nestle не требует изменений.
- Возможность запроса базы данных для Поставщик и уровень географии. Например, если мы делаем запрос к базе данных для Nestle и почтовых кодов, мы должны получить все почтовые коды для Большого Лондона, Калифорния (минус почтовые индексы для Сан-Диего) и материковой Европы.Если запрос к базе данных для Nestle и стран, мы должны получить Великобритании (страна для Большого Лондона), США и во всех странах материковой Европы.
Существует много таких сопоставлений со множеством различных типов иерархических данных, это всего лишь одно из требований.
Ищет предложения по хранению иерархических данных и сопоставлений. Пожалуйста, не публикуйте ответы, которые связаны с хранением данных и сопоставлений в таблицах РСУБД, поскольку я уже знаю о вариантах с использованием РСУБД.
Если этот вопрос должен быть помечен конструкцией базы данных, если вы не ищете решение для базы данных? –
Я не ищу решение на базе РСУБД. Могут быть другие решения для баз данных, включающие базы данных NoSQL, такие как Neo4j, Redis и т. Д. Или иерархические базы данных. – manish
Достаточно справедливо :-) –