Blog Navicat

Extension des types de données PostgreSQL avec Navicat 17 - Partie 1 27 Dec, 2024 by Robert Gravelle

Domaines

Le stockage des données dans des formats appropriés garantit l'intégrité des données, prévient les erreurs, optimise les performances et maintient la cohérence entre les systèmes en appliquant les règles de validation et en permettant une gestion efficace des données. Pour ces raisons, les bases de données relationnelles de premier plan comme PostgreSQL offrent une grande variété de types de données. De plus, PostgreSQL permet la création de types de données personnalisés via les instructions « CREATE DOMAIN » et « CREATE TYPE », ce qui permet aux développeurs d'étendre les types de données pour améliorer la validation, l'intégrité et la cohérence des données spécifiques à l'application. Dans le blog d'aujourd'hui, nous allons apprendre à créer un domaine personnalisé pour la base de données de location gratuite de DVD en utilisant Navicat Premium 17. La deuxième partie s'intéressera aux types.

Rapide comparaison entre CREATE DOMAIN et CREATE TYPE

Bien que les instructions CREATE DOMAIN et CREATE TYPE puissent toutes deux être utilisées pour créer des types de données définis par l'utilisateur, il existe quelques différences essentielles à connaître :

  • CREATE DOMAIN crée un type de données défini par l'utilisateur avec des contraintes telles que NOT NULL, CHECK, etc.
  • CREATE TYPE crée un type composite utilisé dans les procédures stockées comme types de données des valeurs renvoyées.

Création d'un domaine de messagerie

Les domaines centralisent la gestion des contraintes en vous permettant de définir des règles de validation réutilisables dans plusieurs tables, comme la création d'une contrainte standard qui empêche les valeurs NULL et supprime les espaces pour des types de champs spécifiques. Voici un exemple qui crée un domaine pour les adresses e-mail avec un contrôle de validation :

CREATE DOMAIN email AS VARCHAR(255)
CHECK (
  VALUE ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$'
);

-- Use in a table definition
CREATE TABLE customer_contacts (
  customer_id INT,
  contact_email email
);

Navicat Premium 17 et Navicat for PostgreSQL 17 proposent tous les deux des outils basés sur une interface graphique pour générer des domaines et des types sans avoir à connaître la syntaxe exacte. Vous trouverez ces deux outils sous « Autres » dans la barre d'outils principale. (Les deux éléments de menu sont surlignés en rouge ci-dessous) :

others_context_menu (45K)

L'outil Domaine comprend quatre onglets : Général, Vérifications, Commentaires et Aperçu SQL.

Attributs généraux

Tous les domaines sont basés sur un type sous-jacent. Dans le cas présent, il s'agit de VARCHAR. Une fois que nous avons sélectionné une catégorie de type sous-jacent « Type de base », nous pouvons sélectionner « pg_catalog » et « varchar » dans les deux listes déroulantes de type sous-jacent. Nous devons également nous assurer que notre VARCHAR a une longueur de 255. Voici l'onglet Général avec toutes ces informations fournies :

email_domain_general_tab (39K)

Vérifications

Dans l'onglet suivant, nous pouvons définir une ou plusieurs vérifications à effectuer lorsque quelqu'un tente d'attribuer une valeur à notre type. Notre vérification testera la valeur par rapport à une expression régulière (RegEx) :

email_domain_checks_tab (21K)

Aperçu SQL

À ce stade, nous pouvons soit procéder à l'enregistrement du domaine, ce qui exécutera l'instruction CREATE DOMAIN générée, soit cliquer sur l'onglet Aperçu SQL pour afficher l'instruction avant l'enregistrement :

email_domain_preview_and_save_as_dialog (38K)

Notez que le nom de domaine est « Sans titre » puisque nous n'avons pas encore enregistré la définition. C'est normal.

Utilisation du domaine de messagerie dans une table

La meilleure façon de confirmer que notre domaine « email » a été créé est de l'essayer dans une table. La table « staff » de la base de données « dvdrental » comprend un champ email. Actuellement, elle stocke les valeurs sous forme de VARCHAR sans aucun contrôle de validation. Nous pouvons modifier le type de notre domaine en sélectionnant l'option « (Domaine) » dans le menu déroulant Type du concepteur de tables, puis en choisissant « public » et « email » pour le type d'objet :

setting_column_to_email_domain (92K)

Une fois la table enregistrée, toute tentative de modification (ou d'ajout) d'une valeur qui n'est pas une adresse électronique valide entraînera une violation de contrainte :

failed_check (63K)

Conclusion

En créant un domaine personnalisé pour la base de données dvdrental gratuite, nous avons vu comment les domaines aident à centraliser la gestion des contraintes en nous permettant de définir des règles de validation réutilisables. Dans la deuxième partie, nous allons créer notre propre type en utilisant l'outil Type de Navicat Premium 17.

Partager
Archives du blog