2010-06-14 15 views
15

Je me demande parce que j'ai cherché le pdf "[noSql] le guide définitif" et "commençant [noSql]" pour le mot "héritage" mais je n'ai rien trouvé? est-ce que je manque quelque chose? parce que je fais un héritage de tablePerHierarchy avec hibernate et mysql, est-ce que cela devient déprécié pour une raison quelconque dans [noSql]?inheritance dans la base de données de documents?

(remplacer [NoSQL] avec la base de données « non seulement sql » vous aimez)

Répondre

43

Je sais que cette réponse est un peu en retard, mais pour MongoDB, vous êtes probablement à quelque chose de légèrement différent.

Mongo est schemaless, donc le concept de "tablePerHierarchy" n'est pas nécessairement utile.

Supposons que les éléments suivants

class A 
    property X 
    property Y 
    property Z 

class B inherits from A 
    property W 

Dans un SGBDR vous aurait probablement quelque chose comme ça

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

Mais MongoDB ne dispose pas d'un schéma. Vous n'avez donc pas besoin de structurer les données de cette manière. Au lieu de cela, vous auriez une "collection" contenant tous les objets (ou "documents") de type A ou B (ou C ...).

donc votre collection serait une série d'objets comme celui-ci:

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

Vous remarquerez que je stocker des objets de type A à côté des objets de type B. MongoDB rend cela très facile. Tirez simplement un document de la collection et il a "magiquement" tous les champs/propriétés appropriés. Toutefois, si vous avez des «objets de données» ou des «entités», vous pouvez vous faciliter la vie en ajoutant un type.

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

Cela facilite l'écriture d'une classe de fabrique pour le chargement de vos objets.

4

Eh bien, c'est une question assez ancienne, mais depuis que je me suis retrouvé ici, je voudrais ajouter une mise à jour 2017.
si vous utilisez mongoose pour se connecter à MongoDB vous pouvez consulter discriminators:

discriminateurs sont un mécanisme d'héritage de schéma. Ils vous permettent de avoir plusieurs modèles avec des schémas chevauchants sur le même sous-jacent MongoDB collection.

La documentation était un peu vague pour moi au début, ce article pourrait être un meilleur endroit pour saisir l'idée.