Langue: Français
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 référencer 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 référence une seule province. Lorsqu'un enregistrement 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 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
Modifier 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
Supprimer 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.
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 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 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 référence le 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. Aucun Rôle ne contient cette permission. Dans une Base de données sans Propriétaire de la base de données, aucun utilisateur ne peut supprimer un Enregistrement tant que d'autres Enregistrements y font encore référence.
Pour supprimer un tel Enregistrement, modifiez ou supprimez d'abord les Enregistrements qui y font référence. Lorsque vous essayez de supprimer l'Enregistrement, ActivityInfo vous montre quels Formulaires contiennent des Enregistrements qui y font référence. Si certains de ces Formulaires ne vous sont pas visibles, ActivityInfo vous en informe. Dans ce cas, demandez de l'aide à un administrateur de la Base de données.
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.