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