Modelo relacional

Las bases de datos relacionales son el tipo de bases de datos actualmente m�s difundido. Los motivos de este �xito son fundamentalmente dos:

  1. ofrecen sistemas simples y eficaces para representar y manipular los datos
  2. se basan en un modelo, el relacional, con s�lidas bases te�ricas

El modelo relacional fue propuesto originariamente por E.F. Codd en un ya famoso art�culo de 1970. Gracias a su coherencia y facilidad de uso, el modelo se ha convertido en los a�os 80 en el m�s usado para la producci�n de DBMS.

La estructura fundamental del modelo relacional es precisamente esa, "relaci�n", es decir una tabla bidimensional constituida por l�neas (tuplas) y columnas (atributos). Las relaciones representan las entidades que se consideran interesantes en la base de datos. Cada instancia de la entidad encontrar� sitio en una tupla de la relaci�n, mientras que los atributos de la relaci�n representar�n las propiedades de la entidad. Por ejemplo, si en la base de datos se tienen que representar personas, se podr� definir una relaci�n llamada "Personas", cuyos atributos describen las caracter�sticas de las personas (tabla siguiente). Cada tupla de la relaci�n "Personas" representar� una persona concreta.

Personas
Nombre Apellido Nacimiento Sexo Estado Civil
Juan Loza 15/06/1971 H Soltero
Isabel Galvez 23/12/1969 M Casada
Micaela Ruiz 02/10/1985 M Soltera

En realidad, siendo rigurosos, una relaci�n es s�lo la definici�n de la estructura de la tabla, es decir su nombre y la lista de los atributos que la componen. Cuando se puebla con las tuplas, se habla de "instancia de relaci�n". Por eso, la tabla anterior representa una instancia de la relaci�n persona. Una representaci�n de la definici�n de esa relaci�n podr�a ser la siguiente:

Personas (nombre, apellido, fecha_nacimiento, sexo, estado_civil)

A continuaci�n, se indicar�n ambas (relaci�n e instancia de relaci�n) con el t�rmino "relaci�n", a no ser que no quede claro por el contexto a qu� acepci�n se refiere.

Las tuplas en una relaci�n son un conjunto en el sentido matem�tico del t�rmino, es decir una colecci�n no ordenada de elementos diferentes. Para distinguir una tupla de otra, se recurre al concepto de "llave primaria", o sea a un conjunto de atributos que permiten identificar un�vocamente una tupla en una relaci�n. Naturalmente, en una relaci�n puede haber m�s combinaciones de atributos que permitan identificar un�vocamente una tupla ("llaves candidatas"), pero entre �stas se elegir� una sola para utilizar como llave primaria. Los atributos de la llave primaria no pueden asumir el valor nulo (que significa un valor no determinado), en tanto que ya no permitir�an identificar una tupla concreta en una relaci�n. Esta propiedad de las relaciones y de sus llaves primarias est� bajo el nombre de integridad de las entidades (entity integrity).

A menudo, para obtener una llave primaria "econ�mica", es decir compuesta de pocos atributos f�cilmente manipulables, se introducen uno o m�s atributos ficticios, con c�digos identificativos un�vocos para cada tupla de la relaci�n.

Cada atributo de una relaci�n se caracteriza por un nombre y por un dominio. El dominio indica qu� valores pueden ser asumidos por una columna de la relaci�n. A menudo un dominio se define a trav�s de la declaraci�n de un tipo para el atributo (por ejemplo diciendo que es una cadena de diez caracteres), pero tambi�n es posible definir dominios m�s complejos y precisos. Por ejemplo, para el atributo "sexo" de nuestra relacion "Personas" podemos definir un dominio por el cual los �nicos valores v�lidos son 'M' y 'F'; o bien por el atributo "fecha_nacimiento" podremos definir un dominio por el que se consideren v�lidas s�lo las fechas de nacimiento despu�s del uno de enero de 1960, si en nuestra base de datos no est� previsto que haya personas con fecha de nacimiento anterior a esa. El motor de datos se ocupar� de controlar que en los atributos de las relaciones se incluyan s�lo los valores permitidos por sus dominios. Caracter�stica fundamental de los dominios de una base de datos relacional es que sean "at�micos", es decir que los valores contenidos en las columnas no se puedan separar en valores de dominios m�s simples. M�s formalmente se dice que no es posible tener atributos multivalor (multivalued). Por ejemplo, si una caracter�stica de las personas en nuestra base de datos fuese la de tener uno o m�s hijos, no ser�a posible escribir la relaci�n Personas de la siguiente manera:

Personas (nombre, apellido, fecha_nacimiento, sexo, estado_civil, hijos)

En efecto, el atributo hijos es un atributo no-at�mico, bien porque una persona puede tener m�s de un hijo o porque cada hijo tendr� diferentes caracter�sticas que lo describen. Para representar estas entidades en una base de datos relacional hay que definir dos relaciones:

Personas (*n�mero_persona, nombre, apellido, fecha_nacimiento, sexo, estado_civil)
Hijos(*n�mero_persona, *nombre_apellido, edad, sexo)

