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

O uso de uma tabela mestra para colunas compartilhadas é uma boa prática para um banco de dados inteiro?


Por quê? Faça tudo suas entidades precisam ser extensíveis dessa maneira? Provavelmente não -- na maioria dos aplicativos há uma ou duas entidades no máximo que se beneficiariam desse nível de flexibilidade. As outras entidades realmente se beneficiam da estabilidade e clareza de não mudando o tempo todo.

EAV é um exemplo do Efeito de plataforma interna :

Em outras palavras, agora é sua responsabilidade escrever o código do aplicativo para fazer todas as coisas que um RDBMS adequado já fornece, como restrições e tipos de dados. Mesmo algo tão simples como tornar uma coluna obrigatória como NOT NULL não funciona em EAV.

É verdade que às vezes um projeto requer muitas tabelas. Mas você está se enganando se acha que simplificou o projeto fazendo apenas duas tabelas. Você ainda terá tantas Entidades distintas quanto teria mesas, mas agora cabe a você evitar que elas se transformem em uma pilha de lixo.

Antes de investir muito tempo no EAV, leia esta história sobre uma empresa que quase deixou de funcionar porque alguém tentou tornar seu repositório de dados arbitrariamente flexível:Bad CaRMa .

Também escrevi mais sobre o EAV em uma postagem do blog, EAV FAIL , e em um capítulo do meu livro, SQL Antipatterns:Avoiding the Pitfalls of Database Programming .