sql >> Databáze >  >> RDS >> Mysql

Dobrý design databáze, variabilní počet atributů

Možnosti 1, 2 a 3 sdílejí jednu velmi závažnou chybu:když někdo vymyslí nový atribut, musíte upravit základní schéma tabulky. V případě varianty 1 je problém umocněn možností, že bude zaveden nový typ zařízení. Jak jste si jisti, že sada atributů je po celou dobu pevná? Jak rádi budete mít výpadky nebo říct klientovi, že ne, nemůžete mít nový atribut?

Pokud je velmi pravděpodobné, že se budete dotazovat na běžné atributy, můžete zkusit hybrid 3 a 4, přičemž pomlčka 2 bude rozdělena podle typu atributu spíše než podle typu vybavení, což se zdá mnohem nestálejší. Možnost 4, pokud tomu dobře rozumím, je normální formou verze možnosti 1, která řeší všechny její inherentní problémy (řídkost a křehkost).

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 )

atd.



  1. 6 způsobů, jak vybrat duplicitní řádky v SQLite

  2. Připojte se ke vzdálené databázi MySQL přes Python

  3. Je možné zadat parametry pro název tabulky nebo sloupce v připravených příkazech nebo QueryRunner.update()?

  4. Co je nového v PostgreSQL 13?