You are on page 1of 18

MODELO RELACIONAL

Introduccin
Las bases de datos relacionales son el tipo de bases de datos actualmente ms 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 slidas bases tericas
El modelo relacional fue propuesto originariamente por E.F. Codd en un ya famoso
artculo de 1970. Gracias a su coherencia y facilidad de uso, el modelo se ha convertido
en los aos 80 en el ms usado para la produccin de DBMS.
La estructura fundamental del modelo relacional es precisamente esa, "relacin", es
decir una tabla bidimensional constituida por lneas (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 relacin, mientras que
los atributos de la relacin representarn las propiedades de la entidad. Por ejemplo, si
en la base de datos se tienen que representar personas, se podr definir una relacin
llamada "Personas", cuyos atributos describen las caractersticas de las personas (tabla
siguiente). Cada tupla de la relacin "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

02/10/1985 M

Soltera

Micaela Ruiz

En realidad, siendo rigurosos, una relacin es slo la definicin 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 relacin". Por eso, la tabla anterior representa
una instancia de la relacin persona. Una representacin de la definicin de esa relacin
podra ser la siguiente:
Personas (nombre, apellido, fecha_nacimiento, sexo, estado_civil)

A continuacin, se indicarn ambas (relacin e instancia de relacin) con el trmino


"relacin", a no ser que no quede claro por el contexto a qu acepcin se refiere.
Las tuplas en una relacin son un conjunto en el sentido matemtico del trmino, es
decir una coleccin 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 unvocamente una tupla en una relacin. Naturalmente, en una
relacin puede haber ms combinaciones de atributos que permitan identificar
unvocamente 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 permitiran
identificar una tupla concreta en una relacin. 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 "econmica", es decir compuesta de pocos
atributos fcilmente manipulables, se introducen uno o ms atributos ficticios, con
cdigos identificativos unvocos para cada tupla de la relacin.
Cada atributo de una relacin se caracteriza por un nombre y por un dominio. El
dominio indica qu valores pueden ser asumidos por una columna de la relacin. A
menudo un dominio se define a travs de la declaracin de un tipo para el atributo (por
ejemplo diciendo que es una cadena de diez caracteres), pero tambin es posible definir
dominios ms complejos y precisos. Por ejemplo, para el atributo "sexo" de nuestra
relacion "Personas" podemos definir un dominio por el cual los nicos valores vlidos
son 'M' y 'F'; o bien por el atributo "fecha_nacimiento" podremos definir un dominio por
el que se consideren vlidas slo las fechas de nacimiento despus 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 slo los valores permitidos por sus dominios.
Caracterstica fundamental de los dominios de una base de datos relacional es que sean
"atmicos", es decir que los valores contenidos en las columnas no se puedan separar en
valores de dominios ms simples. Ms formalmente se dice que no es posible tener
atributos multivalor (multivalued). Por ejemplo, si una caracterstica de las personas en
nuestra base de datos fuese la de tener uno o ms hijos, no sera posible escribir la
relacin Personas de la siguiente manera:
Personas (nombre, apellido, fecha_nacimiento, sexo, estado_civil,
hijos)

En efecto, el atributo hijos es un atributo no-atmico, bien porque una persona puede
tener ms de un hijo o porque cada hijo tendr diferentes caractersticas que lo
describen. Para representar estas entidades en una base de datos relacional hay que
definir dos relaciones:
Personas (*nmero_persona, nombre, apellido, fecha_nacimiento, sexo,
estado_civil)
Hijos(*nmero_persona, *nombre_apellido, edad, sexo)

En las relaciones precedentes, los asteriscos (*) indican los atributos que componen sus
llaves primarias. Ntese la introduccin en la relacin Personas del atributo
nmero_persona, a travs del cual se asigna a cada persona un identificativo numrico
unvoco que se usa como llave primaria. Estas relaciones contienen slo atributos
atmicos. Si una persona tiene ms de un hijo, stos se representarn en tuplas
diferentes de la relacin Hijos. Las diferentes caractersticas de los hijos las representan
los atributos de la relacin Hijos. La unin entre las dos relaciones est constituida por
los atributos nmero_persona que aparecen en ambas relaciones y que permiten que se
asigne cada tupla de la relacin hijos a una tupla concreta de la relacin Personas. Ms
formalmente se dice que el atributo nmero_persona de la relacin Hijos es una llave
externa (foreign key) hacia la relacin Personas. Una llave externa es una combinacin
de atributos de una relacin que son, a su vez, una llave primaria para otra relacin. Una
caracterstica 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
relacin a la que se refieren. En nuestro ejemplo, esto significa que no puede existir en
la relacin Hijos una tupla con un valor del atributo nmero_persona sin que tambin
en la relacin 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 tambin un lgebra,
llamada "lgebra relacional". Todas las manipulaciones posibles sobre las relaciones se

obtienen gracias a la combinacin de tan slo cinco operadores: RESTRICT,


PROJECT, TIMES, UNION y MINUS. Por comodidad, se han definido tambin 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 relacin o un conjunto de relaciones y restituyen una nica
relacin como resultado.
Veamos brevemente estos ocho operadores:
RESTRICT
PROJECT
TIME
JOIN
UNION
MINUS
INTERSECT
DIVIDE
En las siguientes tablas, a ttulo de ejemplo, se representan los resultados de la
aplicacin 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
nmero_persona

nombre

apellido fecha_nacimiento sexo estado_civil

Mario

Rossi

29/03/1965

Casado

Giuseppe

Russo

15/11/1972

Soltero

Alessandra Mondella 13/06/1970

Soltera

Hijos
nmero_persona nombre_apellido edad sexo
2

Maria Rossi

Gianni Rossi

RESTRICT (Personas)
sexo='M

nmero_persona nombre apellido fecha_nacimiento sexo estado_civil


2

Mario

Rossi

29/03/1965

Casado

Giuseppe Russo

15/11/1972

Soltero

PROJECT sexo (Personas)


sexo
M
F
RESTRICT (Personas)
sexo='M'

n.

nombre apellido nacimiento sexo stado_civil

Mario Rossi

apellido 29/03/1965 M

Mario Rossi

Apellido 29/03/1965 M

Csado
Casado

nombre

edad sexo

Maria Rossi 3

Gianni Rossi 5

Las bases de datos relacionales efectan 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 travs 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.

Proceso de normalizacin
El proceso de normalizacin es un estndar que consiste, bsicamente, en un proceso de conversin de las relaciones
entre las entidades, evitando:

La redundancia de los datos: repeticin de datos en un sistema.


Anomalas de actualizacin: inconsistencias de los datos como resultado de datos redundantes y
actualizaciones parciales.
Anomalas de borrado: prdidas no intencionadas de datos debido a que se han borrado otros datos.
Anomalas de insercin: imposibilidad de adicionar datos en la base de datos debido a la ausencia de otros
datos.

Tomando como referencia la tabla siguiente:

AUTORES Y LIBROS
NOMBRE NACION CODLIBRO TITULO EDITOR
Date

USA

999

IBD

AW

Ad.Mig.

ESP

888

CyD

RM

Ma.Piat. ITA

777

CyD

RM

Date

666

BdD

AW

USA

Se plantean una serie de problemas:

Redundancia: cuando un autor tiene varios libros, se repite la nacionalidad.


Anomalas de modificacin: Si Ad.Mig. y Ma.Piat. desean cambiar de editor, se modifica en los 2 lugares. A
priori no podemos saber cuntos autores tiene un libro. Los errores son frecuentes al olvidar la
modificacin de un autor. Se pretende modificar en un slo sitio.
Anomalas de insercin: Se desea dar de alta un autor sin libros, en un principio. NOMBRE y CODLIBRO son
campos clave, una clave no puede tomar valores nulos.

Asegurando:

Integridad entre los datos: consistencia de la informacin.

El proceso de normalizacin nos conduce hasta el modelo fsico de datos y consta de varias fases denominadas
formas normales, estas formas se detallan a continuacin.

Definicin de la clave
Antes de proceder a la normalizacin de la tabla lo primero que debemos de definir es una clave, esta clave deber
contener un valor nico para cada registro (no podrn existir dos valores iguales en toda la tabla) y podr estar
formado por un nico campo o por un grupo de campos.

En la tabla de alumnos de un centro de estudios no podemos definir como campo clave el nombre del alumno ya que
pueden existir varios alumnos con el mismo nombre. Podramos considerar la posibilidad de definir como clave los
campos nombre y apellidos, pero estamos en la misma situacin: podra darse el caso de alumnos que tuvieran los
mismo apellidos y el mismo nombre (Juan Fernndez Martn).
La solucin en este caso es asignar un cdigo de alumno a cada uno, un nmero que identifique al alumno y que
estemos seguros que es nico.
Una vez definida la clave podremos pasar a estudiar la primera forma normal.

Primera forma normal (1NF)


Se dice que una tabla se encuentra en primera forma normal (1NF) si y solo si cada uno de los campos contiene un
nico valor para un registro determinado. Supongamos que deseamos realizar una tabla para guardar los cursos que
estn realizando los alumnos de un determinado centro de estudios, podramos considerar el siguiente diseo:

Cdigo Nombre

Cursos

Marcos Ingls

Lucas

Contabilidad, Informtica

Marta

Ingls, Contabilidad

Podemos observar que el registro de cdigo 1 si cumple la primera forma normal, cada campo del registro contiene
un nico dato, pero no ocurre as con los registros 2 y 3 ya que en el campo cursos contiene ms de un dato cada uno.
La solucin en este caso es crear dos tablas del siguiente modo:

Tabla A
Cdigo Nombre
1

Marcos

Lucas

Marta

Tabla B
Cdigo

Curso

Ingls

Contabilidad

Informtica

Ingls

Informtica

Como se puede comprobar ahora todos los registros de ambas tablas contienen valores nicos en sus campos, por lo
tanto ambas tablas cumplen la primera forma normal.
Una vez normalizada la tabla en 1NF, podemos pasar a la segunda forma normal.

Segunda forma normal (2NF)


La segunda forma normal compara todos y cada uno de los campos de la tabla con la clave definida. Si todos los
campos dependen directamente de la clave se dice que la tabla est es segunda forma normal (2NF).
Supongamos que construimos una tabla con los aos que cada empleado ha estado trabajando en cada departamento
de una empresa:

Cdigo Empleado Cdigo Dpto. Nombre Departamento Aos


1

Juan

Contabilidad

Pedro

Sistemas

Sonia

I+D

Vernica Sistemas

10

Pedro

Contabilidad

Tomando como punto de partida que la clave de esta tabla est formada por los campos cdigo de empleado y cdigo
de departamento, podemos decir que la tabla se encuentra en primera forma normal, por tanto vamos a estudiar la
segunda:
1.
2.
3.

El campo nombre no depende funcionalmente de toda la clave, slo depende del cdigo del empleado.
El campo departamento no depende funcionalmente de toda la clave, slo del cdigo del departamento.
El campo aos si que depende funcionalmente de la clave ya que depende del cdigo del empleado y del
cdigo del departamento (representa el nmero de aos que cada empleado ha trabajado en cada
departamento)

Por tanto, al no depender todos los campos de la totalidad de la clave la tabla no est en segunda forma normal, la
solucin es la siguiente:

Tabla A
Cdigo Empleado Nombre
1

Juan

Pedro

Sonia

Vernica

Tabla B
Cdigo Departamento

Dpto.

I+D

Sistemas

Contabilidad

Tabla C
Cdigo Empleado Cdigo Departamento Aos
1

10

Podemos observar que ahora si se encuentras las tres tabla en segunda forma normal, considerando que la tabla A
tiene como ndice el campo Cdigo Empleado, la tabla B Cdigo Departamento y la tabla C una clave compuesta por
los campos Cdigo Empleado y Cdigo Departamento.

Tercera forma normal (3NF)


Se dice que una tabla est en tercera forma normal si y solo si los campos de la tabla dependen nicamente de la
clave, dicho en otras palabras los campos de las tablas no dependen unos de otros. Tomando como referencia el
ejemplo anterior, supongamos que cada alumno slo puede realizar un nico curso a la vez y que deseamos guardar
en que aula se imparte el curso. A voz de pronto podemos plantear la siguiente estructura:

Cdigo Nombre

Curso

Marcos Informtica Aula A

Lucas

Ingls

Marta

Contabilidad Aula C

Estudiemos la dependencia de cada campo con respecto a la clave cdigo:

Aula

Nombre depende directamente del cdigo del alumno.

Aula B

Curso depende de igual modo del cdigo del alumno.


El aula, aunque en parte tambin depende del alumno, est mas ligado al curso que el alumno est
realizando.

Por esta ltima razn se dice que la tabla no est en 3NF. La solucin sera la siguiente:

Tabla A
Cdigo Nombre

Curso

Marcos Informtica

Lucas

Ingls

Marta

Contabilidad

Tabla B
Curso

Aula

Informtica Aula A
Ingls

Aula B

Contabilidad Aula C

Una vez conseguida la segunda forma normal, se puede estudiar la cuarta forma normal.

Cuarta forma normal (4NF)


Una tabla est en cuarta forma normal si y slo si para cualquier combinacin clave - campo no existen valores
duplicados. Vemoslo con un ejemplo:

Geometra
Figura

Color Tamao

Cuadrado Rojo

Grande

Cuadrado Azul

Grande

Cuadrado Azul

Mediano

Crculo

Blanco Mediano

Crculo

Azul

Pequeo

Crculo

Azul

Mediano

Comparemos ahora la clave (Figura) con el atributo Tamao, podemos observar que Cuadrado Grande est repetido;
igual pasa con Crculo Azul, entre otras. Estas repeticiones son las que se deben evitar para tener una tabla en 4NF.
La solucin en este caso sera la siguiente:

Tamao
Figura

Tamao

Cuadrado Grande
Cuadrado Pequeo
Crculo

Mediano

Crculo

Pequeo

Color
Figura

Color

Cuadrado Rojo
Cuadrado Azul
Crculo

Blanco

Crculo

Azul

Ahora si tenemos nuestra base de datos en 4NF.

Otras formas normales


Existen otras dos formas normales, la llamada quinta forma normal (5FN) que no detallo por su dudoso valor prctico
ya que conduce a una gran divisin de tablas y la forma normal dominio / clave (FNDLL) de la que no existe mtodo
alguno para su implantacin.

Las interrelaciones
Las interrelaciones son las relaciones que existen entre varias tablas del sistema
(Clientes y Pedidos, por ejemplo). Existen tres formas de interrelaciones dependiendo
de la cardinalidad con la que se combinan los elementos de ambas tablas.

Interrelaciones uno a uno

Una interrelacin es de uno a uno entre la tabla A y la tabla B cuando a cada elemento
de la clave de A se le asigna un nico elemento de la tabla B y para cada elemento de la
clave de la tabla B contiene un nico elemento en la tabla A. Un ejemplo de
interrelacin de este tipo es la formada por las tablas Datos Generales de Clientes y
Datos Contables de Clientes. En esta relacin cada cliente tiene una nica direccin y
una direccin en cada una de las tablas. Representamos la relacin como A 1: 1 B.
Ante la presencia de este tipo de relacin nos podemos plantear el caso de unificar todos
los datos en nica tabla pues no es necesario mantener ambas tablas a la misma vez.
Este tipo de relacin se genera cuando aparecen tablas muy grandes, con gran cantidad
de campos, disgregando la tabla principal en dos para evitar tener una tabla muy grande.
Tambin surge cuando los diferentes grupos de usuario cumplimentan una informacin
diferente para un mismo registros; en este caso se crean tantas tablas como registros,
evitando as tener que acceder a informacin que el usuario del grupo actual no necesita.
Interrelaciones uno a varios

Una interrelacin es de uno a varios entre las tablas A y B cuando una clave de la tabla
A posee varios elementos relacionados en la tabla B y cuando una clave de la tabla B
posee un nico elemento relacionado en la tabla A.
Estudiemos la relacin entre la tabla de clientes y la tabla de pedidos. Un cliente puede
realizar varios pedidos pero un pedido pertenece a un nico cliente, por tanto se trata de
una relacin uno a varios y la representamos A 1: n B.
Estas relaciones suelen surgir de aplicar la 1NF a una tabla.
Interrelaciones varios a varios

Una interrelacin es de varios a varios entre las tablas A y B cuando una clave de la
tabla A posee varios elementos relacionados en la tabla B y cuando una clave de la tabla
B posee varios elementos relacionados en la tabla A.
Un caso muy caracterstico de esta interrelacin es la que surge entre las tablas de
Puestos de Trabajo y Empleados de una empresa. Un Empleado puede desempear
realizar varias funciones dentro de una empresa (desempear varios puestos de trabajo),
y un puesto de trabajo puede estar ocupado por varios empleados a la misma vez. Esta
interrelacin la representamos como A n: n B.
No se deben definir relaciones de este tipo en un sistema de bases de datos, debido a su
complejidad a la hora de su mantenimiento, por este motivo se debe transformar este
tipo de relacin es dos interrelaciones de tipo 1: n, empleando para ello una tabla que
denominaremos puente y que estar formada por las claves de ambas tablas. Esta tabla
puente debe contener una nica clave compuesta formada por los campos clave de las
tablas primeras.
Empleados

Cdigo Empleado Empleado


103

Juan

105

Luisa

251

Martn

736

Ana Mara

Puestos
Cdigo Puesto

Puesto

52

Comercial

73

Administrativo

Tabla Puente
Cdigo Empleado Cdigo Puesto
103

52

103

73

105

73

251

52

736

52

736

73

Ahora existe una relacin 1: n entre Empleados y Tabla Puente y otra relacin 1: n entre
Puestos y Tabla Puente ya que un empleado posee varios cdigos de empleado en la
tabla puente pero cada elemento de la tabla puente pertenece a un nico empleado.
Por otro la un puesto de trabajo posee varios elementos relacionados en la tabla puente,
pero cada elemento de la tabla puente est relacionado con un nico elemento de la
tabla puestos.

Problemas con las interrelaciones

A la hora de establecer las interrelaciones existentes en un sistema de bases de datos nos


podemos encontrar dos problemas:
1. Interrelaciones recursivas: un elemento se relaciona consigo mismo directamente.
2. Interrelaciones circulares o cclicas: A se relaciona con B, B se relaciona con C y C se
relaciona con A.

Ambos casos pueden suponer un grabe problema si definimos una relacin con
integridad referencial y decimos eliminar en cascada (al eliminar una clave de la tabla A
se eliminan los elementos relacionados en la tabla B). Supongamos la relacin recursiva
existen en la relacin Empleado y Supervisor (ambos son empleados de la empresa).
Est claro que un empleado est supervisado por otro empleado. Veamos la forma de
solucionarlo:
Empleados
Cdigo Nombre Supervisor
102

Juan

NO

105

Luis

SI

821

Mara

NO

956

Martn

SI

Para solucionar la relacin debemos crear una tabla formada por dos campos. Ambos
campos deben ser el cdigo del empleado pero como no podemos tener dos campos con
el mismo nombre a uno de ellos le llamaremos cdigo supervisor.
Tabla Puente
Cdigo Empleado Cdigo Supervisor
102

105

105

956

821

105

956

105

Para terminar de resolver la interrelacin recursiva basta con definir dos interrelaciones
entre la tabla empleados y la tabla puente de tipo 1: n. La primera relacin se crea
utilizando las claves Empleados[Cdigo] y Tabla Puente[Cdigo Empleado]. La
segunda entre Empleados[Cdigo] y Tabla Puente [Cdigo Supervisor].

Las interrelaciones cclicas o circulares no son muy frecuentes y no existe una


metodologa estndar para su eliminacin, normalmente son debidas a errores de diseo
en la base de datos, principalmente en el diseo conceptual del sistema de datos. Por
tanto si llegamos a este punto hay que volver a replantearse todo el diseo de la base de
datos.
Atributos de las interrelaciones

En la mayora de las interrelaciones definidas ser conveniente exigir integridad


relacional entre las claves. Exigiendo la integridad referencial se consigue que en una
relacin de tipo 1: n o de tipo 1: 1, no se puede aadir ningn valor en la tabla destino si
no existe en la tabla origen. Dicho con un ejemplo: en la relacin Clientes y Pedidos la
tabla Pedidos contiene un campo que se corresponde con el cdigo del Cliente, si se
exige la integridad referencia no se podr escribir un cdigo de cliente en la tabla
Pedidos que no exista en la tabla Clientes; de no exigir la integridad referencial se
podrn crear pedidos con cdigos de clientes que no existen, generando incongruencia
de datos en la base de datos.
Definida la integridad referencial (siempre necesaria) podemos exigir la actualizacin
en cascada (siempre necesaria); esta actualizacin implica que si cambiamos el cdigo a
un cliente, debemos actualizar dicho cdigo en la tabla de pedidos, de no ser as, al
cambiar el cdigo a un cliente, perderemos los pedidos que tena realizados.
Para concluir debemos hablar de la eliminacin en cascada (NO siempre necesaria), la
eliminacin en cascada consiste en eliminar todos los datos dependientes de una clave.
En nuestro ejemplo implica que al borrar un cliente hay que eliminar todos los pendidos
que ha realizado. En muchas ocasiones no interesa realizar esta operacin de
eliminacin en cascada por motivos diversos. Si en el caso de clientes y pedidos no se
exige eliminacin en cascada no se podr borrar ningn cliente en tanto en cuanto tenga
realizado algn pedido (de lo contrario tendramos incongruencia de datos).

Algebra relacional

Las operaciones de lgebra relacional manipulan relaciones. Esto significa que estas
operaciones usan uno o dos relaciones existentes para crear una nueva relacin. Esta
nueva relacin puede entonces usarse como entrada para una nueva operacin. Este
poderoso concepto - la creacin de una nueva relacin a partir de relaciones existentes
hace considerablemente ms fcil la solucin de las consultas, debido a que se puede
experimentar con soluciones parciales hasta encontrar la proposicin con la que se
trabajar.
El lgebra relacional consta de nueve operaciones:
1.
2.
3.
4.
5.
6.
7.
8.
9.

Unin
Interseccin
Diferencia
Producto
Seleccin
Proyeccin
Reunin
Divisin
Asignacin

Las cuatro primeras se toman de la teora de conjunto de las matemticas; las cuatro
siguientes son operaciones propias del lgebra relacional y la ltima es la operacin
estndar de dar un valor a un elemento.
Unin

La operacin de unin permite combinar datos de varias relaciones. Supongamos que


una determinada empresa internacional posee una tabla de empleados para cada uno de
los pases en los que opera. Para conseguir un listado completo de todos los empleados
de la empresa tenemos que realizar una unin de todas las tablas de empleados de todos
los pases.
No siempre es posible realizar consultas de unin entre varias tablas, para poder realizar
esta operacin es necesario e imprescindible que las tablas a unir tengan las mismas
estructuras, que sus campos sean iguales.
Interseccin

La operacin de interseccin permite identificar filas que son comunes en dos


relaciones. Supongamos que tenemos una tabla de empleados y otra tabla con los
asistentes que han realizado un curso de ingls (los asistentes pueden ser empleados o
gente de la calle). Queremos crear una figura virtual en la tabla denominada
"Empleados que hablan Ingls", esta figura podemos crearla realizando una interseccin
de empleados y curso de ingls, los elementos que existan en ambas tablas sern
aquellos empleados que han asistido al curso.
Diferencia

La operacin diferencia permite identificar filas que estn en una relacin y no en otra.
Tomando como referencia el caso anterior, deberamos aplicar una diferencia entre la
tabla empleados y la tabla asistentes al curso para saber aquellos asistentes externos a la
organizacin que han asistido al curso.
Producto

La operacin producto consiste en la realizacin de un producto cartesiano entre dos


tablas dando como resultado todas las posibles combinaciones entre los registros de la
primera y los registros de la segunda. Esta operacin se entiende mejor con el siguiente
ejemplo:
Tabla A
X

10 22
11 25

Tabla B
W

33 54
37 98
42 100

El producto de A * B dara como resultado la siguiente tabla:


Tabla A * Tabla B
10 22 33 54
10 22 37 98
10 22 42 100
11 25 33 54
11 25 37 98
11 25 42 100

Seleccin

La operacin seleccin consiste en recuperar un conjunto de registros de una tabla o de


una relacin indicando las condiciones que deben cumplir los registros recuperados, de
tal forma que los registros devueltos por la seleccin han de satisfacer todas las
condiciones que se hayan establecido. Esta operacin es la que normalmente se conoce
como consulta.
Podemos emplearla para saber que empleados son mayores de 45 aos, o cuales viven
en Madrid, incluso podemos averiguar los que son mayores de 45 aos y residen en
Madrid, los que son mayores de 45 aos y no viven en Madrid, etc..
En este tipo de consulta se emplean los diferentes operadores de comparacin (=,>, <,
>=, <=, <>), los operadores lgicos (and, or, xor) o la negacin lgica (not).
Proyeccin

Una proyeccin es un caso concreto de la operacin seleccin, esta ltima devuelve


todos los campos de aquellos registros que cumplen la condicin que he establecido.
Una proyeccin es una seleccin en la que seleccionamos aquellos campos que
deseamos recuperar. Tomando como referencia el caso de la operacin seleccin es

posible que lo nico que nos interese recuperar sea el nmero de la seguridad social,
omitiendo as los campos telfono, direccin, etc.. Este ltimo caso, en el que
seleccionamos los campos que deseamos, es una proyeccin.
Reunin

La reunin se utiliza para recuperar datos a travs de varias tablas conectadas unas con
otras mediante clusulas JOIN, en cualquiera de sus tres variantes INNER, LEFT,
RIGHT. La operacin reunin se puede combinar con las operaciones seleccin y
proyeccin.
Un ejemplo de reunin es conseguir los pedidos que nos han realizado los clientes
nacionales cuyo importe supere 15.000 unidades de producto, generando un informe
con el nombre del cliente y el cdigo del pedido. En este caso se da por supuesto que la
tabla clientes es diferente a la tabla pedidos y que hay que conectar ambas mediante, en
este caso, un INNER JOIN.
Divisin

La operacin divisin es la contraria a la operacin producto y quizs sea la ms


compleja de explicar, por tanto comenzar con directamente con un ejemplo. Una
determinada empresa posee una tabla de comerciales, otra tabla de productos y otra con
las ventas de los comerciales. Queremos averiguar que comerciales han vendido todo
tipo de producto.
Lo primero que hacemos es extraer en una tabla todos los cdigos de todos los
productos, a esta tabla la denominamos A.
Tabla A
Cdigo Producto
1035
2241
2249
5818

En una segunda tabla extraemos, de la tabla de ventas, el cdigo del producto y el


comercial que lo ha vendido, lo hacemos con una proyeccin y evitamos traer valores
duplicados. El resultado podra ser el siguiente:
Tabla B
Cdigo Comercial Cdigo Producto

10

2241

23

2518

23

1035

39

2518

37

2518

10

2249

23

2249

23

2241

Si dividimos la tabla B entre la tabla A obtendremos como resultado una tercera tabla
que:
1. Los campos que contiene son aquellos de la tabla B que no existen en la tabla A. En
este caso el campo Cdigo Comercial es el nico de la tabla B que no existen en la
tabla A.
2. Un registro se encuentra en la tabla resultado si y slo si est asociado en tabla B con
cada fila de la tabla A
Tabla Resultado
Cdigo Comercial
23

Por qu el resultado es 23?. El comercial 23 es el nico de la tabla B que tiene


asociados todos los posibles cdigos de producto de la tabla A.
Asignacin

Esta operacin algebraica consiste en asignar un valor a uno o varios campos de una
tabla.

Clculo relacional
El clculo relacional usa un enfoque completamente diferente al lgebra relacional. No
obstante, los dos lenguajes son lgicamente equivalentes. Esto significa que cualquier
consulta que pueda resolverse en un lenguaje puede resolverse en el otro. La solucin
para toda consulta en este tipo de clculo se define por:
1. Una lista de resultados
2. Una sentencia de cualificacin

La lista de resultados est clara, son aquellos registros que cumplen las condiciones que
deseamos. La sentencia de cualificacin contiene las condiciones que deseamos que
cumplan los registros de la lista de resultados. La diferencia entre el clculo y el lgebra
radica en que el clculo realiza la operacin en un nico paso, sin necesidad de tener
que obtener tablas intermedias, el lgebra realiza las operaciones paso a paso.
Normalmente el clculo relacional se apoya en algn lenguaje de interrogacin de bases
de datos como puede ser el SQL y que desarrollar ms adelante.
El clculo relacional incluye un concepto nuevo denominado cuantificador, los
cuantificadores tratan de averiguar el nmero de registros afectados por una
determinada operacin, incluso antes de realizarla. Segn su naturaleza los podemos
dividir en dos grupos:
Cuantificadores existenciales

Son aquellos que tratan de averiguar el nmero de registros que devolvera un tipo de
consulta. Por ejemplo: saber el nmero de clientes de Madrid que han comprado el
producto 2015. Si el nmero de registros que satisfacen esta relacin es mayor que cero,
podemos generar la consulta para lanzar posteriormente un informe, en caso contrario se
puede enviar un mensaje al usuario para que sepa que no hay ningn cliente con estas
caractersticas.
Cuantificadores universales

Son aquellos que indican que una condicin se aplica a todas las filas de algn tipo. Se
usa para brindar la misma capacidad que la operacin divisin del lgebra relacional.

You might also like