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.