Силно препоръчвам да разгледате Наследяване на таблицата на класа модел, както е дефиниран от Мартин Фаулър.
Този модел на проектиране създава една таблица, която съдържа данните, които са общи за всички сгради например и след това изисква отделна таблица за всички данни, които са свързани с конкретен тип сграда. Едно нещо, което намирам за полезно, е да съхраните поле „тип“ в родителската таблица, така че да знаете какъв тип обект имате, без да се налага да търсите в дъщерните таблици за съответните записи.
Бих препоръчал, освен ако нямате много конкретна, добре дефинирана причина да използвате дизайн на обект-атрибут, да го избягвате. От една страна става невъзможно при използване на този тип дизайн да се възползвате от ограниченията на базата данни, за да контролирате какви входове са необходими и какви типове стойности са разрешени. От друга страна, това драстично ще забави всички заявки, които трябва да изтеглят данни от тези типове полета, тъй като данните, съхранявани в тези полета, не могат да бъдат индексирани, както обикновено.