sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo modelaría cliente> pedido> pedido> producto en la base de datos NoSql?

Una consideración importante al diseñar un esquema para MongoDB no es cuáles son sus datos, sino cómo los usará. Sin determinar qué tipo de lecturas y escrituras realizará (y qué rendimiento tendrán), puede resultar difícil diseñar un esquema "óptimo".

Hay algunas pautas básicas que puede considerar para evitar tener problemas. Una de ellas es evitar diseñar documentos que sigan creciendo sin límites. Eso significa que no debe incrustar pedidos en los documentos del cliente. Otra regla es que las cosas que no son "de interés" por sí mismas (o que no existen por sí solas) probablemente estén mejor incrustadas. Esto sugiere que los elementos de pedido no merecen su propia colección y simplemente deben tratarse como atributos de pedidos (que es lo que son, de hecho).

Este ejercicio exacto está cubierto en la capacitación para desarrolladores de MongoDB, siendo un ejemplo bastante típico de diseño de esquema.

La conclusión es que deberías tener tres colecciones:

Productos
Clientes
Pedidos

Los pedidos harán referencia a los clientes (opcionalmente, desnormalizando parte de la información de la recopilación del cliente) y harán referencia a los productos (en la matriz de artículos de pedido que contendrán).

Las colecciones adicionales y los campos exactos en todas estas colecciones dependen de su caso de uso específico, pero no veo un escenario factible para tener menos colecciones que estas tres.