Saltar al contenido

El modelo relacional

Qué es exactamente una relación, qué propiedades cumple, los cinco tipos de clave, las dos reglas de integridad y las trece reglas con las que Codd definió qué gestor merece llamarse relacional.

La relación: intensión, extensión, grado y cardinalidad

El modelo relacional descansa sobre una base matemática, y la pieza de la que todo lo demás depende es la relación. Formalmente, una relación sobre los atributos A1, A2 hasta An es un conjunto de tuplas, y cada tupla asigna a cada atributo un valor de su dominio.

De una relación hay que distinguir dos cosas que se confunden constantemente. La intensión, también llamada esquema, es la parte estable: el nombre de la relación y el conjunto de sus atributos con sus dominios. Se escribe como ALUMNO(id_alumno, nombre, email) y no cambia salvo que se rediseñe la base de datos. La extensión es el conjunto de tuplas que la relación contiene en un instante dado, y cambia con cada inserción o borrado.

Sobre esas dos ideas se apoyan las dos medidas de una relación. El grado es el número de atributos, o sea una propiedad de la intensión. La cardinalidad es el número de tuplas, o sea una propiedad de la extensión. Conviene tener cuidado con la palabra cardinalidad, porque en el modelo entidad-relación significaba otra cosa: allí eran cuántas ocurrencias se asocian, y aquí es cuántas filas hay.

La intensión es la definición y no cambia; la extensión son los datos y cambia a cada rato. Grado cuenta atributos, cardinalidad cuenta tuplas.

Para el examen

  • Intensión o esquema: nombre más atributos con sus dominios: la parte estable

  • Extensión: las tuplas de un instante concreto

  • Grado: número de atributos

  • Cardinalidad: número de tuplas

Propiedades que cumple toda relación

Que la relación sea un conjunto matemático no es un adorno: de ahí salen cuatro propiedades que toda relación cumple por definición, y varias preguntas de examen se resuelven recordándolas.

  • Cada atributo tiene un dominio, es decir, un conjunto de valores válidos del que no puede salir.
  • Atomicidad. Los valores de los atributos son atómicos: no pueden ser multivalorados ni contener una estructura dentro. Esta propiedad es justamente lo que exige la primera forma normal.
  • No hay tuplas repetidas. Como una relación es un conjunto, dos tuplas idénticas serían la misma. Esta es la razón última de que toda relación tenga clave.
  • No hay orden establecido, ni entre las tuplas ni entre los atributos. Que una fila se vea la primera o que una columna se vea a la izquierda es un accidente de la presentación, no información.

La ausencia de orden tiene una consecuencia práctica que se olvida: una consulta sin cláusula de ordenación no garantiza en qué orden llegarán las filas, aunque hoy lleguen siempre igual. Si el orden importa, hay que pedirlo.

sql
-- Sin ORDER BY el gestor no promete ningún orden:
SELECT titulo, nivel FROM tema;

-- Si el orden forma parte del resultado, se pide:
SELECT titulo, nivel
FROM   tema
ORDER  BY nivel, titulo;

Para el examen

  • Valores: atómicos; es lo que exige la 1FN

  • Tuplas: no hay tuplas repetidas: por eso siempre hay clave

  • Orden: no hay orden ni entre tuplas ni entre atributos

Tres vocabularios para las mismas cosas

Los mismos conceptos reciben tres nombres distintos según se hable en términos matemáticos, en términos de base de datos o en términos de ficheros tradicionales. Los enunciados de examen mezclan los tres a propósito.

ConceptoModelo relacional (formal)Base de datos (práctico)Ficheros (clásico)
El conjunto enteroRelaciónTablaFichero
Un elemento del conjuntoTuplaFilaRegistro
Una propiedadAtributoColumnaCampo
Cuántos elementos hayCardinalidadNúmero de filasNúmero de registros
Cuántas propiedades hayGradoNúmero de columnasNúmero de campos

Relación, tupla y atributo es el vocabulario formal; tabla, fila y columna el práctico; fichero, registro y campo el heredado. Cardinalidad va con las filas y grado con las columnas.

Para el examen

  • Primer vocabulario: relación, tupla, atributo

  • Segundo: tabla, fila, columna

  • Tercero: fichero, registro, campo

Los tipos de clave

Una clave es lo que permite señalar una tupla sin ambigüedad. Hay varios tipos y se distinguen por dos criterios: si identifican de forma unívoca y si son mínimas, es decir, si al quitarles cualquier atributo dejan de identificar.

Tipo de claveDefiniciónEs mínima
SuperclaveCualquier conjunto de atributos que identifica unívocamente una tuplaNo necesariamente
Clave candidataSuperclave mínima: si se le quita un atributo, deja de identificar
Clave primariaLa clave candidata elegida por el diseñador para identificar la relación
Clave alternativaCada clave candidata que no fue la elegida como primaria
Clave ajena o foráneaAtributos que referencian la clave primaria de otra relación (o de la misma)No aplica

El razonamiento se ve mejor con un ejemplo. En una relación de alumnos con documento de identidad, número de seguridad social, color de ojos y fecha de nacimiento, son superclaves el documento solo, el número de seguridad social solo, el documento junto al color de ojos y el documento junto a la fecha de nacimiento: todas identifican. Pero solo dos son mínimas, el documento y el número de seguridad social, así que solo esas dos son claves candidatas. Si se elige el documento como clave primaria, el número de seguridad social queda como clave alternativa.

