sql >> Database >  >> RDS >> Mysql

Goed databaseontwerp, variabel aantal attributen

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.



  1. Hoe maak je een database van shell-opdracht?

  2. Hoe datatypes zoals integers (integer met integer) &varchar (varchar met varchar) in mysql samen te voegen?

  3. Cloud Vendor Deep-Dive:PostgreSQL op DigitalOcean

  4. hoe vind je indexen op een tabel in orakel