30 таблиц легче понять, чем 30 000 строк кода.Я работал с базами данных, в которых более 100 таблиц.Я бы не беспокоился о 30.
Дизайн таблиц для захвата сущностей, сгруппированных в суперкласс и несколько подклассов, является примером шаблона проектирования gen-spec.Gen-spec знаком объектно-ориентированным программистам по наследованию классов.Но дизайн реляционных таблиц, отражающих шаблон gen-spec, часто не включается в вводные тексты при проектировании базы данных.
К счастью, это хорошо понято.Веб-поиск по «реляционному моделированию специализации обобщения» даст множество статей по этой теме, включая несколько предыдущих обсуждений SO.
Как вы указали, данные, общие для всех специализированных объектов, попадают в общую таблицу (суперкласс), в то время как данные, свойственные данному специализированному объекту, попадают в соответствующую специализированную таблицу (подкласс).Хитрость в дизайне заключается в том, как таблицы подклассов получают первичный ключ.Первичный ключ для таблиц подкласса не является автоинкрементным числом.Это копия ПК из таблицы суперкласса.Это позволяет легко получить все данные о конкретной специальности, просто выполнив объединение.Это также делает ненужным включение полей типа, поскольку каждая специализированная таблица покрывает свой собственный подкласс.
Это немного сложно настроить и обновить, но оно окупается во время поиска.