sql >> Databasteknik >  >> RDS >> Mysql

Bra databasdesign, varierande antal attribut

Alternativ 1, 2 och 3 delar en mycket allvarlig brist:du måste ändra det underliggande tabellschemat när någon kommer på ett nytt attribut. I fallet med alternativ 1 förvärras problemet av möjligheten att en ny utrustningstyp kommer att introduceras. Hur säker är du på att uppsättningen attribut är fast för alla tider? Hur glad blir du över att ta avbrott eller berätta för kunden att nej, du kan inte ha ett nytt attribut?

Om du med stor sannolikhet kommer att göra frågor från vanliga attribut, kan du prova en hybrid av 3 och 4, med ett streck på 2 i delning på attributtyp snarare än utrustningstyp, vilket verkar mycket mer flyktigt. Alternativ 4, om jag förstår det rätt, är en normal version av alternativ 1 som löser alla dess inneboende problem (gleshet och sprödhet).

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 )

etc.



  1. varför hämtar detta inte data från 7 dagar tillbaka?

  2. WHERE IN-tillstånd accepterar inte strängvärde

  3. Oracle (gamla?) Joins - Ett verktyg/manus för konvertering?

  4. Ta bort dubblett från en tabell