Blog Navicat

Garantir l'intégrité des données dans PostgreSQL avec des contraintes de vérification Mar 25, 2024 by Robert Gravelle

L'intégrité des données est un aspect essentiel de tout système de base de données, garantissant que les données stockées restent exactes, cohérentes et significatives. Dans PostgreSQL, l'utilisation de contraintes de vérification est un outil puissant pour maintenir l'intégrité des données. Ces contraintes vous permettent de définir les règles que les données doivent respecter, empêchant l'insertion ou la modification de données invalides. Dans cet article, nous explorerons comment utiliser les contraintes de vérification pour valider les données dans PostgreSQL, en utilisant la base de données "DVD Rental Database" comme référence.

Comprendre les contraintes de vérification

Les contraintes de vérification sont des règles qui limitent les valeurs pouvant être saisies dans une colonne ou un ensemble de colonnes d'une table. Ces règles sont appliquées par le système de base de données, empêchant l'insertion ou la modification de lignes qui violent les conditions spécifiées. Les contraintes de vérification sont définies à l'aide du mot-clé CHECK suivi d'une expression qui correspond à une valeur booléenne.

Validating Rental Durations

Considérons un scénario utilisant une version modifiée de la table « rental » dans la base de données « dvdrental » qui contient une colonne « rental_duration ». La définition de table peut apparaître comme suit dans Navicat Table Designer :

rentals_with_rental_period_table_definition (48K)

Supposons maintenant que nous voulions nous assurer que la durée d'une location soit toujours supérieure à zéro jour. Nous pouvons y parvenir en ajoutant une contrainte de vérification à la table "rentals_with_rental_period" comme suit :

ALTER TABLE rentals_with_rental_period
ADD CONSTRAINT rental_duration_check
CHECK (rental_duration > 0);
    

Dans Navicat nous pouvons ajouter une contrainte de vérification dans l'onglet "Vérifications" du Designer de table. Nous devons simplement fournir une expression et un nom facultatif. Navicat nous créera un nom unique si nous n'en fournissons pas !

rental_duration_check_in_navicat (28K)

En appuyant sur le bouton Enregistrer, Navicat créera la contrainte de vérification ou affichera un message d'erreur si des lignes violent la contrainte.

Avec cette contrainte en place, toute tentative d'insertion ou de mise à jour d'une ligne dans la table "rentals_with_rental_period" où la durée de location est inférieure ou égale à zéro entraînera une erreur, garantissant que seules les durées de location valides sont autorisées.

Appliquer des évaluations valides

Un autre exemple tiré de la table « film » de la base de données « dvdrental » concerne la validation des classements de films. Supposons que nous souhaitions limiter les notes à certaines valeurs seulement, telles que « G », « PG », « PG-13 », « R » ou « NC-17 ». Nous pouvons y parvenir avec une contrainte de vérification :

ALTER TABLE film
ADD CONSTRAINT film_rating_check
CHECK (rating IN ('G', 'PG', 'PG-13', 'R', 'NC-17'));
    

Voici la même contrainte dans Navicat Table Designer :

film_rating_check_in_navicat (34K)

Désormais, toute tentative d'insertion ou de mise à jour d'une ligne dans le tableau « film » avec une note qui ne fait pas partie des valeurs spécifiées sera rejetée, garantissant que seules les notes valides sont autorisées.

Gestion des valeurs NULL

Il est important de noter que les contraintes de vérification ne sont pas appliquées aux lignes dans lesquelles une ou plusieurs colonnes contiennent une valeur NULL, sauf si la contrainte inclut spécifiquement une condition pour vérifier NULL. Par exemple, pour faire en sorte que la colonne "rental_rate" de la table "film" soit toujours supérieure à zéro et non NULL, nous utiliserions la contrainte suivante :

ALTER TABLE film
ADD CONSTRAINT film_rental_rate_check
CHECK (rental_rate > 0 AND rental_rate IS NOT NULL);
    

Voici la même contrainte dans Navicat Table Designer :

film_rental_rate_check_in_navicat (43K)

Conclusion

Les contraintes de vérification sont un outil puissant pour garantir l'intégrité des données dans PostgreSQL. En définissant des règles que les données doivent respecter, vous pouvez empêcher l'insertion ou la modification de données non valides, contribuant ainsi à maintenir l'exactitude et la cohérence de votre base de données. En les intégrant dans la conception de votre base de données, vous pouvez créer des systèmes de données robustes et fiables qui répondent aux besoins de votre organisation.

Partager
Archives du blog