Estructura de las bases de datos relacionales

Ya conocimos brevemente las bases de datos relacionales en el artículo anterior. Pero no nos basta con una idea superficial, ¿verdad? Vamos a alejarnos de la orilla y a sumergirnos a fondo en la estructura y la terminología de las bases de datos relacionales.

Estructura de una tabla

En las bases de datos relacionales, la información se almacena en tablas relacionadas entre sí. Las propias tablas están formadas por:

  • filas, que se denominan «registros»
  • columnas, que se denominan «campos» o «atributos»

Estructura de una tabla

En cada tabla, cada columna tiene un tipo de datos definido de antemano. Por ejemplo, estos tipos pueden ser:

  • VARCHAR (tipo de datos de cadena)
  • INTEGER (tipo de datos numérico)
  • DATETIME (tipo de datos para fecha y hora), entre otros

Y cada fila de la tabla debe tener el tipo correspondiente en cada columna. El SGBD no permitirá añadir una cadena cualquiera a una columna de tipo DATETIME.

Para conocer los tipos de datos de los atributos, puedes ejecutar un comando SQL indicando el nombre de la tabla:

MySQL 8.4
DESCRIBE FamilyMembers
FieldTypeNullKeyDefaultExtra
member_idintNOPRI
statusvarchar(50)NO
member_namevarchar(50)NO
birthdaydatetimeNO
MySQL 8.4
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'familymembers'
  AND table_schema = current_schema();
column_namedata_typeis_nullable
member_idintegerNO
statuscharacter varyingNO
member_namecharacter varyingNO
birthdaytimestamp without time zoneNO

O bien consultar el diagrama ER del esquema de la base de datos:

Clave primaria

Todo SGBD tiene un sistema integrado que garantiza la integridad y la coherencia de los datos. Este sistema funciona con un conjunto de reglas definidas en el esquema de la base de datos. La clave primaria y las claves foráneas son precisamente algunas de esas reglas.

Para evitar ambigüedades al buscar en las tablas existe la clave primaria o, como también se la llama, el «campo clave».

Si volvemos a la tabla FamilyMembers que vimos antes, su clave primaria es member_id. Gracias a esta regla, el SGBD no nos permitirá crear un nuevo registro en el que el valor de member_id no sea único.

Cabe señalar que la clave primaria no es obligatoria y que la integridad de los datos se puede garantizar, por ejemplo, a nivel de la aplicación.

Clave foránea

La tabla con la clave foránea se llama tabla hija, y la tabla con la clave primaria se llama tabla referenciada o tabla padre.

La regla de clave foránea garantiza que, al crear registros en la tabla hija, el valor de la columna que actúa como clave foránea exista en la tabla padre.

Ejemplo de claves foráneas

Tener una clave foránea es igual de opcional que tener una clave primaria.

Si no se define una clave foránea, todo seguirá funcionando, pero el SGBD no comprobará, por ejemplo, que al crear un registro en la tabla Purchase las columnas buyer_id y good_id contengan valores que existan en la columna id de las tablas correspondientes.

¿Cuál de estas afirmaciones sobre las claves en los SGBD relacionales es falsa?