sql >> Database teknologi >  >> RDS >> Mysql

Godt databasedesign, variabelt antal attributter

Valgmulighed 1, 2 og 3 deler en meget alvorlig fejl:du skal ændre det underliggende tabelskema, når nogen finder på en ny attribut. I tilfælde af løsning 1 er problemet forværret af muligheden for, at en ny udstyrstype vil blive introduceret. Hvor sikker er du på, at sættet af attributter er fast for altid? Hvor glad vil du være for at tage afbrydelser eller fortælle kunden, at nej, du kan ikke have en ny egenskab?

Hvis det er meget sandsynligt, at du foretager forespørgsler ud fra almindelige attributter, kan du prøve en hybrid af 3 og 4, med en streg på 2, der er smidt i opdeling på attributtype i stedet for udstyrstype, som virker meget mere flygtig. Mulighed 4, hvis jeg forstår det rigtigt, er en normal version af mulighed 1, som løser alle dens iboende problemer (sparhed og skørhed).

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 )

osv.



  1. Fejl ved omdøbning af en kolonne i MySQL

  2. Lad ikke Streams Pool narre dig

  3. Hvordan bruger du scriptvariabler i psql?

  4. Gå og IN-klausul i Postgres