Règles uniques (model)
Introduction
Une règle unique est une règle définissant de manière unique un objet. C'est une composante importante de l'intégrité du modèle car les règle uniques empêchent l'enregistrement des doublons dans la base de données.
Une règle unique est constituée d’un ensemble d’attributs dont les combinaisons de valeurs doivent être uniques. L'utilisation des règles uniques ne s'impose pas pour toutes les classes, les exigences du modèle déterminent la définition des règles uniques.
Définition des règles uniques
La définition des règles uniques se fait au moyen d'un assistant : Cliquez droit sur la classe sélectionnée et puis sur la fonction Ajouter une règle unique du menu contextuel.
Vous accédez à la fenêtre suivante :
- Message d'erreur
Format du message qui sera affiché lorsque la règle unique n'est pas respectée.
- Liste des colonnes disponibles
- Double cliquez sur les éléments de la liste pour les ajouter dans les éléments de la règle.
- Nom de l’index SQL
- Par défaut un nom d’index est créé automatiquement à partir du nom de la table et des colonnes de l’index. Il se peut que ce nom ne soit pas valide, trop long par exemple, et qu’il soit nécessaire de définir explicitement un nom pour l’index.
Faites OK, vous retrouvez la définition de la clé unique dans l'arbre de conception, dans la section Clés uniques de la classe.
Contrôle des règles uniques à l’exécution
Le contrôle des règles uniques est fait en deux étapes :
- Pendant la phase de validation d'une transaction, le framework vérifie l'unicité de chaque objet en transaction, en se basant sur les règles uniques. L'existence d'un autre objet remplissant les mêmes conditions déclenche l'annulation de la transaction et l'affichage d'un message d'erreur.
- Lors de la transaction SQL, le framework s’assure que le code SQL vérifie l’unicité des règles uniques. Ceci est nécessaire pour s’assurer que plusieurs stations concurrentes ne créent pas des doublons au cours des mises à jours. En cas de détection de doublons une seule des transactions peut être validée, mais il est aussi possible qu’aucune transaction ne soit validée.
Une règle unique n’est pas un index unique dans la base de données.
La mise en oeuvre d'une règle unique dans la base de données peut différer d'un moteur à l'autre.
Exemple
Le libellé de la classe TProfilTVA est déclaré dans une règle unique. Le message d'erreur suivant est déclenché à la tentative d'enregistrement de deux profils avec le même libellé.