Opties 1, 2 en 3 delen één zeer ernstige fout:je moet het onderliggende tabelschema wijzigen wanneer iemand een nieuw attribuut bedenkt. In het geval van optie 1 wordt het probleem verergerd door de mogelijkheid dat er een nieuw type uitrusting wordt geïntroduceerd. Hoe zeker bent u dat de set attributen voor altijd vaststaat? Hoe blij bent u als u uitvalt of de klant vertelt dat u geen nieuw kenmerk kunt hebben?
Als het zeer waarschijnlijk is dat u zoekopdrachten uitvoert op basis van gemeenschappelijke kenmerken, kunt u een hybride van 3 en 4 proberen, met een streepje van 2 bij het splitsen op kenmerktype in plaats van op apparatuurtype, wat veel vluchtiger lijkt. Optie 4 is, als ik het goed begrijp, een normale versie van optie 1 die al zijn inherente problemen oplost (spaarzaamheid en broosheid).
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 )
enz.