Я настоятельно рекомендую вам взглянуть на шаблон Наследование таблиц классов в соответствии с определением Мартина Фаулера.
Этот шаблон проектирования создает одну таблицу, в которой содержатся данные, которые являются общими для всех зданий, например, а затем требуется отдельная таблица для любых данных, относящихся к конкретному типу зданий. Одна вещь, которая мне кажется полезной, - это сохранить поле 'type' в родительской таблице, чтобы вы знали, какой тип сущности у вас есть, без необходимости искать соответствующие записи в дочерних таблицах.
Я бы порекомендовал вам избегать этого, если у вас нет очень конкретной, четко определенной причины для использования дизайна Entity-Attribute. Во-первых, при использовании этого типа конструкции становится невозможным использовать ограничения в базе данных для контроля того, какие входные данные требуются и какие типы значений допустимы. С другой стороны, это резко замедлит любые запросы, которые должны извлекать данные из этих типов полей, потому что данные, хранящиеся в этих полях, не могут быть проиндексированы, как вы это обычно делаете.