Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Melhor maneira de armazenar um nome de categoria do php em uma tabela mysql


Depende,

Quantas categorias você terá, com que frequência precisará atualizá-las?

Eu tomei a abordagem antes onde adicionei Enum, mas também escrevi um método estático em uma classe e armazenei os nomes válidos lá
class Item{


    public static function get_categories()
    {

        // only works in php >=5.4 otherwise use return array('Category1'...);
        return [
          'Category1' => 'Category1',
          'Category2' => 'Category2',
          'Category3' => 'Category3'
        ];
    }

}

Fazendo o acima você pode facilmente ter acesso ao array por Item::get_categories(), que deve corresponder aos valores no campo ENUM no banco de dados. Se você precisar adicionar mais categorias, adicione-as ao banco de dados e depois a esta função. Você pode usar isso para validar a escolha do usuário e gerar as opções de javascript.

No entanto!!!!

Você menciona uma propagação que preenche sua tabela, isso não seria capaz de atualizar facilmente seu ENUM para você.

Eu usaria um ENUM, porque

1). É fácil de setup2). É um pouco mais fácil do que juntar as duas mesas (mas JOINS são craques quando você as aprende)3). Se você usou uma tabela secundária, você (como você apontou) teria que pesquisar o valor dessa tabela primeiro e depois inserir, ou se a categoria foi usada em um menu suspenso, use o ID da categoria e seu nome para preencher o menu suspenso (eu faria assim)

Pensamento final

O desempenho de ambas as maneiras (tabela de consulta e ENUM) você nem perceberia a diferença, a menos que seu site estivesse muito, muito ocupado. Você ainda teria que atualizar a tabela de categorias com cada versão nos dois sentidos, mas seria um pouco mais fácil usar uma instrução INSERT em vez de uma ALTER TABLE

Seja qual for a maneira escolhida, se você não gostar, seria muito fácil atualizar seu código.

Espero que isso ajude e boa sorte

Lembre-se de Keep It Simple Stupid K.I.S.S