Está en la página 1de 7

47

Modelo relacional: Estructura e integridad

3. Modelo relacional: Estructura e integridad.


3.1. Introduccin.
El modelo de datos relacional es posterior a los modelos jerrquicos y de red. Naci
como consecuencia de los trabajos publicados en 1969-70 por E. F. Codd, aunque los
primeros SGBD relacionales no aparecen hasta principios de los aos ochenta.
El modelo relacional se ocupa de tres aspectos de los datos: su estructura, su
integridad y su manipulacin. En este captulo nos ocuparemos de los dos primeros y
dedicaremos otro captulo a la manipulacin de los datos.
La estructura lgica y el modo de realizar las operaciones de E/S en el enfoque
relacional, son distintos respecto al enfoque jerrquico y de red. El modelo relacional
representa la base de datos por medio de tablas llamadas relaciones. Algunas de las
diferencias con las bases de datos jerrquicas o en red son:

A la hora de operar con los datos, en lugar de hacerlo sobre registros, acta
sobre la relacin (tabla).
Las bases de datos relacionales no permiten ni grupos repetitivos ni apuntadores
en los niveles externo y conceptual, en el nivel interno el sistema tiene libertad
para usar cualquier estructura que desee.

3.2. Estructura de datos relacional.


De manera informal, una base de datos relacional es aquella cuyos usuarios la
perciben como un conjunto de tablas. Por ejemplo:
NIF NOMBRE LOCALIDAD
1111 Manuel
Mlaga
3333 Gabriel
Granada
5555 Marco
Mlaga
7777 Carlos
Cdiz
a) Tabla de PROVEEDORES
COD-ART NIF-PRO
11
1111
22
3333
33
3333
11
7777
33
7777
c) Tabla de PRECIOS

I.E.S. Bezmiliana

CODIGO CONCEPTO
11
Teclado
22
Impresora
33
Monitor
b) Tabla de ARTICULOS
PRECIO
16.00
280.00
199.00
18.00
210.00

Modelo relacional: Estructura e integridad

48

El modelo relacional dispone de una terminologa propia que pasaremos a describir.


Si suponemos que una relacin puede representarse mediante una tabla (de hecho es
usual y aceptable utilizar el trmino tabla para referirse a una relacin) podramos decir
que:
Una tupla corresponde a una fila de la tabla. Representa cada una de las
ocurrencias de la relacin (equivale a lo que conocemos como ocurrencia de un
registro, en ficheros clsicos). El nmero de tuplas se denomina cardinalidad,
la cardinalidad vara con el tiempo.

Un atributo corresponde a una columna de la tabla (equivale a un campo de un


registro). El nmero de atributos se llama grado. El grado no vara con el
tiempo, si aadimos un atributo a una relacin, podemos considerar que se trata
de otra relacin nueva. Una relacin de grado uno se llama unaria; de grado dos,
binaria; de grado tres, ternaria;..., y una relacin de grado n, n-aria.

Un dominio es una coleccin de valores, de los cuales uno o ms atributos


obtienen sus valores reales. Por ejemplo, el dominio de cdigo de artculo es el
conjunto de todos los cdigos de artculos posibles (equivaldra a un conjunto de
valores de un tipo dado).

Clave candidata es un atributo K (o conjunto de atributos) de una relacin R


que cumple las siguientes propiedades independientes del tiempo:
- Unicidad: No existen dos tuplas en R con el mismo valor de K.
- Minimalidad: Si K es compuesto, no ser posible eliminar ningn
componente de K sin destruir la propiedad de unicidad.
Por ejemplo, el atributo compuesto (NIF,LOCALIDAD) no es una clave
candidata de la relacin PROVEEDORES, ya que podemos eliminar el atributo
LOCALIDAD sin destruir la propiedad de unicidad, es decir, siguen sin existir
dos tuplas con el mismo valor de NIF.

