0

Я использую базу данных Couchbase Lite для проекта, которая, как я знаю, очень доволен, потому что она решает мои проблемы, но вызывает у меня один вопрос, связанный с первичными ключами в NoSQL (База данных документов).Schema vs Schemaless DBMS

Как мы все знаем, вся база данных схемы будет представлена ​​в таблицах, и эти таблицы могут иметь или не иметь первичный/бенефитовый ключ. Например, давайте предположим, что у меня есть таблица под названием Student, у которой есть первичный ключ как usn (номер места в университете), наряду с другими атрибутами, именем, фамилией, адресом, номером контакта и т. Д.

usn | имя пользователя | lastname | адрес | контактная информация

2BA11CS409 | abc | mnq | Бангалор | 1234567890

2BA11CS410 | xyz | PQR | Мумбай | 1234567809

Здесь в таблице будет указана ошибка, связанная с нарушением ограничений первичного ключа (не может быть добавлена ​​дублирующаяся клавиша), если я снова попытаюсь добавить значение 2BS11CS409.

Но что происходит в базе данных документов, как это будет определять уникальное значение в документе,

docID:123456789zxcv 

{ 
usn : 2BA11CS409, 
firstname : abc, 
....... 
....... etc 
} 

Я знаю, что каждый документ имеет один уникальный идентификатор, ключ индексируются для поиска в базе данных, но то, что я создал другой документ, с теми же значениями, что и выше,

docID:zxcv123456789 
{ 
usn : 2BA11CS409, 
firstname : abc, 
last 
....... etc 
} 

, когда я пытаюсь получить доступ к одной базе данных с УСН, он должен вернуть мне только один документ, но он возвращает меня два документа могут быть одинаковыми или разными.

Мне нужно знать первичный/уникальный ключевой вид концепции в базе данных документов, который существует в реляционной базе данных. ИЛИ вы можете перенаправить меня на некоторые статьи

Спасибо.

+0

Спасибо @Nils Ziehn, но то, что произойдет в случае, если я хочу переписать документ на основе usn и два документа с тем же usn, присутствует в базе данных, будет ли он показывать два документа или вызывать какие-либо ошибки. любой пример будет оценен – iNasir

ответ

0

Ну, схема уникальных ограничений ключей схемы всегда использует индекс, преимущество для большинства RDB заключается в том, что они предоставляют эту услугу для вас, в случае couchbase вам нужно сделать это самостоятельно. В основном у вас есть вторая коллекция, которая представляет индекс. Каждый раз, когда вы хотите вставить стандартную коллекцию, вы просто сначала проверяете индекс, есть ли документ с usn, который вы хотите вставить, если вы не вставляете документ в обычную коллекцию. Затем вы вставляете документ в индекс с docId=usn, и если вы хотите, вы можете вставить ссылку на docID документа, который вы вставили в обычную коллекцию.

+0

После некоторых глубоких исследований я пришел к определенному моменту. Я могу использовать 'docID' для хранения' USN', вместо некоторого нежелательного/случайного значения в нем. Перед установкой значения в базе данных я могу проверить, присутствует ли этот документ с 'docID: 2BA11CS409', если его _true_ я могу помешать им вставить такое же значение. – iNasir