Qual é a melhor prática para armazenar metadados de registros individuais em um banco de dados?
Preciso armazenar metadados comuns, como hora da criação e hora da última atualização, para muitas tabelas no meu banco de dados. Encontrei algumas soluções diferentes:
Armazene os metadados diretamente nas tabelas.
Prós:
- Os metadados estão diretamente vinculados aos registros
- Nenhuma associação é necessária para recuperar os metadados
Contras:
- Muitas colunas duplicadas são necessárias (a menos que a herança seja usada)
- Meta dados e dados comerciais não são separados
Crie uma tabela de metadados geral e use teclas estrangeiras programáveis para vincular dados às tabelas e registros corretos.
Prós:
- Sem duplicação de colunas
- Os metadados são separados dos dados corporativos
Contras:
- Não há links diretos entre metadados e dados (não é possível usar FKs)
- As junções requerem uma condição adicional
Crie tabelas de metadados individuais para cada tabela que requer metadados.
Prós:
- Os metadados estão diretamente vinculados aos registros
- Os metadados são separados dos dados corporativos
Contras:
- São necessárias muitas mesas extras
- Muitas colunas duplicadas são necessárias (a menos que a herança seja usada)
Existem mais opções, prós ou contras do que as mencionadas aqui? E qual é a melhor prática para armazenar esses metadados?
hstore
ouJSON
possa resolver seu problema?