наследование в базе данных документов? - PullRequest
18 голосов
/ 15 июня 2010

Мне интересно, потому что я искал в pdf "[noSql] полное руководство" и "begin [noSql]" слово "наследование", но я ничего не нашел? я что-то пропустил? потому что я делаю наследование tablePerHierarchy с hibernate и mysql, становится ли это устаревшим по какой-то причине в [noSql]?

(замените [noSql] на базу данных "not only sql", которая вам нравится)

Ответы [ 2 ]

48 голосов
/ 22 июня 2010

Я знаю, что этот ответ немного запоздал, но для MongoDB вы, вероятно, смотрите на что-то немного другое.

Mongo не имеет схемы, поэтому понятие "tablePerHierarchy" не обязательно полезно.

Предположим следующее

class A
  property X
  property Y
  property Z

class B inherits from A
  property W

В RDMS у вас, вероятно, будет что-то вроде этого

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

Но у MongoDB нет схемы. Таким образом, вам не нужно структурировать данные таким образом. Вместо этого у вас будет «коллекция», содержащая все объекты (или «документы») типа A или B (или C ...).

Итак, ваша коллекция будет представлять собой серию таких объектов:

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

Вы заметите, что я храню объекты типа A рядом с объектами типа B. MongoDB делает это очень легко. Просто возьмите Документ из Коллекции, и он «волшебным образом» имеет все соответствующие поля / свойства.

Однако, если у вас есть «объекты данных» или «сущности», вы можете упростить свою жизнь, добавив тип.

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

Это облегчает написание фабричного класса для загрузки ваших объектов.

7 голосов
/ 10 февраля 2017

Ну, это довольно старый вопрос, но так как я попал сюда, я бы хотел добавить обновление 2017 года.
Если вы используете mongoose для подключения к MongoDb, вы можете проверить дискриминаторов :

Дискриминаторы - это механизм наследования схемы. Они позволяют вам иметь несколько моделей с перекрывающимися схемами поверх одной и той же базовая коллекция MongoDB.

Поначалу документация была для меня немного расплывчатой, эта статья могла бы стать лучшим местом для понимания этой идеи.

...