Permítanme indicar un ejemplo simple: usted tiene un pedido y un carrito de compras. Una manera en la que preveo persistir esto es guardar un documento de Pedido y un documento de Carro. El documento de pedido podría tener un campo llamado "carrito de compras" cuyo valor es el UUID del documento de carro relevante. Otra forma en que puedo imaginar hacer esto es guardar un documento de pedido con el campo "carrito de la compra" que contiene una matriz asociativa de todo el carro. En otras palabras, en lugar de guardar explícitamente el Carro como un documento independiente, incrusto el documento del Carro en el documento del Pedido.¿Cuál es la forma idiomática de implementar claves externas en CouchDB?
¿Qué pasa si más tarde decidimos que un carrito debería ser persistente, por lo que un usuario recurrente encontrará su carrito a medio terminar esperando por él en todas las sesiones? Imagino que podríamos combinar ambos métodos, manteniendo el carro separado mientras está incompleto e incrustándolo en el documento de pedido cuando se finaliza/compra.
Ambos métodos funcionarían, aunque me preocupa que CouchDB no tenga restricciones de clave externa; en el primer método, el documento del Carro podría eliminarse, dejándolo con un conjunto de datos corrupto.
¿Cómo se decide qué método usar? ¿Es uno de estos métodos más idiomático para CouchDB? ¿Hay algún método que me perdí?
Soy nuevo en CouchDB, así que es difícil para mí ver las ventajas/desventajas de tener una estructura más o menos normalizada.