5

Comment représenter une relation plusieurs-à-plusieurs temporal dans SQL? Dans des circonstances non-temporelles, on utilisera un junction table (également appelé lien/pont/carte) pour connecter les deux côtés.Comment créeriez-vous une relation temporelle plusieurs-à-plusieurs dans SQL?

L'ajout de suivi temporel est-il aussi simple que d'inclure des colonnes ValidStart et ValidEnd dans la table de jonction? Si vous avez fait cela, quels problèmes (le cas échéant) avez-vous rencontrés? Y a-t-il une meilleure méthode pour suivre les changements au fil du temps dans ce genre de relation?

Si cela aide du tout, dans mon cas, j'utilise spécifiquement SQL 2008 et les données temporelles ne sont pas bitemporal car je ne fais que suivre l'heure valide.

Répondre

5

Je travaille sur un projet (depuis quelques années maintenant) qui utilise à la fois des données temporelles et des relations temporelles plusieurs-à-plusieurs. Chaque table possède des colonnes ValidFrom et ValidUntil (dates de stockage uniquement).

D'abord, vous devez définir la sémantique des colonnes Valid *, c'est-à-dire si ValidUntil est inclus ou exclu de la plage de validité. Vous devez également spécifier si les dates NULL sont valides et quelle est leur signification.

Ensuite, vous avez besoin de deux fonctions, telles que dbo.Overlaps2() et dbo.Overlaps3() qui reçoivent respectivement 2 et 3 plages de dates et renvoient 1 si les plages de dates se chevauchent et 0 sinon.

En plus de cela, j'ai défini des vues pour les relations many-to-many avec dbo.Overlap3 (...) = 1.

Un autre point est d'avoir un ensemble de fonctions qui calculent la plage de validité effective sur la base des dates dans 2 ou 3 tables connexes.

Récemment, j'ai dû ajouter des fonctionnalités pour permettre à un utilisateur d'afficher toutes les données disponibles, ou seulement les données actuellement valides. Je sauvegarde ce paramètre dans une table utilisateurs, associe le SPID à l'utilisateur lors de l'ouverture d'une connexion et filtre les enregistrements dans un autre jeu de vues.

+0

Wow, vous avez beaucoup travaillé avec ça. J'ai d'abord pensé à des «prix efficaces» sur une table de produits à titre d'exemple, mais il est clair qu'il y a beaucoup plus d'utilisations de «datation efficace» que cela. – jeremcc