Эти вопросы невероятно специфичны для реляционной базы данных.
В CouchDB или любой другой не-RDBMS вы не будете хранить свои данные так же, как в RDBMS, поэтому проектирование отношений таким способом может быть не лучшим. Но просто для того, чтобы дать вам представление о том, как вы могли бы это сделать, давайте предположим, что у вас есть документ для поставщика и пакет документов для заказов, которые необходимо «связать» с документом поставщика.
Первичных ключей нет, в документах есть _id, который является uuid. Если у вас есть документ для поставщика, и вы создаете новый документ для чего-то вроде заказа, вы можете ссылаться на документы поставщика _id.
{"type":"order","vendor-id":"asd7d7f6ds76f7d7s"}
Чтобы просмотреть все заказы для конкретного поставщика, вы должны иметь вид карты примерно так:
function(doc) { if (doc.type == 'order') {emit(doc['vendor-id'], doc)}}
Документ _id не изменится, поэтому здесь присутствует "целостность", даже если вы измените другие атрибуты в документе поставщика, такие как их имя или платежная информация. Если вы вставите имя поставщика или другие атрибуты из документа поставщика непосредственно в документ заказа, вам потребуется написать сценарий, если вы когда-нибудь захотите изменить их массово.
Надеюсь, это немного поможет.