¿Cuál es la mejor práctica para almacenar metadatos de registros individuales en una base de datos?
Necesito almacenar metadatos comunes, como el tiempo de creación y el tiempo de la última actualización para muchas tablas en mi base de datos. Encontré algunas soluciones diferentes:
Almacene los metadatos directamente en las tablas.
Pros:
- Los metadatos están directamente vinculados a los registros.
- No se requieren combinaciones para recuperar metadatos
Contras:
- Se requieren muchas columnas duplicadas (a menos que se use la herencia)
- Los metadatos y los datos comerciales no están separados
Cree una tabla de metadatos general con y use teclas externas suaves para vincular datos a las tablas y registros correctos.
Pros:
- Sin duplicación de columnas.
- Los metadatos están separados de los datos comerciales.
Contras:
- No hay enlaces directos entre metadatos y datos (no se pueden usar FK)
- Las uniones requieren una condición adicional
Cree tablas de metadatos individuales para cada tabla que requiera metadatos.
Pros:
- Los metadatos están directamente vinculados a los registros.
- Los metadatos están separados de los datos comerciales.
Contras:
- Se requieren muchas mesas adicionales
- Se requieren muchas columnas duplicadas (a menos que se use la herencia)
¿Hay más opciones, ventajas o desventajas que las que mencioné aquí? ¿Y cuál es la mejor práctica para almacenar estos metadatos?
hstore
o unaJSON
columna podría resolver su problema?