Zdecydowanie polecam zapoznanie się z Dziedziczeniem tabeli klas wzór zdefiniowany przez Martina Fowlera.
Ten wzorzec projektowy tworzy pojedynczą tabelę, która zawiera dane wspólne na przykład dla wszystkich budynków, a następnie wymaga oddzielnej tabeli dla wszelkich danych związanych z określonym typem budynku. Jedną z rzeczy, które uważam za pomocne, jest przechowywanie pola „typ” w tabeli nadrzędnej, abyś wiedział, jaki masz typ encji, bez konieczności przeszukiwania tabel podrzędnych w celu znalezienia odpowiednich rekordów.
Zalecam unikanie tego, chyba że masz bardzo konkretny, dobrze zdefiniowany powód, aby użyć projektu Entity-Atrybut. Po pierwsze, w przypadku tego typu projektu niemożliwe jest wykorzystanie ograniczeń bazy danych do kontrolowania wymaganych danych wejściowych i dozwolonych typów wartości. Po drugie, drastycznie spowolni to wszelkie zapytania, które muszą wyciągnąć dane z tego typu pól, ponieważ dane przechowywane w tych polach nie mogą być indeksowane, jak zwykle.