En las relaciones precedentes, los asteriscos (*) indican los atributos que componen sus llaves primarias. N�tese la introducci�n en la relaci�n Personas del atributo n�mero_persona, a trav�s del cual se asigna a cada persona un identificativo num�rico un�voco que se usa como llave primaria. Estas relaciones contienen s�lo atributos at�micos. Si una persona tiene m�s de un hijo, �stos se representar�n en tuplas diferentes de la relaci�n Hijos. Las diferentes caracter�sticas de los hijos las representan los atributos de la relaci�n Hijos. La uni�n entre las dos relaciones est� constituida por los atributos n�mero_persona que aparecen en ambas relaciones y que permiten que se asigne cada tupla de la relaci�n hijos a una tupla concreta de la relaci�n Personas. M�s formalmente se dice que el atributo n�mero_persona de la relaci�n Hijos es una llave externa (foreign key) hacia la relaci�n Personas. Una llave externa es una combinaci�n de atributos de una relaci�n que son, a su vez, una llave primaria para otra relaci�n. Una caracter�stica fundamental de los valores presentes en una llave externa es que, a no ser que no sean null, tienen que corresponder a valores existentes en la llave primaria de la relaci�n a la que se refieren. En nuestro ejemplo, esto significa que no puede existir en la relaci�n Hijos una tupla con un valor del atributo n�mero_persona sin que tambi�n en la relaci�n Personas exista una tupla con el mismo valor para su llave primaria. Esta propiedad va bajo el nombre de integridad referencial (referential integrity).

Una de las grandes ventajas del modelo relacional es que define tambi�n un �lgebra, llamada "�lgebra relacional". Todas las manipulaciones posibles sobre las relaciones se obtienen gracias a la combinaci�n de tan s�lo cinco operadores: RESTRICT, PROJECT, TIMES, UNION y MINUS. Por comodidad, se han definido tambi�n tres operadores adicionales que de todos modos se pueden obtener aplicando los cinco fundamentales: JOIN, INTERSECT y DIVIDE. Los operadores relacionales reciben como argumento una relaci�n o un conjunto de relaciones y restituyen una �nica relaci�n como resultado.

Veamos brevemente estos ocho operadores:

RESTRICT
restituye una relaci�n que contiene un subconjunto de las tuplas de la relaci�n a la que se aplica. Los atributos se quedan como estaban.
PROJECT
restituye una relaci�n con un subconjunto de los atributos de la relaci�n a la que viene aplicado. Las tuplas de la relaci�n resultado se componen de las tuplas de la relacion original, de manera que siguen siendo un conjunto en sentido matem�tico.
TIME
se aplica a dos relaciones y efect�a el producto cartesiano de las tuplas. Cada tupla de la primera relaci�n est� concatenada con cada tupla de la segunda.
JOIN
se concatenan las tuplas de dos relaciones de acuerdo con el valor de un conjunto de sus atributos.
UNION
aplicando este operador a dos relaciones compatibles, se obtiene una que contiene las tuplas de ambas relaciones. Dos relaciones son compatibles si tienen el mismo n�mero de atributos y los atributos correspondientes en las dos relaciones tienen el mismo dominio.
MINUS
aplicado a dos relaciones compatibles restituye una tercera que contiene las tuplas que se encuentran s�lo en la primera relaci�n.
INTERSECT
aplicado a dos relaciones compatibles restituye una relaci�n que contiene las tuplas que existen en ambas.
DIVIDE
aplicado a dos relaciones que tengan atributos comunes, restituye una tercera que contiene todas las tuplas de la primera relaci�n que se puede hacer que correspondan con todos los valores de la segunda relaci�n.

En las siguientes tablas, a t�tulo de ejemplo, se representan los resultados de la aplicaci�n de algunos operadores relacionales a las relaciones Personas e Hijos. Como nombres para las relaciones resultado se han utilizado las expresiones que las producen.

Personas
n�mero_persona nombre apellido fecha_nacimiento sexo estado_civil
2 Mario Rossi 29/03/1965 M Casado
1 Giuseppe Russo 15/11/1972 M Soltero
3 Alessandra Mondella 13/06/1970 F Soltera

Hijos
n�mero_persona nombre_apellido edad sexo
2 Maria Rossi 3 F
2 Gianni Rossi 5 M

RESTRICT (Personas)
sexo='M
n�mero_persona nombre apellido fecha_nacimiento sexo estado_civil
2 Mario Rossi 29/03/1965 M Casado
1 Giuseppe Russo 15/11/1972 M Soltero

PROJECT sexo (Personas)
sexo
M
F
RESTRICT (Personas)
sexo='M'
n. nombre apellido nacimiento sexo stado_civil nombre edad sexo
Mario Rossi apellido 29/03/1965 M Csado Maria Rossi 3 F
Mario Rossi Apellido 29/03/1965 M Casado Gianni Rossi 5 M

Las bases de datos relacionales efect�an todas las operaciones en las tablas usando el �lgebra relacional, aunque normalmente no le permiten al usuario usarla. El usuario interacciona con la base de datos a trav�s de una interfaz diferente: el lenguaje SQL, un lenguaje declarativo que permite escribir conjuntos de datos. Las instrucciones SQL vienen descompuestas por el motor de datos en una serie de operaciones relacionales.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR