Методы для наследования базы данных?

31
задан Eric Lavoie 18 June 2014 в 14:42
поделиться

2 ответа

Три общих стратегии:

  1. Составляют таблицу для каждого класса в иерархии, которые содержат свойства, определенные для каждого класса и внешнего ключа назад к таблице суперкласса верхнего уровня. Таким образом, Вы могли бы иметь vehicle таблица с другими таблицами как car и airplane, которые имеют vehicle_id столбец. Недостаток здесь - то, что Вы, возможно, должны выполнить много соединений только для вывода одного типа класса.

  2. Составляют таблицу для каждого класса в иерархии, которая содержит все свойства. Этот может стать хитрым, так как не легко поддержать общий идентификатор через все таблицы, если Вы не используете что-то как последовательность. Запрос для супертипа класса потребовал бы объединений против всех рассматриваемых таблиц.

  3. Составляют одну таблицу для всей иерархии классов. Это устраняет соединения и объединения, но требует, чтобы все столбцы для всех свойств класса были в одной таблице. Необходимо будет, вероятно, оставить большинство столбцов nullable, так как некоторые столбцы не будут относиться к записям другого типа. Например, vehicle таблица могла бы содержать столбец, названный wingspan, который соответствует эти Airplane тип. При создании этого столбца NOT NULL затем, любой экземпляр Car вставленный в таблицу потребует значения для wingspan даже при том, что значение NULL могло бы иметь больше смысла. При отъезде столбца nullable, Вы смогли работать вокруг этого с проверочными ограничениями, но это могло стать ужасным. ( Единственное Наследование Таблицы )

27
ответ дан 27 November 2019 в 22:38
поделиться

Глава 8. Наследование, Отображающееся в следующей ссылке также, обсудило это. http://nhibernate.info/doc/nh/en/index.html#inheritance

Это - документ NHibernate.

5
ответ дан 27 November 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: