Règles uniques (model)

De Wiki1000

Sommaire

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 :

Uniquekey-1.png

  • 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.
  • Clé primaire
Définit la clé comme l'index primaire de la table
  • Clé unique par périmètre
Ajoute le périmètre de partage à la clé de sorte que l'unicité est par périmètre.
  • Indexer les références nulles
Ne filtre pas les valeurs nulles des références (SQL Server)

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.
Info-20px.png Note : 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é.

image2.png

Implémentation en fonction des moteurs de base de donnée

Moteur Implémentation
Oracle Index unique avec filtre sur les idOTP
SQL Server < 2008 Vérification SQL dans le code de transaction
SQL Server >= 2008 Index unique avec filtre sur les idOTP et les valeurs de référence non nulle (*)

(*) Si la clé unique à la propriété "Indexer les références nulles" l'index ne comporte pas de filtre sur les valeurs nulles des références.


ModèleDéveloppement DSM





Whos here now:   Members 0   Guests 0   Bots & Crawlers 1
 
Outils personnels