PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

SQL:vantaggi di un ENUM rispetto a una relazione uno-a-molti?

Esempio mostrato usando PostgreSQL, ma altri RDBMS hanno una sintassi simile

Non è corretto. Non è un requisito SQL ISO/IEC/ANSI, quindi i database commerciali non lo forniscono (dovresti fornire tabelle di ricerca). Il capoluogo implementa vari "extra", ma non implementa i requisiti più severi, o il grugnito, del capoluogo.

Non abbiamo nemmeno ENUM come parte di un DataType, questo è assurdo.

Il primo svantaggio di ENUM è che non è standard e quindi non portabile.

Il secondo grande svantaggio di ENUM è che il database è chiuso. Le centinaia di Report Tools che possono essere utilizzati su un database (indipendenti dall'app), non riescono a trovarli e quindi non possono proiettarne i nomi/significati. Se si dispone di una normale tabella di ricerca SQL standard, il problema viene eliminato.

Il terzo è, quando si modificano i valori, è necessario modificare DDL. In un normale database SQL standard, è sufficiente inserire/aggiornare/eliminare una riga nella tabella di ricerca.

Infine, non è possibile ottenere facilmente un elenco del contenuto dell'ENUM; puoi farlo con una tabella di ricerca. Ancora più importante, hai un vettore con cui eseguire qualsiasi query Dimension-Fact, eliminando la necessità di selezionare dalla grande tabella Fact e GROUP BY.