Jag rekommenderar starkt att du tittar på Klasstabellsarv mönster som definierats av Martin Fowler.
Detta designmönster skapar en enda tabell som innehåller data som är gemensam för alla byggnader till exempel och kräver sedan en separat tabell för all data som är relaterad till en specifik typ av byggnad. En sak som jag tycker är användbar är att lagra ett "typ"-fält i den överordnade tabellen så att du vet vilken typ av enhet du har utan att behöva söka i de underordnade tabellerna efter motsvarande poster.
Jag skulle rekommendera att om du inte har en mycket specifik, väldefinierad anledning att använda en Entity-Attribute-design, att du undviker det. För det första blir det omöjligt när man använder denna typ av design att dra fördel av begränsningar på databasen för att kontrollera vilka indata som krävs och vilka typer av värden som är tillåtna. För en annan kommer det att drastiskt sakta ner alla frågor som behöver dra ut data från dessa typer av fält eftersom data som lagras i dessa fält inte kan indexeras som du vanligtvis skulle göra.