2010-06-14 244 views
15

Me pregunto porque busqué en el pdf "[noSql] la guía definitiva" y "comenzando [noSql]" por la palabra "herencia" pero no encontré nada? ¿Me estoy perdiendo de algo? porque estoy haciendo una herencia TablePerHierarchy con hibernate y mysql, ¿eso queda obsoleto por alguna razón en [noSql]?herencia en la base de datos de documentos?

(reemplace [NoSQL] con la base de datos "no sólo SQL" se quiere)

Respuesta

43

Sé que esta respuesta es un poco tarde, pero para MongoDB, es probable que mirando algo ligeramente diferente.

Mongo no tiene esquemas, por lo que el concepto de "tablePerHierarchy" no es necesariamente útil.

Supongamos la siguiente

class A 
    property X 
    property Y 
    property Z 

class B inherits from A 
    property W 

En un RDBMS que probablemente tendría algo como esto

table A: columns X, Y, Z 
table B: columns X, Y, Z, W 

Pero MongoDB no tiene un esquema. Por lo tanto, no es necesario estructurar los datos de esta manera. En cambio, tendría una "colección" que contiene todos los objetos (o "documentos") de tipo A o B (o C ...).

Así que su colección sería una serie de objetos de esta manera:

{"_id":"1", "X":1, "Y":2, "Z":3} 
{"_id":"2", "X":5, "Y":6, "Z":7, "W":6} 

Se dará cuenta de que estoy almacenar objetos de tipo A junto a objetos de tipo B. MongoDB hace esto muy fácil. Simplemente levante un Documento de la Colección y "mágicamente" tiene todos los campos/propiedades apropiados.

Sin embargo, si tiene "objetos de datos" o "entidades", puede hacer su vida más fácil agregando un tipo.

{"_id":"1", "type":"A", "X":1, "Y":2, "Z":3} 
{"_id":"2", "type":"B", "X":5, "Y":6, "Z":7, "W":6} 

Esto hace que sea más fácil escribir una clase de fábrica para cargar sus objetos.

4

Bueno, es una pregunta muy antigua, pero desde que terminé aquí me gustaría agregar una actualización de 2017.
Si su uso mongoose para conectarse a MongoDB es posible que desee echa un vistazo a discriminators:

discriminadores son un mecanismo de herencia esquema. Le permiten tener varios modelos con esquemas superpuestos encima de la misma colección de MongoDB .

Documentación era un poco vago para mí al principio, este article podría haber un lugar mejor para captar la idea.

Cuestiones relacionadas