В отношении доверия моим навыкам кодирования я нахожу, что мои навыки кодирования на самом деле улучшаются, когда я использую TDD и полагаюсь на мои модульные тесты для исправления меня, когда я повреждаю тест. Вы изучаете, как использовать много функций языка, потому что можно сделать тонкую настройку для проверения предположения.
Существует три различных шаблона для этого, задокументированных в Паттернах архитектуры корпоративных приложений Мартина Фаулера, каждый из которых имеет разные компромиссы:
Это один из способов сделать это.
Вообще говоря, есть два других способа:
таблица для каждого подкласса: вместо того, чтобы пытаться совместно использовать базовый класс в базе данных, просто создайте отдельные таблицы для каждой.
таблица для каждой иерархии: поместите расширенный набор всех полей в таблицу, а также столбец «дискриминатор» и сохраните их в одном месте.
Чтобы выяснить, какая из них является правильно, подумайте о шаблонах использования:
Также посмотрите, что ваш инструмент поддерживает наиболее естественно. Все они работают.