Articles

Entender las claves primarias de MySQL

Las claves primarias sirven como identificadores únicos para los registros de una tabla, mientras que las claves foráneas se utilizan para enlazar tablas relacionadas entre sí. Cuando se diseña un conjunto de tablas de la base de datos, es importante especificar qué campos se utilizarán para las claves primarias y foráneas para aclarar tanto la estructura dentro de la tabla como las relaciones entre tablas.

Claves primarias

Se puede especificar una clave primaria para la tabla con la restricción PRIMARY KEY. En un esquema de base de datos bien diseñado, una clave primaria sirve como identificador único e invariable para cada registro. Si una clave se declara como primaria, esto suele implicar que los valores que contiene rara vez se modificarán.

La restricción PRIMARY KEY se puede considerar mejor como una combinación de las restricciones NOT NULL y UNIQUE porque requiere que los valores del campo especificado no sean NULL ni se repitan en ninguna otra fila. Considere el siguiente ejemplo, que demuestra estableciendo el campo numéricoAirportID como la clave primaria para la tabla de aeropuertos.

mysql> CREATE TABLE airport ( -> AirportID smallint(5) unsigned NOT NULL, -> AirportCode char(3), -> AirportName varchar(255) NOT NULL, -> CityName varchar(255) NOT NULL, -> CountryCode char(2) NOT NULL, -> NumRunways INT(11) unsigned NOT NULL, -> NumTerminals tinyint(1) unsigned NOT NULL, -> PRIMARY KEY (AirportID) -> ) ENGINE=MYISAM;Query OK, 0 rows affected (0.05 sec)

En esta situación, debido a que el campo AirportID se define como la clave primaria, MySQL no permitirá la duplicación o los valores NULL en ese campo. Esto permite que el administrador de la base de datos se asegure de que cada aeropuerto listado en la tabla tenga un valor numérico único, reforzando así un alto grado de consistencia en los datos almacenados.

Las restricciones de clave primaria se pueden especificar para un solo campo o para un compuesto de múltiples campos. Considere el siguiente ejemplo, que demuestra mediante la construcción de una tabla que contiene una clave primaria compuesta:

mysql> CREATE TABLE flightdep ( -> FlightID SMALLINT(6) NOT NULL, -> DepDay TINYINT(4) NOT NULL, -> DepTime TIME NOT NULL, -> PRIMARY KEY (FlightID, DepDay, DepTime) -> ) ENGINE=MyISAM;Query OK, 0 rows affected (0.96 sec)

En este caso, las reglas de la tabla permiten la repetición del número de vuelo, el día de salida o la hora de salida, pero no de los tres juntos. Mira lo que pasa si intentas:

mysql> INSERT INTO flightdep (FlightID, DepDay, DepTime) -> VALUES (511,1,'00:01');Query OK, 1 row affected (0.20 sec)mysql> INSERT INTO flightdep (FlightID, DepDay, DepTime) -> VALUES (511,2,'00:01');Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO flightdep (FlightID, DepDay, DepTime) -> VALUES (511,1,'00:02');Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO flightdep (FlightID, DepDay, DepTime) -> VALUES (511,1,'00:01');ERROR 1062 (23000): Duplicate entry '511-1-00:01:00' for key 'PRIMARY'

Las claves primarias compuestas pueden ser útiles cuando un registro debe ser identificado de forma única por una combinación de sus atributos, en lugar de por un solo atributo.

Deja una respuesta

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