PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

SQL :Avantages d'un ENUM par rapport à une relation un-à-plusieurs ?

Exemple illustré avec PostgreSQL, mais d'autres SGBDR ont une syntaxe similaire

C'est faux. Ce n'est pas une exigence SQL ISO/IEC/ANSI, donc les bases de données commerciales ne le fournissent pas (vous êtes censé fournir des tables de recherche). Le petit bout de la ville implémente divers "extras", mais ne met pas en œuvre les exigences plus strictes, ou le grognement, du gros bout de la ville.

Nous n'avons pas non plus d'ENUM dans un DataType, c'est absurde.

Le premier inconvénient des ENUM est qu'ils ne sont pas standard et donc non portables.

Le deuxième gros inconvénient des ENUM est que la base de données est fermée. Les centaines d'outils de rapport qui peuvent être utilisés sur une base de données (indépendante de l'application), ne peuvent pas les trouver, et ne peuvent donc pas projeter les noms/significations. Si vous aviez une table de recherche SQL standard normale, ce problème est éliminé.

La troisième est que lorsque vous modifiez les valeurs, vous devez modifier DDL. Dans une base de données SQL standard standard, il vous suffit d'insérer/mettre à jour/supprimer une ligne dans la table de recherche.

Enfin, vous ne pouvez pas facilement obtenir une liste du contenu de l'ENUM ; vous pouvez avec une table de recherche. Plus important encore, vous disposez d'un vecteur pour effectuer toutes les requêtes Dimension-Fact, éliminant ainsi le besoin de sélectionner dans la grande table Fact et GROUP BY.