Claves y restricciones de uso común en SQL

¿Qué son claves y restricciones?

Una base de datos debe adherirse a ciertas propiedades para mantener la integridad y la calidad de los datos que almacena. Las claves y restricciones son reglas que definen qué valores de datos se permiten en determinadas columnas de datos. Son un concepto importante de base de datos y forman parte de la definición de esquema de una base de datos. La definición de claves y restricciones es parte del proceso de diseño de la base de datos y garantiza que los datos dentro de una base de datos sean confiables y mantengan su integridad. Las restricciones se pueden aplicar a una columna específica, a una tabla completa, a más de una tabla o a un esquema completo. Un sistema de base de datos fiable garantiza que las restricciones se mantengan en todo momento. Las claves son un tipo especial de restricción que se utiliza para establecer relaciones y unicidad.

Clave primaria

Una parte necesaria para establecer relaciones entre dos entidades o dos datos es identificar los datos correctamente. En SQL, los datos de identificación única son fundamentales. Una Clave primaria es un identificador único para una fila de datos. En la analogía de hoja de cálculo que hemos utilizado hasta ahora, siempre ha habido una columna id. Si bien cualquier columna puede servir como clave principal, usar una columna llamada id es fácil por razones mnemotécnicas y es una convención popular. En un RDBMS, cada tabla solo puede tener una clave primaria.

Una clave primaria es un identificador único garantizado para una fila de una tabla. Debido a esto, podemos usar el valor de clave primaria de una fila para hacer referencia a esa fila de otras tablas. En el capítulo anterior, establecimos relaciones entre varias tablas basadas en eso, pero las bases de datos relacionales necesitan una forma de relacionarse entre sí, y la columna de clave primaria es una forma de hacerlo de manera eficiente. En PostgreSQL, las claves primarias también tienen beneficios de rendimiento, ya que se sabe que se usarán con frecuencia para buscar datos, especialmente en búsquedas de varias tablas.

Tenga en cuenta que no todas las columnas denominadas «id» son claves primarias; esto es solo una convención. Además, las claves primarias pueden tener cualquier nombre.

Ya hemos visto la sintaxis para designar una columna como columna de clave primaria en capítulos anteriores:

Echemos un vistazo al comando anterior que crea una tabla llamada users, desde la perspectiva de comprender las claves primarias.

  1. id la columna es la Clave principal de esta tabla. También podemos decir que la restricción de Clave primaria se ha aplicado a la columna id.
  2. id solo puede contener valores numéricos (int).
  3. Por cada nueva fila añadida a la tabla, el campo id se incrementará automáticamente en 1. Con muchos RDBM, se usa la palabra clave AUTO_INCREMENT. Con PostgreSQL, usamos serial para incrementar automáticamente nuestros ID y establecer su tipo como entero. No es necesario especificar manualmente el valor de la clave primaria cada vez que inserte datos, PostgreSQL lo hará por usted si especifica serial como el tipo de id.

Clave foránea

Las columnas de clave foránea se utilizan para hacer referencia a otra fila de datos, tal vez en otra tabla. Para hacer referencia a otra fila, la base de datos necesita un identificador único para esa fila. Por lo tanto, las columnas de clave foránea contienen el valor de la clave principal de la fila a la que se hace referencia. Por ejemplo, una tabla puede tener una columna llamada user_id como columna de clave foránea, que corresponde a la columna id de la tabla users. Las claves foráneas son la forma en que RDBMS establece relaciones entre filas de datos, ya sea en la misma tabla o entre tablas.

Puede ver en la instrucción SQL anterior que la línea para establecer esta relación es

FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE

En el ejemplo anterior, id es la clave principal de la tabla books, que se utiliza para establecer una relación con la tabla de reseñas. Los datos idse almacenan en la tabla de reseñas en el campo book_id para mapear los libros con las reseñas. La cláusula ON DELETE CASCADE indica que si se elimina un libro, también se eliminan todas las reseñas asociadas a ese libro.

Clave compuesta como Clave primaria

En el capítulo anterior creamos una relación de muchos a muchos, en la que nuestra clave primaria estaba hecha de dos columnas. El user_id y el book_id juntos formaron la clave principal para la tabla de referencia cruzada, como se puede ver en esta línea de la instrucción SQL.

PRIMARY KEY (user_id, book_id)

Cuando una primary_key consiste en un par único PRIMARY KEY (user_id, book_id), se conoce como clave compuesta. Por lo general, ocurre en relaciones de muchos a muchos, y necesitamos agregar una tabla adicional para almacenar estos datos de relación. La clave compuesta garantiza que los datos de la tabla sean únicos para la relación entre el usuario y el libro. Ejemplo:

|User_id | Book_id | | 1 | 1 | | 1 | 2 | | 2 | 1 | 

Restricciones ÚNICAS

Además de la Clave principal, una base de datos también permite aplicar una restricción única en cualquier columna de la base de datos. Por ejemplo, en la tabla libros, podemos elegir no solo tener book_id como clave primaria única, sino también almacenar el número ISBN del libro. El Número de Libro Estándar Internacional ISBN es un número único de 10 dígitos para un libro. Podemos elegir diseñar nuestra base de datos para que esta columna sea única. Aunque esta no es una clave primaria, no se permitirán ISBN duplicados en la tabla libros y se mantendrá la calidad de los datos.

La restricción única no permite la entrada duplicada en la tabla libros para el valor de columna de isbn.

Restricciones NOT NULL

Hemos visto «NOT NULL» en muchas de nuestras sentencias SQL. La restricción NOT NULL impide que una columna permita un valor nulo (es decir, esta columna debe contener datos). Esto es importante para campos clave. Por ejemplo: Si desea agregar un usuario a una base de datos, debe proporcionar un nombre de usuario. Sin esta restricción, la base de datos se llenaría con valores nulos y se volvería menos útil.

¿Cómo maneja SQL estas relaciones?

PostgreSQL permite relaciones entre el esquema y los datos de diferentes tablas mediante el uso de CLAVES FORÁNEAS y una operación llamada JOIN. Como su nombre indica, el propósito es unir tablas. A través de este mecanismo podemos, por ejemplo, obtener los detalles completos del autor de la tabla de reseñas que se muestra arriba, ya que tiene un campo user_id que se relaciona con la tabla user. Este es un ejemplo rápido:

Ahora que entendemos cómo crear varias tablas y las claves de papel que juegan en el establecimiento de relaciones, echaremos un vistazo más profundo a las varias combinaciones y cómo se construyen las consultas SQL utilizando estas combinaciones para recuperar los datos necesarios de varias tablas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.