Blog Navicat

Ampliación de los tipos de datos de PostgreSQL con Navicat 17 - Parte 1 27 Dec, 2024 by Robert Gravelle

Dominios

Almacenar datos en formatos adecuados garantiza la integridad de los datos, evita errores, optimiza el rendimiento y mantiene la coherencia en los sistemas al aplicar reglas de validación y permitir una gestión de datos eficiente. Por estos motivos, las bases de datos relacionales de primer nivel como PostgreSQL ofrecen una variedad de tipos de datos. Además, PostgreSQL permite la creación de tipos de datos personalizados mediante las instrucciones "CREATE DOMAIN" y "CREATE TYPE", lo que permite a los desarrolladores ampliar los tipos de datos para mejorar la validación, la integridad y la coherencia de los datos específicos de la aplicación. En el blog de hoy, aprenderemos a crear un dominio personalizado para la base de datos gratuita DVD Rental con Navicat Premium 17. La segunda parte tratará sobre los tipos.

Una comparativa rápida emtre CREATE DOMAIN y CREATE TYPE

Si bien las instrucciones CREATE DOMAIN y CREATE TYPE se pueden utilizar para crear tipos de datos definidos por el usuario, existen algunas diferencias clave que se deben tener en cuenta:

  • CREATE DOMAIN crea un tipo de datos definido por el usuario con restricciones como NOT NULL, CHECK, etc.
  • CREATE TYPE crea un tipo compuesto que se utiliza en procedimientos almacenados como los tipos de datos de los valores devueltos.

Creación de un dominio de correo electrónico

Los dominios centralizan la gestión de restricciones al permitirle definir reglas de validación reutilizables en varias tablas, como la creación de una restricción estándar que evita los valores NULL y recorta los espacios en blanco para tipos de campos específicos. A continuación, se muestra un ejemplo que crea un dominio para direcciones de correo electrónico con una comprobación de validación:

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 y Navicat for PostgreSQL 17 ofrecen herramientas en GUI para generar dominios y tipos sin tener que conocer toda la sintaxis exacta. Encontrará ambos en "Otros" en la barra de herramientas principal. (Ambos elementos del menú están resaltados en rojo a continuación):

others_context_menu (45K)

La opción Dominio incluye cuatro pestañas: General, Verificaciones, Comentarios y Vista previa de SQL.

Atributos generales

Todos los dominios se basan en un tipo subyacente. En este caso, es VARCHAR. Una vez que seleccionamos una Categoría de tipo subyacente de "Tipo base", podemos seleccionar "pg_catalog" y "varchar" de los dos menús desplegables de Tipo subyacente. También tendremos que asegurarnos de que nuestro VARCHAR tenga una Longitud de 255. Aquí está la Pestaña General con toda esa información proporcionada:

email_domain_general_tab (39K)

Checks

En la siguiente pestaña, podemos definir una o más comprobaciones que se realizarán cuando alguien intente asignar un valor a nuestro tipo. Nuestra comprobación probará el valor con una RegEx (expresión regular):

email_domain_checks_tab (21K)

Vista previa de SQL

En este punto, podemos proceder a Guardar el dominio, lo que ejecutará la sentencia generada CREATE DOMAIN, o también podemos hacer clic en la pestaña Vista previa de SQL para ver la declaración antes de guardar:

email_domain_preview_and_save_as_dialog (38K)

Tenga en cuenta que el nombre del dominio es "Sin título" ya que aún no hemos guardado la definición. Esto es normal.

Uso del dominio de correo electrónico en una tabla

La mejor manera de confirmar que se creó nuestro dominio de "email" es probarlo en una tabla. La tabla "personal" en la base de datos "dvdrental" incluye un campo de correo electrónico. Actualmente, almacena valores como un VARCHAR sin ninguna verificación de validación. Podemos cambiar el tipo de nuestro dominio seleccionando la opción "(Dominio)" del menú desplegable Tipo en el Diseñador de tablas y luego eligiendo "público" y "email" para el Tipo de objeto:

setting_column_to_email_domain (92K)

Una vez que guardemos la tabla, intentar cambiar (o agregar) un valor que no sea una dirección de correo electrónico válida dará como resultado una violación de restricción:

failed_check (63K)

Conclusión

Al crear un dominio personalizado para la base de datos gratuita dvdrental, hemos visto cómo los dominios ayudan a centralizar la gestión de restricciones al permitirnos definir reglas de validación reutilizables. En la parte 2, creamos nuestro propio tipo utilizando la herramienta Tipo de Navicat Premium 17.

Compartir
Archivos del Blog