2010-06-14 19 views
15

Mi chiedo perché ho cercato il pdf "[noSql] la guida definitiva" e "inizio [noSql]" per la parola "ereditarietà" ma non ho trovato nulla? mi sto perdendo qualcosa? perché sto facendo un'eredità tablePerHierarchy con hibernate e mysql, questo diventa deprecato per qualche motivo in [noSql]?ereditarietà nel database dei documenti?

(sostituire [NoSQL] con il database "non solo SQL" vi piace)

risposta

43

So che questa risposta è un po 'tardi, ma per MongoDB, probabilmente stai guardando qualcosa di leggermente diverso.

Mongo è schemaless, quindi il concetto di "tablePerHierarchy" non è necessariamente utile.

assumere i seguenti

class A 
    property X 
    property Y 
    property Z 

class B inherits from A 
    property W 

In un RDMS si sarebbe probabilmente avere qualcosa di simile

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

Ma MongoDB non hanno uno schema. Quindi non è necessario strutturare i dati in questo modo. Invece, avresti una "raccolta" contenente tutti gli oggetti (o "documenti") di tipo A o B (o C ...).

Così la vostra collezione sarebbe stata una serie di oggetti come questo:

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

Noterete che sto memorizzazione di oggetti di tipo A accanto oggetti di tipo B. MongoDB rende questo molto facile. Basta tirare su un documento dalla raccolta e "magicamente" ha tutti i campi/proprietà appropriati.

Tuttavia, se si dispone di "oggetti dati" o "entità", è possibile semplificare la vita aggiungendo un tipo.

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

Ciò semplifica la scrittura di una classe factory per il caricamento degli oggetti.

4

Beh, è ​​una domanda piuttosto vecchia, ma da quando sono finito qui mi piacerebbe aggiungere un aggiornamento del 2017.
Se la vostra utilizzando mongoose per connettersi a MongoDB si consiglia di controllare discriminators:

Discriminators sono un meccanismo schema di eredità. Ti consentono di disporre di più modelli con schemi sovrapposti sulla stessa collezione di MongoDB sottostante di .

La documentazione era un po 'vaga per me in un primo momento, questo article potrebbe essere un posto migliore per cogliere l'idea.

Problemi correlati