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

MySQL:várias tabelas ou uma tabela com muitas colunas?


Sempre que as informações forem de um para um (cada usuário tem um nome e uma senha), provavelmente é melhor ter uma tabela, pois reduz o número de junções que o banco de dados precisará fazer para recuperar os resultados. Eu acho que alguns bancos de dados têm um limite no número de colunas por tabela, mas eu não me preocuparia com isso em casos normais, e você sempre pode dividi-lo mais tarde, se precisar.

Se os dados forem um para muitos (cada usuário tem milhares de linhas de informações de uso), eles devem ser divididos em tabelas separadas para reduzir dados duplicados (dados duplicados desperdiçam espaço de armazenamento, espaço em cache e dificultam a manutenção do banco de dados ).

Você pode encontrar o artigo da Wikipedia sobre normalização de banco de dados interessante, uma vez que discute as razões para isso em profundidade:

A normalização de banco de dados é o processo de organizar os campos e tabelas de um banco de dados relacional para minimizar a redundância e a dependência. A normalização geralmente envolve a divisão de tabelas grandes em tabelas menores (e menos redundantes) e a definição de relacionamentos entre elas. O objetivo é isolar os dados para que adições, exclusões e modificações de um campo possam ser feitas em apenas uma tabela e depois propagadas pelo restante do banco de dados por meio dos relacionamentos definidos.

Desnormalização também é algo para se estar ciente, porque há casos em que repetir dados é melhor (já que reduz a quantidade de trabalho que o banco de dados precisa fazer ao ler os dados). É altamente recomendável tornar seus dados o mais normalizados possível para começar e desnormalizá-los apenas se você estiver ciente de problemas de desempenho em consultas específicas.