Postgres Composite Primary Key

Postgres Composite Primary Key

En la programación de bases de datos, una llave primaria es un atributo o conjunto de atributos que identifican de forma única cada fila en una tabla. En Postgres, es posible crear una llave primaria compuesta utilizando una combinación de dos o más columnas. Esta técnica es útil cuando se necesita identificar de forma única registros con múltiples atributos.

Este artículo se centrará en la creación y uso de llaves primarias compuestas en Postgres, cubriendo los siguientes temas:

📋 Aquí podrás encontrar✍
  1. Creación de una llave primaria compuesta
    1. Uso de una llave primaria compuesta
    2. Actualización y eliminación de registros
  2. Ejemplos de código
  3. Conclusión
  4. Preguntas frecuentes
    1. ¿Es posible crear una llave primaria compuesta con columnas de diferentes tipos de datos?
    2. ¿Se pueden crear índices a partir de una llave primaria compuesta?
    3. ¿Puedo tener más de una llave primaria en una tabla?
    4. ¿Qué sucede si intento insertar un registro duplicado en una tabla con llave primaria compuesta?

Creación de una llave primaria compuesta

La creación de una llave primaria compuesta en Postgres es similar a crear una llave primaria simple. La sintaxis es la siguiente:


CREATE TABLE [nombre_de_la_tabla] (
[column1] [tipo_de_dato],
[column2] [tipo_de_dato],
[column3] [tipo_de_dato],
...
PRIMARY KEY ([column1], [column2])
);

Como se puede ver en el ejemplo anterior, la llave primaria está compuesta por dos columnas, column1 y column2.

Uso de una llave primaria compuesta

Una vez que se crea una llave primaria compuesta, se puede utilizar para garantizar la unicidad de los registros en una tabla. Además, al utilizar una llave primaria compuesta en una consulta, se pueden filtrar resultados más precisos.

Por ejemplo, supongamos que tenemos una tabla llamada "ventas" que contiene información sobre las ventas de una empresa, y la llave primaria compuesta se compone de las columnas "fecha" y "producto". Para obtener información sobre las ventas de un producto específico en una fecha determinada, se deberá utilizar una consulta similar a esta:


SELECT * FROM ventas WHERE fecha='2021-01-01' AND producto='camisa';

Actualización y eliminación de registros

En caso de necesitar actualizar o eliminar registros de una tabla con llave primaria compuesta, es importante tomar en cuenta que se debe incluir todos los valores correspondientes en la cláusula WHERE de la consulta.

Supongamos que queremos actualizar el precio de un producto específico en una fecha determinada en la tabla "ventas". La consulta debe incluir la llave primaria compuesta:


UPDATE ventas SET precio=50 WHERE fecha='2021-01-01' AND producto='camisa';

En caso de querer eliminar un registro, la consulta debe incluir también la llave primaria compuesta:


DELETE FROM ventas WHERE fecha='2021-01-01' AND producto='camisa';

Ejemplos de código

A continuación, se presentan algunos ejemplos de código para la creación y uso de llaves primarias compuestas en Postgres:


CREATE TABLE ventas (
fecha DATE NOT NULL,
producto VARCHAR(50) NOT NULL,
precio NUMERIC(8,2) NOT NULL,
cantidad INT NOT NULL,
PRIMARY KEY(fecha, producto)
);


INSERT INTO ventas (fecha, producto, precio, cantidad) VALUES
('2021-01-01', 'camisa', 40.00, 10),
('2021-01-01', 'pantalon', 60.00, 5),
('2021-01-02', 'camisa', 35.00, 8),
('2021-01-02', 'pantalon', 70.00, 3);


SELECT * FROM ventas WHERE fecha='2021-01-01' AND producto='camisa';

Conclusión

La creación de llaves primarias compuestas en Postgres es una técnica útil en la programación de bases de datos. Permite identificar de forma única registros con varios atributos y filtrar resultados precisos en una consulta. Utiliza la sintaxis mostrada en este artículo para crear y utilizar llaves primarias compuestas en tus próximos proyectos.

Preguntas frecuentes

¿Es posible crear una llave primaria compuesta con columnas de diferentes tipos de datos?

Sí, se puede crear una llave primaria compuesta utilizando columnas de diferentes tipos de datos. Sin embargo, es importante que la combinación de tipos de datos no sea incompatible en términos de comparación y ordenamiento.

¿Se pueden crear índices a partir de una llave primaria compuesta?

Sí, es posible crear índices a partir de una llave primaria compuesta en Postgres. Un índice acelerará la búsqueda de registros utilizando los atributos de la llave primaria compuesta.

¿Puedo tener más de una llave primaria en una tabla?

No, solo es posible tener una llave primaria en una tabla. Sin embargo, es posible tener índices únicos adicionales para garantizar la unicidad de otros conjuntos de atributos en la tabla.

¿Qué sucede si intento insertar un registro duplicado en una tabla con llave primaria compuesta?

Postgres lanzará un error de violación de la restricción de la llave primaria y no se permitirá la inserción del registro duplicado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza Cookies propias y de terceros de análisis para recopilar información con la finalidad de mejorar nuestros servicios, así como para el análisis de su navegación. Si continua navegando, se acepta el uso y si no lo desea puede configurar el navegador. CÓMO CONFIGURAR