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

Modelo de banco de dados adequado para um sistema de feedback do usuário (um caso interessante)


Este é um projeto ruim. Basta fazer uma chave primária de 2 colunas e chaves estrangeiras de 2 colunas para ela. Este é um anti-padrão fundamental chamado "informação de codificação em chaves" que (assim) são chamadas de chaves "inteligentes", "inteligentes" ou "concatenadas". Uma boa chave é uma chave "burra".

Por exemplo: :

Além disso, não há necessidade para fazer isso.

Muitos SGBDs permitem "colunas computadas" cujos valores são calculados automaticamente a partir de outras colunas. Para tornar uma chave primária ou chave estrangeira, você normalmente precisaria dela "persistente", ou seja, ocupar memória como uma coluna normal versus apenas ser calculada quando necessário, como uma visualização. O MySQL não tem isso, mas 5.7.5 tem algumas funcionalidades onde são chamadas de "colunas geradas", que podem ser "armazenadas". Mas não faça isso para PKs ou FKs!

O problema real de design está lidando com banco de dados/subtipos SQL/hierarchies/inheritance/polimorfismo .