Clave primaria. Es posible que una relacin posea ms de una clave candidata,
en ese caso, se escoge una de ellas como clave primaria y el resto se denominan
claves alternativas. En la prctica la eleccin de la clave primaria suele ser
sencilla. Toda relacin, sin excepcin, tiene una clave primaria y suele
representarse subrayando y/o aadiendo el carcter # al atributo (o conjunto de
atributos) correspondiente. Por ejemplo: Artculos( cdigo#, concepto)

Clave ajena o extranjera es un atributo (o conjunto de atributos) de una


relacin R1 que es clave primaria de otra relacin R2. Se utiliza para referenciar
a la tupla de R2 cuya clave primaria coincida con el valor de la clave ajena de
R1. Ambas claves deben definirse sobre el mismo dominio.
Por ejemplo, el atributo NIF-PROV de la relacin PRECIOS es clave extranjera
ya que se utiliza para referenciar a una tupla de PROVEEDORES mediante la
clave primaria NIF.
R1 y R2 pueden ser la misma relacin. Por ejemplo, una relacin que represente
un rbol genealgico de un pedigr (Cdigo#, Nombre, FechaNac,
...,CodPadre,CodMadre), donde CodPadre y CodMadre son claves ajenas que
referencian tuplas de la misma relacin.

I.E.S. Bezmiliana

49

Modelo relacional: Estructura e integridad

Dominios

Clave primaria

Relacin

NIF#
1111
3333
5555
7777

NOMBRE
Manuel
Gabriel
Marco
Carlos

LOCALIDAD
Mlaga
Granada
Mlaga
Cdiz

Tuplas

Cardinalidad

Atributos
Grado

Ahora podemos dar una definicin ms formal de una relacin: Una relacin R
sobre un conjunto de dominios D1,D2,...,Dn (no necesariamente distintos) se compone
de dos partes: una cabecera o esquema, y un cuerpo.
- La cabecera o esquema est formado por un conjunto fijo de atributos, o
mejor dicho, de pares atributo-dominio {(A1:D1), (A2:D2),...,(An:Dn)}
- El cuerpo est formado por un conjunto de tuplas (n-tuplas) que vara con el
tiempo. Cada tupla a su vez est formada por un conjunto de pares atributovalor: {(A1:vi1), (A2:vi2),...,(An:vin)} (i=1,2,...,m donde m es el nmero de
tuplas del conjunto). Cada vij es un valor del dominio Dj asociado al atributo
Aj.
Adems, las relaciones cumplen las siguientes propiedades:

No existen tuplas repetidas. El cuerpo de la relacin se ha definido como


un conjunto de tuplas, y en matemticas los conjuntos por definicin no
incluyen elementos repetidos. Hay que decir que muchos de los SGBD
relacionales s admiten duplicidad de tuplas.
Las tuplas no estn ordenadas. El cuerpo de la relacin se ha definido
como un conjunto de tuplas, y los conjuntos en matemticas no son
ordenados.
Los atributos no estn ordenados. La cabecera de la relacin se ha definido
como un conjunto pares atributo-dominio, y los conjuntos en matemticas no
son ordenados.

Estas propiedades son las que marcan la diferencia entre una tabla y una relacin, ya
que una tabla presenta las filas y las columnas en un orden, del cual carecen las
relaciones. Por otro lado, una tabla podra contener filas repetidas. De todos modos,
como dijimos anteriormente, es muy comn utilizar el trmino tabla para referirse a una
relacin.

I.E.S. Bezmiliana

50

Modelo relacional: Estructura e integridad

3.3. Integridad de los datos.


En una base de datos relacional, las relaciones estn sujetas a ciertas reglas de
integridad:

Integridad de entidad: Ningn atributo que participe en una clave principal


puede tener valores nulos.
Codd justifica esto del siguiente modo: En el modelo relacional, las relaciones
representan entidades del mundo real y todas las entidades del mundo real son
distinguibles. Las claves primarias llevan a cabo la funcin de identificacin en el
modelo relacional, por tanto un identificador nulo sera una contradiccin.

Integridad referencial:No
concordancia.

deben

existir

valores

de

clave

ajena

sin

Dicho de otro modo, si una relacin tiene una clave ajena que referencia a otra
relacin (o a ella misma), cada valor de la clave ajena tiene que ser igual a un valor
de la clave principal de la relacin a la que referencia, o bien, ser completamente
nulo.
El diseador de la base de datos deber poder especificar qu operaciones han de
rechazarse y cules han de aceptarse, y en este caso, qu operaciones de compensacin
hay que realizar para mantener la integridad de la base de datos. Para ello el diseador
debe plantearse tres preguntas por cada clave ajena:
1. Puede aceptar nulos esa clave ajena? Por ejemplo, (tomando como referencia las
relaciones PROVEEDORES, ARTICULOS, PRECIOS) tiene sentido la existencia
de un precio cuyo proveedor se desconoce? Evidentemente, no. En algunos casos
esta respuesta podra ser distinta, por ejemplo, en una base de datos con las
relaciones EMPLEADOS y PROYECTOS, podra existir un empleado no asignado
de momento a un proyecto.
2. Qu deber suceder si se intenta eliminar una tupla referenciada por una clave
ajena? Por ejemplo, si se intenta eliminar un proveedor del cual existe algn precio
de artculo. En general, para estos casos existen por lo menos tres posibilidades:

Restringir: La operacin de eliminacin se restringe slo al caso en el que no


existe alguna tupla con clave ajena que la referencie, rechazndose en caso
contrario. En nuestro ejemplo, un proveedor podr ser borrado, si y slo si, no
tiene precios de artculos (por ahora, no suministra artculos).
Propagar en cascada: La operacin de borrado se propaga en cascada
eliminando tambin todas las tuplas cuya clave ajena la referencien. En nuestro
ejemplo, se eliminara el proveedor y todas las tuplas con precios de artculos
suministrados por l.
Anular: Se asignan nulos en la clave ajena de todas las tuplas que la referencien
y se elimina la tupla referenciada. En nuestro ejemplo, no tiene mucho sentido,
pero consistira en asignar nulos al NIF-PROV de todas las tuplas de precios

I.E.S. Bezmiliana

51

Modelo relacional: Estructura e integridad

pertenecientes al proveedor que queremos borrar, y posteriormente borrar al


proveedor.
3. Qu deber suceder si hay un intento de modificar la clave primaria de una
tupla referenciada por una clave ajena? Por ejemplo, si se intenta modificar la
clave de un proveedor del cual existe algn precio de artculo. En general, para estos
casos tambin existen por lo menos tres posibilidades:

Restringir: La operacin de modificacin se restringe slo al caso en el que no


existe alguna tupla con clave ajena que la referencie, rechazndose en caso
contrario. En nuestro ejemplo, la clave de un proveedor podr ser modificada, si
y slo si, no tiene precios de artculos (por ahora, no suministra artculos).
Propagar en cascada: La operacin de modificacin se propaga en cascada
modificando tambin la clave ajena de todas las tuplas que la referencien. En
nuestro ejemplo, se modificara el NIF del proveedor y la clave ajena NIFPROV de todos los precios de artculos suministrados por l.
Anular: Se asignan nulos en la clave ajena de todas las tuplas que la referencien
y se modifica la clave de la tupla referenciada. En nuestro ejemplo, tampoco
tiene mucho sentido, pero consistira en asignar nulos al NIF-PROV de todas las
tuplas de precios pertenecientes al proveedor que queremos modificar, y
posteriormente modificar la clave del proveedor.

Desde luego, las opciones restringir, propagar en cascada y anular, slo


representan un conjunto de casos que se presentan con bastante frecuencia en la
prctica. Pero podran adoptarse muchas otras soluciones. Por ejemplo, para un intento
de borrado de un proveedor:
-

Podra efectuarse un dilogo con el usuario.


Podra grabarse informacin en otro archivo de antiguos proveedores.
Podra transferirse a otro proveedor los artculos del proveedor en cuestin.
Etc. ...

Por ltimo, vamos a comentar con ms profundidad la opcin propagar en cascada


en el caso de borrado. Si suponemos dos relaciones R2 y R1, tal que, la clave ajena de
R2 referencia a la clave principal de R1:
R2

R1

Si eliminamos una tupla de R1, en general, implicar la eliminacin de ciertas tuplas


de R2. Si suponemos que la clave ajena de otra relacin R3 referencia a la clave
principal de R2:
R3
R2
R1
La eliminacin de R2 depender de la regla de eliminacin definida para la
restriccin referencial de R3 a R2. Si fracasa esa eliminacin, fracasar toda la
operacin y la base de datos no ser modificada. Esto es extensible a cualquier nmero
de niveles. Algo similar ocurre si, en vez de borrado, es modificacin y la clave ajena de
R2 forma parte de su propia clave primaria.

I.E.S. Bezmiliana

52

Modelo relacional: Estructura e integridad

3.4. Un ejemplo de arquitectura relacional: SYSTEM R.


En el mercado hay diversos sistemas relacionales, nosotros analizaremos
brevemente el SYSTEM R.
La figura siguiente muestra la arquitectura relacional del SYSTEM R, bajo las
recomendaciones ANSI/SPARC:

Nivel
externo

Nivel
conceptual

Nivel
interno

Sublenguaje de
datos

Sublenguaje de
datos

Area de trabajo
del usuario

Area de trabajo
del usuario

Submodelo relacional
de datos (vistas)

Submodelo relacional
de datos (vistas)

Modelo relacional de
datos (tabla base)

Esquema de
almacenamiento
Base de datos

Podemos apreciar las siguientes partes:

El nivel conceptual, definido por el modelo relacional de datos. Se trata de una


coleccin de relaciones, tambin llamadas tablas de base, cada una de las cuales se
representa por medio de un archivo distinto.

El nivel externo, definido por el llamado submodelo relacional de datos o vista. Es


una relacin que no tiene existencia por s misma y se deriva de una o ms tablas de
base, a diferencia de un subesquema CODASYL, que slo puede extraer datos de un
archivo. Cada programa utiliza un buffer, llamado rea de trabajo del usuario
(UWA), para depositar o recuperar los datos antes de guardarlos en la base de datos
o antes de ser procesados.

El nivel interno, donde cada tabla de base se representa por un archivo distinto que
puede tener cualquier nmero de ndices asociados.

Un sublenguaje de datos para el manejo de los datos del sistema relacional. Con
estos lenguajes, llamados de especificacin, es posible procesar una tabla entera
cada vez que se ejecuta una operacin de E/S. Los lenguajes que operan registro a
registro se llaman lenguajes de navegacin, como son los jerrquicos y de red. Los
sublenguajes de datos se pueden clasificar en dos grupos:

I.E.S. Bezmiliana

Modelo relacional: Estructura e integridad

53

a) Lenguaje de procedimiento. Basado en el lgebra relacional, permite al


usuario manipular relaciones por medio de operadores algebraicos relacionales
para obtener los resultados requeridos.
b) Lenguaje sin procedimiento. Basado en el clculo relacional, permite al
usuario especificar exactamente qu datos desea, sin tener que detallar ni
codificar la forma de obtenerlos a partir de las relaciones disponibles en la base
de datos.

I.E.S. Bezmiliana