Ответ 1
По мнению моего ученика, одностраничное наследование делает базу данных более малой по сравнению с другими подходами, потому что она использует только 1 таблицу.
Не обязательно. Если у объектов вашей иерархии не так много атрибутов, это приведет к множеству нулевых столбцов и будет тратить много места.
Но я читал, что более любимым подходом является Наследование класса на основе Билла Карвина.
ИМХО, нет единого ответа, разные стратегии (одна таблица для каждой иерархии, одна таблица для конкретного класса, одна таблица для каждого класса) имеют все сильные и слабые стороны и выбор одного или другого зависит от контекста.
Одиночные занавески для одного заглавия за и против, и в этом случае он использовался?
Эта стратегия хороша, когда вам нужны "полиморфные" запросы (нет необходимости в соединениях или объединениях), если вы можете свести к минимуму количество столбцов с возможностью NULL (и убедить DBA в том, что денормализованная схема не будет проблемой в долгосрочной перспективе),
На самом деле, я предлагаю проверить отображение объектов в реляционных базах данных: подробное описание O/R Скоттом Амблером (автором справочного документа об ORM) и особенно в разделе 2.6 Сравнение стратегий - нет смысла перефразировать его.
Его краткое изложение стратегии единого стола:
Преимущества:
- Простой подход.
- Легко добавлять новые классы, вам просто нужно добавить новые столбцы для дополнительных данных.
- Поддерживает полиморфизм, просто изменяя тип строки.
- Доступ к данным происходит быстро, потому что данные находятся в одной таблице.
- Специальная отчетность очень проста, поскольку все данные находятся в одной таблице.
Недостатки:
- Связывание внутри иерархии классов увеличивается, потому что все классы напрямую связаны с одной и той же таблицей. Изменение одного класса может повлиять на таблицу, которая может повлиять на другие классы в иерархии.
- Пространство потенциально теряется в базе данных.
- Указание типа становится сложным, если существует значительное перекрытие между типами.
- Таблица может быстро расти для больших иерархий.
Когда использовать:
- Это хорошая стратегия для простых и/или неглубоких иерархий классов, где между типами внутри иерархии мало или нет.
Но я горячо рекомендую прочитать всю газету.