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

MongoDB normalización, clave externa y unión

MongoDB no admite relaciones de clave externa del lado del servidor, también se desaconseja la normalización. Debe incrustar su objeto secundario dentro de los objetos principales si es posible, esto aumentará el rendimiento y hará que las claves foráneas sean totalmente innecesarias. Dicho esto, no siempre es posible, por lo que existe una construcción especial llamada DBRef que permite hacer referencia a objetos en una colección diferente. Esto puede no ser tan rápido porque DB tiene que hacer consultas adicionales para leer objetos, pero permite una especie de referencia de clave externa.

Aún así tendrás que manejar tus referencias manualmente. Solo mientras busca su DBRef verá si existe, la base de datos no revisará todos los documentos para buscar las referencias y eliminarlas si el destino de la referencia ya no existe. Pero creo que eliminar todas las referencias después de eliminar el libro requeriría una sola consulta por colección, no más, así que no es tan difícil.

Si su esquema es más complejo, probablemente debería elegir una base de datos relacional y no nosql.

También hay un libro sobre el diseño de bases de datos MongoDB:Diseño de documentos para MongoDB

ACTUALIZAR El libro anterior ya no está disponible, sin embargo, debido a la popularidad de MongoDB, hay muchos otros. No los vincularé a todos, ya que es probable que dichos enlaces cambien, una simple búsqueda en Amazon muestra varias páginas, por lo que no debería ser un problema encontrar algunas.

Consulte la página del manual de MongoDB para 'Referencias manuales' y DBRefs para obtener más detalles y ejemplos