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