Opcje 1, 2 i 3 mają jedną bardzo poważną wadę:musisz zmodyfikować podstawowy schemat tabeli, gdy ktoś wymyśli nowy atrybut. W przypadku Opcji 1 problem jest spotęgowany możliwością wprowadzenia nowego typu sprzętu. Na ile jesteś pewien, że zestaw atrybutów jest stały na zawsze? Jak bardzo będziesz zadowolony, gdy wyłączysz przerwy lub powiesz klientowi, że nie, nie możesz mieć nowego atrybutu?
Jeśli bardzo prawdopodobne jest, że będziesz wykonywać zapytania na podstawie typowych atrybutów, możesz spróbować hybrydy 3 i 4, z kreską 2 rzuconą w podziale na typ atrybutu, a nie typ wyposażenia, co wydaje się znacznie bardziej niestabilne. Opcja 4, jeśli dobrze rozumiem, to normalna wersja opcji 1, która rozwiązuje wszystkie związane z nią problemy (rzadkość i kruchość).
INVENTORY( id*, model, manufacturer, serial )
ATTRIBUTE( id*, name, type, description )
INVENTORY_FACT_STRING( inv_id*, attr_id*, value )
INVENTORY_FACT_NUMBER( inv_id*, attr_id*, value )
INVENTORY_FACT_LIST_STRING( inv_id*, attr_id*, ordinal*, value )
itp.