Comprendre l'intégrité référentielle

Cet article a été traduit de l'anglais par IA et peut contenir des erreurs. Vos commentaires nous aideront à l'améliorer.

Cet article présente le concept d'enregistrements liés et d'intégrité référentielle, et décrit comment ActivityInfo applique cette intégrité référentielle.

Introduction

Les champs de référence vous permettent de référencer un enregistrement à partir d'un autre enregistrement dans un formulaire différent. Par exemple, un enregistrement décrivant une école peut faire référence à un formulaire « Province », indiquant son emplacement. Cela crée une relation entre les formulaires École et Province.

Lorsque vous commencez à ajouter des enregistrements aux formulaires École et Province, vous créez également des relations entre les enregistrements des écoles et des provinces.

Dans le diagramme ci-dessus, chaque école fait référence à une seule province. Lorsqu'un enregistrement fait référence à un autre enregistrement, nous disons que les deux enregistrements sont liés.

L'intégrité référentielle est une propriété des données qui stipule que toutes les références sont valides. Cela signifie que chaque fois qu'un enregistrement fait référence à une certaine valeur, il doit exister un enregistrement de référence qui contient cette valeur. Dans le diagramme ci-dessus, nous pouvons voir que chaque école a une référence valide à une province. Ainsi, les deux formulaires ont une intégrité référentielle.

Les champs de sous-formulaire créent également des relations entre les enregistrements parents et enfants.

Modifier les enregistrements

La modification d'un enregistrement dans ActivityInfo n'affecte pas l'intégrité référentielle. Par exemple, renommer la province « Nord » en « Nordique » n'affecte pas la relation avec les écoles « Kirby » et « Wellsboro ». C'est parce qu'ActivityInfo utilise un ID de l'enregistrement interne, autogénéré et immuable pour stocker la relation entre les enregistrements.

Ces ID internes sont généralement masqués pour l'utilisateur. À la place, ActivityInfo affiche l'enregistrement référencé en utilisant les champs clés de ce formulaire. Cependant, vous pouvez afficher l'ID de l'enregistrement dans la vue Tableau en cliquant sur Sélectionner des colonnes et en cochant « ID de l'enregistrement ».

Supprimer les enregistrements parents

Lorsque vous supprimez un enregistrement d'un formulaire qui a un sous-formulaire, tous les enregistrements enfants sont automatiquement supprimés, préservant ainsi l'intégrité référentielle.

Lorsque vous récupérez un enregistrement parent supprimé, tous ses enregistrements enfants sont également récupérés.

Supprimer les enregistrements référencés

La suppression d'un enregistrement qui est référencé par d'autres enregistrements compromettrait l'intégrité référentielle. Si vous supprimiez la province « Sud », alors l'école Dalton n'aurait plus de référence valide à une Province. Vos données seraient incomplètes, et vous ne pourriez plus savoir où se trouvent les écoles.

Pour cette raison, ActivityInfo n'autorisera généralement pas la suppression d'un enregistrement lorsqu'il est référencé par d'autres enregistrements.

Screenshot 2024-02-05 at 15.22.10.png
Screenshot 2024-02-05 at 15.22.10.png

D'un autre côté, la province « Est » n'est référencée par aucune des écoles, elle peut donc être supprimée sans compromettre l'intégrité référentielle des deux formulaires.

Exceptions

Il existe quelques cas où ActivityInfo ne peut pas ou n'applique pas l'intégrité référentielle.

Travailler hors ligne

ActivityInfo n'est pas en mesure d'appliquer pleinement l'intégrité référentielle lorsque des données sont collectées ou supprimées hors ligne.

Par exemple, si un agent de terrain ajoute un nouvel enregistrement d'école qui fait référence à la province « Est » alors qu'il est déconnecté du serveur, un administrateur pourrait supprimer la province « Est » en même temps. Comme il n'y a aucun enregistrement sur le serveur qui fait référence à la province « Est », ActivityInfo autorise la suppression de l'enregistrement.

Cependant, lorsque l'agent de terrain revient au bureau après une semaine sur le terrain et se synchronise, le nouvel enregistrement arrivera sur le serveur avec une référence supprimée à la province « Est » supprimée, violant ainsi l'intégrité référentielle.

Dans ce cas, l'intégrité référentielle peut être restaurée en récupérant la province « Est » supprimée.

Références entre des bases de données appartenant à différents comptes de facturation

ActivityInfo autorise les formulaires à référencer des formulaires dans d'autres bases de données, même dans des bases de données appartenant à d'autres organisations avec différents comptes de facturation. C'est une fonctionnalité clé qui soutient la coordination humanitaire : de nombreuses organisations différentes travaillant dans la même zone géographique peuvent chacune référencer des ensembles de données opérationnelles communes pour soutenir la coordination.

Par exemple, une organisation, l'Organisation A, pourrait collecter des données sur les écoles d'une région. Une organisation partenaire, l'Organisation B, pourrait alors ajouter sa propre base de données ActivityInfo et mener une évaluation de ces écoles. Comme les organisations travaillent ensemble, l'Organisation B fait référence au formulaire Écoles appartenant à l'Organisation A :

Dans ce cas, le formulaire d'évaluation des écoles et le formulaire École appartiennent à deux organisations différentes. L'intégrité référentielle reste importante, mais le droit du propriétaire des données à contrôler ses propres données l'est tout autant.

Si un administrateur de l'Organisation A essaie de supprimer l'école « Dalton », il sera averti des conséquences sur les données de l'Organisation B, mais il sera tout de même autorisé à procéder à la suppression.

Propriétaires de la base de données

Les propriétaires de la base de données sont exceptionnellement autorisés à supprimer des enregistrements qui sont référencés par d'autres enregistrements, même si cela compromet l'intégrité référentielle.

API

L'API d'ActivityInfo n'applique pas actuellement l'intégrité référentielle pour les enregistrements référencés.

Cependant, la suppression d'un enregistrement parent via l'API supprime également automatiquement ses sous-enregistrements.

Élément suivant
Exporter toutes les pièces jointes