2016-03-07 1 views
0

В настоящее время я изучаю NOSQL-облачность и пытаюсь создать базу данных, поскольку я изучаю, что я облачный обрабатываю все записи как документы и используя денормализацию для таблицы. поэтому я в настоящее время немного запутался в том, как решить, какой из них должен быть в одном документе и какой из них нужно разделить.Решите создать несколько баз данных и реляционные в cloudant

Ниже приведен мои тестовые примеры: скажем я уверен, проектирование магазина книги структуры таблицы, для простоты я буду с этим таблицей BOOK, STORE, STORE_BRANCH

BOOK поле: _id, BOOK_NAME, автор STORE поле: _id, store_name STORE_BRANCH поле: _id, store_branch_name, адрес, store_id_fk

с вышеуказанным случаем, я не могу решить, где я должен положить поле «цена»? как и для обычных СУБД, я просто создаю другую таблицу и получаю поля: (store book_id, store_branch_id и цены), это с предположением, что цена каждой книги разная. так что мне интересно, как я положил это в облачный?

любое предложение оценили

ответ

3

Ваши сомнения являются довольно общими для пользователя RDMBS. В NoSQL обычно используется подход «все в одном документе». Фактически, в некоторых случаях приближение JOINs в документально-ориентированной базе данных, такой как Cloudant, совершенно тривиально. Например, если вы хотите смоделировать отношения one-to-n, вы можете поместить все n-связанные документы в документ, к которому они принадлежат. В вашем случае вы должны поместить все store_branch в соответствующий магазин. Эта стратегия в порядке, если:

  • Документ не настолько велик, что он ухудшает производительность. Это можно немного смягчить, используя представления базы данных или функции show.
  • Информация, содержащаяся во внутреннем документе, появляется только там и не нуждается в дублировании в других документах, или такое дублирование приемлемо для вашего приложения.
  • Документ не обновляется одновременно. Если это так, скорее всего, будут ненужные конфликты, которые должны быть разрешены приложением.

Если вышеуказанная стратегия не применима, вы можете использовать подход, который более точно имитирует решение этой проблемы в реляционной базе данных: вы можете создать документ для каждой «реляционной таблицы». В вашем случае вы должны создать документ с полями: (store book_id, store_branch_id и цены).

В этой статье «Облако» очень глубоко объясняются эти возможности: Cloudant - Join the fun, have fun with JOINs.

+0

спасибо Умберто за ссылку и объяснение. Я буду следовать рекомендациям по установке для STORE и STORE_BRANCH может быть одним документом и создать другой документ для реляционных STORE_BRANCH и BOOK. поэтому мой следующий вопрос заключается в том, что я совмещаю STORE_BRANCH в STORE. поэтому реляционный документ будет иметь поле BOOK_ID, STORE_ID.BRANCH_NAME и PRICE. это верно? , так что значение будет иметь следующее: cloudant_001, popular.popular_north_brach, 200? – kkurni

+0

Магазин должен содержать список связанных филиалов магазина. Все документы –

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