Quelle est la meilleure pratique pour stocker des métadonnées d'enregistrements individuels dans une base de données?
J'ai besoin de stocker des métadonnées communes telles que l'heure de création et l'heure de la dernière mise à jour de nombreuses tables dans ma base de données. J'ai trouvé quelques solutions différentes:
Stockez les métadonnées directement dans les tableaux.
Avantages:
- Les métadonnées sont directement liées aux enregistrements
- Aucune jointure n'est requise pour récupérer les métadonnées
Les inconvénients:
- Un grand nombre de colonnes en double sont requises (sauf si l'héritage est utilisé)
- Les métadonnées et les données d'entreprise ne sont pas séparées
Créez une table de métadonnées générale avec et utilisez des clés étrangères programmables pour lier les données aux tables et enregistrements appropriés.
Avantages:
- Pas de duplication des colonnes
- Les métadonnées sont séparées des données d'entreprise
Les inconvénients:
- Aucun lien direct entre les métadonnées et les données (les FK ne peuvent pas être utilisés)
- Les jointures nécessitent une condition supplémentaire
Créez des tables de métadonnées individuelles pour chaque table nécessitant des métadonnées.
Avantages:
- Les métadonnées sont directement liées aux enregistrements
- Les métadonnées sont séparées des données d'entreprise
Les inconvénients:
- Beaucoup de tables supplémentaires sont nécessaires
- Un grand nombre de colonnes en double sont requises (sauf si l'héritage est utilisé)
Y a-t-il plus d'options, d'avantages ou d'inconvénients que ceux que j'ai mentionnés ici? Et quelle est la meilleure pratique pour stocker ces métadonnées?
hstore
ouJSON
pourrait résoudre votre problème?