Я пытаюсь понять идею баз данных noSQL, а точнее, концепцию базы данных диаграммы neo4j. У меня есть опыт работы с базами данных SQL (MySQL, MS SQL), но ограничения управления иерархическими данными заставили меня расширить свои знания. Но теперь у меня есть некоторые вопросы, и я не могу найти их ответы (может быть, я не знаю, что искать).Введение в базы данных объектов
Представьте, что у нас есть список стран мира. Каждый страна имеет свой ВВП каждый год. В каждой стране есть ВВП, рассчитанный по разным источникам - Всемирный банк, их правительство, ЦРУ и т. Д. Каков наилучший способ организации данных в этом случае?
Простейшая вещь, которая пришла в голову, это есть узел (значения являются мнимыми):
China:
GDPByWorldBank2012: 999,
GDPByCIA2011: 994,
GDPByGovernment2012: 1102,
В реляционной базе данных, я бы разделить данные в трех таблицах: Страны, источники и ценности , где в значениях я бы имел значение ВВП, год, идентификатор страны и идентификатор источника.
Другая вещь, которая пришла в голову, - создать узлы ЦРУ, Всемирный банк, но правительство узла выглядит действительно странно. Несмотря на то, идея заключается в том, чтобы иметь отношения (valueIfGDP):
CIA -> valueOfGDP - {year: 2011, value: 994} -> China
World Bank -> valueOfGDP - {year: 2012, value: 999} -> China
Это выглядит довольно странно для меня, более того, что происходит, когда мы добавим значения за все годы из одного источника? У нас было бы несколько отношений или что?
Прошу прощения, если мои вопросы слишком тупые, и я был бы счастлив, если кто-нибудь объяснит мне или покажет мне, какую книгу/статью читать.
Заранее спасибо. :)
Большое спасибо за ваш очень описательный ответ. Еще один вопрос: если мы расширим наш пример Китая и добавим данные в соседние страны, скажем, Россия, я думаю, мне пришлось бы делать исходящие и входящие отношения ': HAS_BORDER_COUNTRY {borderLength: 1000}' между Китаем и Россией? Что лучше - иметь свойство 'totalBorderLength' в узле Китая, или лучше будет суммировать свойство' borderLength' отношений 'HAS_BORDER_COUNTRY'? Я должен еще немного поработать с базой данных, чтобы лучше понять ее. – suricactus
Добро пожаловать :) Опять же, это немного сложно сказать, не имея в виду случаи использования. Из того, что вы описали, мои 2 цента будут идти для суммирования borderLength. – Rolf