Comment suivre les modifications apportées à un enregistrement qui s'étend sur plusieurs tables

dba.stackexchange https://dba.stackexchange.com/questions/106587

Question

J'ai le défi de concevoir une nouvelle base de données en utilisant un SGBDR, Oracle, pour être précis.Dans cette base de données, il y aura un enregistrement/document spécifique pouvant s'étendre sur plusieurs tables.

Avec le moins de duplication possible, je souhaite garder une trace des modifications apportées à cet enregistrement et proposer un moyen simple de créer des copies modifiées de cet enregistrement.

je ne veux pas d'un histoire tableau qui résumera les modifications du texte, car je veux pouvoir récupérer document x exactement à quoi il ressemblait time t.Mais je ne veux pas non plus avoir une copie complète de chaque entrée de l'historique.

Sont là meilleures pratiques ou modèles comment y parvenir ?

J'ai peut-être une idée sur la façon de résoudre ce problème en utilisant une stratégie imitant git, mais je voulais d'abord avoir des avis avant de m'engager dans cette voie.

Était-ce utile?

La solution

Dans Oracle 12c en particulier, il existe une nouvelle fonctionnalité appelée « requêtes de flashback temporel » qui sert exactement cet objectif.(Des fonctionnalités similaires sont disponibles dans d'autres bases de données :DB2, SQL Server, Vertica pour n'en nommer que quelques-uns.)

Pour activer les requêtes temporelles, vous :

  1. Assurez-vous que chacun des tableaux représentant votre document comporte une paire de dates indiquant la date de début et de fin (heure) à laquelle un enregistrement particulier était valide (actif), et
  2. Conservez les documents historiques en ne les mettant pas à jour, mais en insérant plutôt de nouvelles versions des documents, en mettant à jour uniquement les dates de fin des documents historiques.

Vous pourrez alors émettre des requêtes sur vos tables qui ressemblent beaucoup à SELECT whatever FROM mytable AS OF some_date, qui renverrait les enregistrements actifs à la date spécifiée.

Vous pouvez lire le description détaillée ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top