Я бы предпочел в большинстве случаев таблицу для иерархии классов модель, в которой один столбец является столбцом дискриминатора (вы 1. решение).Если вам действительно нужна вторая таблица из-за большого количества необходимых подтипов, возможно, вам следует разбить таблицы на несколько таблиц, потому что я подозреваю, что большая часть данных будет избыточной и будет иметь нулевое значение.
Существует также таблица для подкласса модели, в которой у вас есть главная таблица с общими данными и дочерние таблицы для подклассов (данные полностью нормализованы), хотя работа с данными такого типасложнее, кроме случаев, когда возможно использование инструмента ORM, такого как NHibernate.
Не могли бы вы привести конкретный пример ситуации, которую вы решаете, потому что в этих случаях количество подклассов обычно известно заранее (например, BillingDetails -> CreditCard,BankAccount и т. Д ...)