PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

SQL:Vantagens de um ENUM versus um relacionamento um-para-muitos?


Exemplo mostrado usando PostgreSQL, mas outros RDBMS's possuem sintaxe semelhante

Isso é incorreto. Não é um requisito ISO/IEC/ANSI SQL, portanto, os bancos de dados comerciais não o fornecem (você deve fornecer tabelas de pesquisa). A pequena extremidade da cidade implementa vários "extras", mas não implementa os requisitos mais rígidos, ou o grunhido, da grande extremidade da cidade.

Também não temos ENUMs como parte de um DataType, isso é um absurdo.

A primeira desvantagem dos ENUMs é que não é padrão e, portanto, não é portátil.

A segunda grande desvantagem dos ENUMs é que o banco de dados é Fechado. As centenas de Ferramentas de Relatório que podem ser usadas em um banco de dados (independente do aplicativo), não podem encontrá-las e, portanto, não podem projetar os nomes/significados. Se você tiver uma tabela de pesquisa SQL padrão normal, esse problema será eliminado.

A terceira é, quando você altera os valores, você precisa alterar o DDL. Em um banco de dados SQL padrão normal, você simplesmente insere/atualiza/exclui uma linha na tabela de pesquisa.

Por último, você não pode obter facilmente uma lista do conteúdo do ENUM; você pode com uma tabela de pesquisa. Mais importante, você tem um vetor para realizar qualquer consulta Dimension-Fact, eliminando a necessidade de selecionar na grande tabela Fact e GROUP BY.