Blog Navicat

Comprendre les règles PostgreSQL Apr 11, 2024 by Robert Gravelle

Comme vous le savez, PostgreSQL est un puissant système de gestion de bases de données relationnelles open source. Il offre diverses fonctionnalités pour améliorer la gestion et la manipulation des données. Parmi ces fonctionnalités figurent les règles, un mécanisme utilisé pour contrôler la manière dont les requêtes et les commandes sont traitées dans la base de données. Dans cet article, nous explorerons le fonctionnement des règles PostgreSQL et en quoi elles diffèrent des déclencheurs, avec un exemple pratique utilisant la base de données gratuite DVD Rental Database.

Que sont les règles PostgreSQL ?

Les règles PostgreSQL fournissent un moyen de réécrire des requêtes ou des commandes avant leur exécution. Ils agissent comme un ensemble d'actions prédéfinies à exécuter automatiquement en fonction de certaines conditions. Les règles sont principalement utilisées pour mettre en œuvre l'abstraction et la personnalisation des données sans altérer le schéma sous-jacent.

De plus, les règles PostgreSQL offrent un mécanisme puissant pour appliquer la logique métier au sein de la base de données elle-même, réduisant ainsi le besoin de contraintes au niveau de l'application et garantissant une manipulation cohérente des données entre différentes applications ou interfaces. En encapsulant une logique complexe dans la base de données, les règles favorisent l'intégrité et la maintenabilité des données tout en simplifiant le processus de développement.

En quoi les règles diffèrent-elles des déclencheurs ?

Bien que les règles et les déclencheurs répondent à des objectifs similaires dans PostgreSQL, il existe des différences notables entre les deux.

  1. Temps d'exécution:
    • Règles : les règles sont appliquées lors de l'analyse des requêtes, ce qui signifie qu'elles affectent la génération du plan de requête.
    • Déclencheurs : les déclencheurs sont exécutés après la fin d'un événement tel que INSERT, UPDATE ou DELETE.

  2. Visibilité:
    • Règles : les règles sont transparentes pour les utilisateurs qui exécutent des requêtes. La requête réécrite est visible dans le plan d'exécution de la requête.
    • Déclencheurs : les déclencheurs sont explicitement définis sur les tables et sont déclenchés par des événements spécifiques.

  3. Granularité:
    • Règles : les règles peuvent être appliquées au niveau de la table ou de la vue, offrant ainsi plus de flexibilité dans la personnalisation.
    • Déclencheurs : les déclencheurs sont liés à des tables spécifiques et ne peuvent pas être appliqués globalement.

  4. Complexité:
    • Règles : les règles peuvent être complexes et impliquer plusieurs actions ou conditions.
    • Déclencheurs : les déclencheurs sont plus simples à mettre en œuvre et à gérer car ils sont pilotés par des événements.

Exemple pratique utilisant l'exemple de base de données « dvdrental » : application de la validation des données

Explorons un exemple pratique pour comprendre comment les règles PostgreSQL fonctionnent en conjonction avec l'exemple de base de données « dvdrental ».

Supposons que nous souhaitions imposer une contrainte selon laquelle les durées de location doivent être d'au moins un jour. Nous pouvons y parvenir en utilisant une règle :

CREATE RULE enforce_min_rental_duration AS
    ON INSERT TO rental
    WHERE (NEW.return_date - NEW.rental_date) < INTERVAL '1 day'
    DO INSTEAD NOTHING;

Dans Navicat, nous pouvons ajouter une règle dans l'onglet "Règles" du Table Designer. Le menu déroulant « Faire à la place » nous permet de choisir entre « À LA PLACE » et « AUSSI ». Pendant ce temps, la zone de texte « Où » accepte les critères d'exécution de la règle et la zone « Définition » décrit ce que la règle doit faire. Voici la définition complète des règles dans Navicat :

enforce_min_rental_duration_rule (49K)

Cette règle garantit que toute tentative d'insertion d'une location d'une durée inférieure à un jour est empêchée.

Conclusion

Les règles PostgreSQL sont un outil puissant pour contrôler l'exécution des requêtes et renforcer l'intégrité des données. Bien que similaires aux déclencheurs, ils offrent des avantages distincts en termes de temps d'exécution, de visibilité, de granularité et de complexité. En comprenant les différences entre les règles et les déclencheurs et en exploitant leurs capacités, les développeurs peuvent personnaliser efficacement le comportement des bases de données pour répondre à des exigences spécifiques tout en préservant l'intégrité et la sécurité des données.

Vous souhaitez essayer Navicat 17 pour PostgreSQL ? Vous pouvez télécharger l'application entièrement fonctionnelle ici pour bénéficier d'un essai gratuit de 14 jours !

Partager
Archives du blog