Существует два основных способа обработки подтипов: либо с разреженными столбцами, добавляя столбцы для каждого возможного свойства (предпочтительно с проверочными ограничениями, чтобы значения имели только один тип), либо для создания таблицы для супертипа и затем трех таблиц подтипы, каждый с внешними ключами обратно в таблицу супертипов. Затем добавьте проверочное ограничение, чтобы гарантировать, что только один из трех возможных столбцов типа не равен нулю.
Лично я решаю, какую из двух реализаций использовать, основываясь на том, насколько похожи подтипы. Если 90% столбцов являются общими, я использую метод разреженных столбцов, если очень мало информации используется, я использую метод нескольких таблиц.