Toda clave candidata es una superclave; lo contrario no se cumple. Y toda clave primaria es una clave candidata elegida, de modo que la relación entre los tres conceptos es de inclusión, de la más amplia a la más restrictiva.

sql
CREATE TABLE alumno (
  id_alumno   INTEGER      PRIMARY KEY,   -- clave primaria
  documento   VARCHAR(9)   NOT NULL UNIQUE, -- clave alternativa
  email       VARCHAR(120) NOT NULL UNIQUE  -- otra clave alternativa
);

CREATE TABLE intento (
  id_intento  INTEGER PRIMARY KEY,
  id_alumno   INTEGER NOT NULL,
  id_subtema  INTEGER NOT NULL,
  aciertos    INTEGER NOT NULL,
  CONSTRAINT fk_intento_alumno
    FOREIGN KEY (id_alumno) REFERENCES alumno (id_alumno)
);

Para el examen

  • Superclave: identifica, sin exigir minimalidad

  • Candidata: superclave mínima

  • Primaria: la candidata elegida

  • Alternativa: las candidatas no elegidas

  • Ajena: referencia la primaria de otra relación

Valores nulos y reglas de integridad

Un valor nulo representa ausencia de valor. No es el cero, no es la cadena vacía y no es un espacio en blanco: significa que el dato no se conoce o no procede. Distinguirlo de esos tres es una pregunta clásica.

La regla de integridad de entidad exige que ningún atributo de la clave primaria pueda ser nulo. La razón es directa: si la clave sirve para identificar y parte de ella se desconoce, la tupla no queda identificada. Cuando la clave primaria es compuesta, la prohibición alcanza a todos y cada uno de sus atributos, no solo al conjunto.

La regla de integridad referencial exige que, si una relación tiene una clave ajena, el valor de esa clave ajena coincida con un valor existente de la clave primaria a la que referencia, o bien sea nulo. Es decir, no se puede apuntar a una fila que no existe.

Esa segunda posibilidad es la que más se pregunta: sí se admite que una clave ajena valga nulo, y eso significa que la tupla no está asociada a ninguna. Un intento de test sin tutor asignado tendría el identificador de tutor a nulo. Una clave primaria, en cambio, nunca puede serlo.

La clave primaria nunca admite nulos; la clave ajena sí. Cuando la primaria es compuesta, ninguno de sus atributos puede ser nulo por separado.

Para el examen

  • Integridad de entidad: ningún atributo de la clave primaria puede ser nulo

  • Integridad referencial: la clave ajena apunta a un valor existente, o es nula

  • Qué NO es el nulo: ni cero ni cadena vacía: es ausencia de valor

Las reglas de Codd

Codd formuló un conjunto de reglas para decidir si un sistema gestor merece llamarse relacional. Se conocen como «las 12 reglas de Codd», pero en realidad son trece, porque están numeradas de la 0 a la 12. Ese detalle aritmético es en sí mismo una pregunta de examen.

ReglaNombreQué exige
0Regla fundamentalEl gestor tiene que ser capaz de administrar la base de datos por completo con sus propias capacidades relacionales
1De la representación de la informaciónTodo dato se representa de una sola forma: como valor dentro de una tabla
2Del acceso garantizadoTodo dato es accesible sin ambigüedad indicando tabla, columna y valor de clave primaria
3Del tratamiento sistemático de los nulosLos nulos se soportan de forma uniforme para representar información desconocida o no aplicable, distinta del cero y de la cadena vacía
4Del catálogo dinámico en líneaLos metadatos se guardan en tablas y se consultan con el mismo lenguaje que los datos
5Del sublenguaje completoEl gestor ofrece algún lenguaje que cubra definición, manipulación, integridad, autorización y control de transacciones
6De actualización de vistasToda vista que sea teóricamente actualizable tiene que poder actualizarse también por el sistema
7De las operaciones de alto nivelInsertar, modificar y borrar opera sobre conjuntos de filas, sin obligar a recorrerlas de una en una
8De independencia físicaCambiar el almacenamiento no obliga a cambiar las aplicaciones
9De independencia lógicaCambiar el esquema conceptual sin perder información no obliga a cambiar las aplicaciones
10De independencia de la integridadLas restricciones viven en el catálogo y no dentro de los programas de aplicación
11De independencia de la distribuciónQue los datos estén repartidos en varias sedes no cambia la forma de trabajar con ellos
12De la no subversiónUn lenguaje de bajo nivel, si lo hay, no puede servir para esquivar las restricciones ya declaradas

Merece la pena fijarse en el grupo de las independencias, que son cuatro seguidas (física, lógica, de la integridad y de la distribución) y en que la regla 10 es la que justifica que las restricciones vivan en la base de datos y no en el código de la aplicación: si viven en el catálogo se cumplen siempre, venga la operación de donde venga.

Para el examen

  • Cuántas son: 13, numeradas de la 0 a la 12

  • Regla 4: catálogo consultable con el mismo lenguaje que los datos

  • Reglas 8 a 11: independencia física, lógica, de integridad y de distribución

  • Regla 12: la no subversión