Digamos que em alguma tabela aleatória, você tenha uma coluna chamada status . Seus valores do mundo real seriam ativados ou desativados .
É melhor que o tipo de dados desta coluna seja int / bool (1 ou zero) ou use ENUM
com os valores sendo enabled
e disabled
? Quais são as vantagens ou desvantagens?
Digamos que, em vez de apenas dois status válidos, você tenha 4 ou 10 ou mais? As vantagens e desvantagens oscilam para um lado ou para o outro à medida que o número de valores exigidos aumenta?
mysql
database-design
datatypes
Jake Wilson
fonte
fonte
Respostas:
Achei um artigo muito bizarro, mas informativo, sobre 8 razões pelas quais não se deve usar o ENUM.
Mesmo sem o artigo, eu sei
fonte
units
modelo para itens de uma loja onde cada registro deve ter propriedade para suas unidades relacionadascomposition
. ou seja, Ton, Kg, gmBem, primeiro temos os requisitos de armazenamento . Eu vou assumir que você quis dizer um tinyint (em vez de int).
Então, na superfície, eles são todos iguais. ENUM ocupa alguns metadados para o valor da string associado a ele ( src antigo )
Eu diria que, à medida que você adiciona mais valores, qualquer vantagem começa a se afastar
ENUM
. Especialmente se você adicionar os valores após a tabela já estar em uso, porque é necessário alterar a estrutura da tabela para acomodar.Qual é a vantagem de usar um
ENUM
? Uma representação de sequência do que o valor significa. É isso, no que me diz respeito. A importância disso depende da sua aplicação.fonte
Acho ENUM é uma definição curta de uma tabela de códigos. Sua principal vantagem é que evita o código necessário para ingressar e mostra a descrição do código. Também facilita a configuração dos valores se eles chegarem em forma de sequência.
Acho que tem as seguintes desvantagens:
fonte