You are on page 1of 29

Unidad III. Modelo relacional.

Conceptos básicos del modelo relacional.


El modelo relacional describe la estructura lógica de los datos por
medio de tablas bidimensionales llamadas relaciones. Una
entidad se representa por un renglón en la tabla. La ventaja
principal del modelo relacional está en la simplicidad de su
representación en la estructura lógica de la base de datos y en la
flexibilidad para establecer relaciones de datos por medio de
campos de conexión o valores de atributo en común. Todas las
entidades en una base de datos relacional están representadas
como tablas separadas y no están colocadas en ninguna jerarquía
fija.

El modelo relacional hace posible el alcanzar mayor


independencia de los datos usando atributos en común en vez de
apuntadores para enlazar registros relacionados en distintos
archivos. En otras palabras el modelo relacional establece por
ejemplo, para relaciones uno a muchos que la clave principal de
un registro padre se inserte como parte de uno o varios registros
hijos en otra tabla.

El modelo relacional se divide en tres partes: La estructura, la


integridad y la manipulación de los datos. Cada una de las partes
tiene sus propios términos especiales.

Los términos relacionados a la estructura de los datos son:

• Base de datos relacional: Colección de tablas con un nombre


único.
• Una relación corresponde a una tabla y es una colección de
relaciones.
• Una tupla corresponde a una fila de la tabla y representa una
relación entre un conjunto de valores.
• Cardinalidad es el número de tuplas.
• Un atributo corresponde a una columna.
• Grado es el número de atributos.
• Dominio es un conjunto de valores permitidos
• Clave primaria es un identificador único para la tabla.
Ejemplo: Relación S
Dominios
No_S Nombre Situación Ciudad
---------------------- ---------------------- ---------------------- ----------------------
----------------------- ---------------------- ---------------------- ----------------------
----------------------- ---------------------- ---------------------- ----------------------

No_S Snombre Situación Ciudad


S1 Salazar 20 México
S2 Martinez 30 Veracruz
S3 Breidi 10 Puebla
S4 Carmona 40 Morelia
S5 Alvarez 50 Querétaro

Tuplas Atributos

Grado

Cardinalidad

Término relacional formal Equivalentes informales


Relación Tabla
Tupla Fila o registro
Cardinalidad Número de filas
Atributo Columna o campo
Grado Número de columnas
Clave primaria Identificador único
Dominio Fondos de valores legales

Las equivalencias presentadas son sólo aproximaciones ya que


los términos formales para el modelo relacional tienen
definiciones precisas.

No todos los sistemas relacionales se ajustan a todos los


aspectos del modelo relacional.
Términos formales del modelo relacional.
Dominios.
La menor unidad semántica de información es el valor de un dato
individual (Ejemplo: El número de un proveedor, nombre de una
ciudad) o sea un escalar o atómico que no tienen estructura
interna (no es en términos absolutos).

Dominio es un conjunto de valores escalares, todos del mismo


tipo. Los dominios son fondos de valores de los cuales se extraen
los valores reales de los atributos. Cada atributo debe estar
“definido sobre” un dominio subyacente.

La importancia de los dominios es que restringen las


comparaciones (se pueden comparar los atributos que tienen el
mismo dominio). Los valores del dominio pueden o no estar
almacenados en la base de datos como conjunto reales de
valores. (En la mayor parte de los casos no es así).

Al menos se deben especificarse como parte de la definición de la


base de datos; después de cada definición de atributo se debería
incluir una referencia al dominio correspondiente para saber
cuales atributos son comparables entre sí y cuales no.

El nombre de un atributo puede ser igual al del dominio (o distinto


si dos atributos en la misma relación están definidos sobre el
mismo dominio, se puede incluir el nombre del dominio como
parte final de su propio nombre).

EJEMPLO: Definición en seudoSQL, de una base de datos de


proveedores y partes, con manejo de dominios.

CREATE DOMAIN S# CHAR(5);


CREATE DOMAIN NOMBRE CHAR(20);
CREATE DOMAIN SITUACIÓN SMALINT;
CREATE DOMAIN CIUDAD CHAR(15);
CREATE DOMAIN P# CHAR(6);
CREATE DOMAIN COLOR CHAR(6);
CREATE DOMAIN PESO SMALLINT;
CREATE DOMAIN CANT INTEGER;
CREATE TABLE S
{ S# DOMAIN (S#) NOT NULL,
SNOMBRE DOMAIN (NOMBRE) NOT NULL,
SITUACION DOMAIN (SITUACION) NOT NULL,
CIUDAD DOMAIN (CIUDAD) NOT NULL,
PRIMARY KEY (S#) };

CREATE TABLE P
{ P# DOMAIN (P#) NOT NULL,
PNOMBRE DOMAIN (NOMBRE) NOT NULL,
COLOR DOMAIN (COLOR) NOT NULL,
PESO DOMAIN (PESO) NOT NULL,
CIUDAD DOMAIN (CIUDAD) NOT NULL,
PRIMARY KEY (P#) };

CREATE TABLE SP
{ S# DOMAIN (S#) NOT NULL,
P# DOMAIN (NOMBRE) NOT NULL,
CANT DOMAIN (CANT) NOT NULL,
PRIMARY KEY (S#, P#),
FOREGEIN KEY (S#) REFERENCES S,
FOREGEIN KEY (P#) REFERENCES P };

Importancia de los dominios.


Consideremos la consulta.
¿Cuáles relaciones en la base de datos contienen información
referente a los proveedores?
La consulta se podría formular de la siguiente manera.
¿Cuáles relaciones en la base de datos incluyen un atributo
definido sobre el dominio de números de proveedor?

Considerando la consulta anterior se traduciría en una simple


interrogación al catálogo del sistema, si se maneja el concepto de
dominios, si no se maneja este concepto, solo es posible
preguntar acerca de los atributos.

Los dominios pueden ser simples o compuestos. Un dominio


compuesto es una combinación de dominios simples.
Ejemplo: un dominio compuesto fecha, puede tener 3
componentes: DIA, MES AÑO, cada uno definido sobre el mismo
dominio.
No todos los sistemas manejan el concepto de dominio y menos
aún dominios compuestos. Muchos de los DBMS, manejan el
concepto de dominio como un tipo de dato en un sentido muy
primitivo.

Un manejo completo del concepto de dominios requeriría por lo


menos:

1. La capacidad de especificar el conjunto completo de dominios


D para una base de datos dada. D tendría que ser un conjunto
cerrado, en el sentido de que cualquier expresión escalar
manejada por el sistema tendría que producir un valor
perteneciente a algún dominio del conjunto D.
2. La capacidad de especificar con exactitud, para cada dominio
Di en el conjunto D, cuáles operadores unarios se aplican a los
valores di de ese dominio Di
3. La capacidad de especificar con exactitud, para cada par de
dominios Di y Dj (no necesariamente disjuntos) en el conjunto
D, cuáles operadores binarios se aplican a pares de valores di
y dj de esos dominios Di y Dj. Lo mismo para cada conjunto
de tres dominios o más dominios.
4. La capacidad de especificar, para cada expresión escalar legal,
el dominio del resultado de evaluar esa expresión.

El manejo de dominios en el contexto de los sistemas


relacionales, requiere un recurso mediante el cual los usuarios
puedan definir sus propios tipos de datos, más complejos.

Este recurso debería consideren:

 Comparaciones entre atributos con diferentes dominios que


tienen sentido.
 Evitar comparaciones aún dentro del mismo dominio que no
tienen sentido. (ejemplo: comparar Sexo >Femenino)
 Combinar valores de diferentes dominios mediante operadores
aritméticos o de otro tipo.
Relaciones.
Una relación sobre un conjunto de dominios D1, D2, ..., Dn (no
necesariamente todos distintos), se compone de dos partes, una
cabecera y un cuerpo.
 La cabecera está formada por un conjunto fijo de atributos,
o en términos más precisos, de pares atributo-dominio,
{(A1:D1),(A2:D2),...,(An:Dn) }
tales que cada atributo Aj corresponde a uno y sólo uno de los
dominios subyacentes Dj (j=1,2,...,n).
 El cuerpo está formado por un conjunto de tuplas, el cual
varía con el tiempo. Cada tupla a su vez está formada por un
conjunto de pares atributo-valor.
{ (A1:vi1), (A2:vi2),...,(An:vin) }
(i=1,2,...,m, donde m es el número de tuplas del conjunto). En
cada una de estas tuplas hay uno de estos pares atributo-valor
(Aj:vij) para cada atributo Aj de la cabecera. Para cada par
atributo-valor (Aj:vij), vij es un valor del dominio único Dj
asociado al atributo Aj.
Al valor m se le llama cardinalidad y al valor n se le llama grado
de la relación. La cardinalidad varía con el tiempo pero el grado
no.

Observando el ejemplo de la relación S, se puede decir:


 La tabla si tiene cuatro dominios subyacentes.
 La tabla tiene dos partes: cabeceras y filas de datos.
 La fila de cabeceras representa el conjunto de pares
ordenados:
(No_S : No_S)
(Snombre : Nombre)
(Situación : Situación)
(Ciudad : Ciudad)
 El conjunto de filas varía con el tiempo. Observando una fila,
esta representa un conjunto de pares ordenados.
(No_S : S1)
(Snombre : Salazar )
(Situación : 20)
(Ciudad : México)
 Por lo anterior, se puede decir que la tabla S si puede
considerarse como una representación de una relación con
respecto a la definición.
O se puede decir que una relación es una especie bastante
abstracta de objeto y una tabla es una representación concreta
(casi siempre en papel) de ese objeto abstracto. No son lo mismo,
pero en contextos informales es usual decir que son la misma
cosa.

Propiedades de las relaciones.

Las propiedades se derivan de la definición formal de relación:


 No existen tuplas repetidas.
 Las tuplas no están ordenadas (de arriba abajo).
 Los atributos no están ordenados (de izquierda a deracha).
 Todos los valores de los atributos son atómicos.

Tipos de relaciones.

1. Relaciones base (llamadas relaciones reales): son la parte


directa de la base de datos.
2. Vistas (llamadas relaciones virtuales): Son relaciones
derivadas, con nombre representada dentro del sistema
mediante su definición en términos de otras relaciones con
nombres; no posee datos almacenados propios.
3. Instantáneas: Es una relación derivada, con nombre, pero a
diferencia de las vistas son reales no virtuales y tienen sus
propios datos almacenados.
4. Resultados de consultas. Es tan sólo la relación final de
alguna consulta especificada. Puede o no tener nombre y no
son persistentes dentro de la base de datos.
5. Resultados intermedios. Es una relación (casi siempre sin
nombre) resultante de alguna expresión relacional anidada
dentro de otra expresión relacional más grande.
6. Relaciones temporales. Una relación temporal tienen nombre,
similar a una relación base, vista o instantánea, pero que se
destruye en forma automática en algún momento.
Una definición más formal de una base de datos relacional, se
puede decir que es una base de datos percibida por el usuario
como una colección de relaciones normalizadas de diversos
grados que varía con el tiempo.
Reglas de integridad.
Una base de datos se supone que es un modelo o representación
de alguna parte del mundo real. Algunas configuraciones de
valores no tienen sentido. Por lo tanto es necesario que el DBMS
conozca de ciertas restricciones en el mundo real para que pueda
impedir la ocurrencia de tales configuraciones de valores no
posibles.

La mayor parte de reglas de integridad son específicas para cada


base de datos. El modelo relacional incluye dos reglas de
integridad generales que se aplican a cualquier base de datos que
se apegue al modelo. Estas reglas se refieren a las claves
primarias y a las claves ajenas.

Comentarios.
1. Todas las reglas de integridad se aplican a las relaciones base.
2. No se incluyeron explícitamente reglas específicas con
respecto a una base de datos en el modelo relacional.
3. Se acostumbra llamar reglas a las dos reglas generales de
integridad del modelo relacional. Aunque sería más apropiado
llamarlas metarreglas.
4. Se acostumbra decir que el modelo tiene dos reglas generales
de integridad. No obstante sería más apropiado decir que tiene
tres.

Claves primarias.
En términos informales, la clave primaria es un identificador
único para esa relación. La clave primaria pueda ser compuesta.
Una la relación pueda tener más de un identificador único Claves
candidatas de las cuales se escoge una y las demás se llaman
claves alternativas.

Una definición más formal de clave candidata es:


Un atributo K (puede ser compuesto) de la relación R es una clave
candidata de R si y sólo si satisface las siguientes dos
propiedades:
1. Unicidad: En cualquier momento dado, no existen dos tuplas
en R con el mismo valor de K.
2. Minimalidad: Si K es compuesto, no sería posible eliminar
ningún componente de K sin destruir la propiedad de unicidad.
Toda relación tiene por lo menos una clave candidata, ya que las
relaciones no tienen tuplas repetidas y por consiguiente tendrá
una clave primaria. En la práctica la clave primaria es la que tiene
verdadera importancia.

Como las claves primarias y candidatas pueden ser un


subconjunto de atributos, es mas correcto decir que la cualquiera
de esas claves de una relación R es el conjunto {ki,kj}.

Es preferible no abreviar el término clave a sólo clave, ya que éste


tiene demasiados significados (claves: primarias, candidatas,
alternativas, ajenas, de índice, padre, hijo de cifrado, de
descifrado de clasificación, de dispersión. Secundarias, y de
pertenencia).

La importancia de las claves primarias es que éstas constituyen


el mecanismo de direccionamiento a nivel de tuplas, básico en un
sistema relacional. El manejo de las claves primarias es requisito
para el manejo de clase ajenas.

Primera regla general de integridad del modelo relacional.


Reglas de integridad de las entidades.
Esta regla se puede expresar de alguna de las formas siguientes:
 Ningún componente de la clave primaria de una relación base
puede aceptar nulos.
 En una base de relacional, nunca registraremos información
acerca de algo que no podamos identificar.

En la primera expresión cabe hacer notar que un “nulo”, se debe


interpretar como una información faltante. (Ejemplo, un dato no
es aplicable o no se conoce), o un valor o representación que no
representa un valor real del atributo.

La justificación de la regla de integridad de las entidades es:


 Las tuplas dentro de las relaciones base corresponden a
entidades en el mundo real.
 Por definición las entidades en el mundo real son
distinguibles, o sea se les identifica de alguna manera, por
tanto, las representaciones de estas entidades también son
identificables.
 Las claves primarias realizan la función de identificación única
en el modelo relacional.
 Una entidad no identificable es una contradicción de términos.
 En conclusión: si una entidad es lo bastante importante en el
mundo real como para requerir una representación explícita en
la base de datos, tal entidad deberá ser susceptible de
identificación definida y sin ambigüedad.
La regla de integridad de las identidades se aplica sólo a las
relaciones base y a las claves primarias.

Claves ajenas.
Definición informal.
Una clave ajena es un atributo (quizá compuesto) de una relación
R2 cuyos valores deben concordar con los de la clave primaria de
alguna relación R1.

Un valor de clave ajena representa una referencia a la tupla donde


se encuentra el valor correspondiente de la clave primaria. Por lo
tanto el problema de garantizar que la base de datos no incluya
valores no válidos de una clave ajena se conoce como el
problema de la integridad referencial.

Definición formal.
El atributo LF (quizá compuesto) de la relación base R2 es una
clave ajena si y sólo si satisface dos propiedades independientes
del tiempo:
1. Cada valor LF es nulo del todo o bien no nulo del todo (con
nulo del todo o no nulo del todo se quiere decir que si, LF es
compuesto, todos sus componentes son nulos o bien sus
componentes son no nulos, no una combinación).
2. Existe una relación base R1 con clave primaria LP tal que cada
valor no nulo de LH es idéntico al valor de LP en alguna tupla
de R1.

Segunda regla general de integridad del modelo relacional.


Regla de integridad referencial.
La base de datos no debe contener valores de clave ajena sin
concordancia.
Con el término de “valores de clave ajena sin concordancia” se
quiere decir aquí un valor no nulo de clave ajena para el cual no
existe un valor concordante de la clave primaria en la relación
objetivo pertinente.

Justificación de la regla:
Así como los valores de la clave primaria representan
identificadores de entidades, así los valores de la clave ajena
representan referencias a entidades (a menos que sean nulos). La
regla de integridad referencial dice tan sólo que si B hace
referencia a A, entonces A debe existir.
Anotaciones.
1. La integridad referencial exige concordancia de las claves
ajenas muy específicamente, con claves primarias, no con
claves alternativas.
2. Los conceptos de clave ajena e integridad referencial se
definen uno en términos del otro.
La regla de integridad referencial se expresa en términos de
estados de la base de datos. Cualquier estado de la base de
datos que no satisfaga la regla será incorrecto por definición. Así
habrá operaciones que podrían rechazarse o aceptarse.

Tercera regla general de integridad del modelo relacional.


Todo atributo debe satisfacer la restricción según la cual sus
valores deben provenir del dominio pertinente.

Algebra relacional
La tercera parte del modelo relacional que está relacionada con la
manipulación de los datos, esta dividida en dos partes:
1. El álgebra relacional
2. La operación de asignación.

El álgebra relacional consiste de un conjunto de operadores de


alto nivel que operan sobre las relaciones. Estos operadores
toman una o dos relaciones de entrada y produce una nueva
relación de salida.
Los operadores se pueden definir en dos conjuntos de cuatro
operadores originales (Codd):
• Los operadores tradicionales de conjuntos: unión, intersección
diferencia y producto cartesiano (todas con ligeras
modificaciones, porque operan sobre relaciones y no sobre
conjuntos.
• Las operaciones relacionales especiales: restricción,
proyección, reunión y división.

Estos ocho operadores originales funcionan como sigue:


 UNIÓN. Construye una relación formada por todas las tuplas
que existan en cualquiera o en ambas de las relaciones
especificadas.
 INTERSECCIÓN. Construye una relación formada por aquellas
tuplas que aparezcan en las dos relaciones especificadas..
 DIFERENCIA. Construye una relación formada por todas las
tuplas de la primera relación que no aparezcan en la segunda
relación de las dos especificadas.
 PRODUCTO. Construye una relación a partir de dos relaciones
especificadas, que contiene todas las combinaciones posibles
de tuplas,
 RESTRICCIÓN O SELECCIÓN. Extrae las tuplas de una relación
que satisfagan una condición especificada.
 PROYECCIÓN. Extrae los atributos especificados de una
relación dada.
 REUNIÓN. A partir de dos relaciones especificadas, construye
una relación que contiene toas las posibles combinaciones de
tuplas, una de cada una de las dos relaciones, tales que las
tuplas participen en una combinación dada satisfagan alguna
condición especificada.
 DIVISIÓN. Toma dos relaciones, una binaria y una unaria y
construye una relación formada por todos los valores de un
atributo de la relación binaria que concuerdan (en el otro
atributo) con todos los valores en la relación unaria.

Propiedad de cerradura. El resultado de cada una de las


operaciones es otra relación.

Dado que el resultado de una operación es un objeto del mismo


tipo que los operandos, éste puede convertirse en operando de
otra. Una relación resultado no tiene nombre y por ende no tiene
una cabecera. (Uso del operador RENAME) .
Restricción Proyección Producto Cartesiano
Selección
a x a x
b Y a y
c b x
b y
c x
c y

Unión intersección Diferencia

Reunión natural División

A1 b1 b1 c1 a1 b1 c1 a x x a
A2 b2 b2 c2 a2 b1 c1 a y z
A3 b3 b3 c3 a3 b3 c3 a z
b x
c y
Operaciones del álgebra relacional.
La operación unión en el álgebra relacional no es la unión
matemática. Es una forma limitada en la cual se obliga a las dos
relaciones de entrada a tener la misma forma o las dos deben
tener tuplas con “compatibilidad respecto a la unión”.

Dos relaciones son compatibles respecto a la unión si y sólo si


sus cabeceras son idénticas, lo cual significa que:
a) Las dos tienen el mismo el mismo conjunto de nombres de
atributos (y el mismo grado).
b) Los atributos correspondientes a las dos relaciones se definen
sobre el mismo dominio.

La unión, la intersección y la diferencia requieren de operandos


compatibles respecto a la unión. El producto cartesiano no tiene
este requerimiento.

La operación Unión.
UNION. La unión de dos relaciones A y B compatibles respecto a
la union, A UNION B (A ∪ B), es una relación cuya cabecera es
idéntica a la de A o B y cuyo cuerpo está formado por todas las
tuplas t pertenecientes ya sea a A o a B o a las dos.

La operación Intersección.
La intersección de dos relaciones compatibles respecto a la unión
A y B, A INTERSECT B (A ∩ B), es una relación cuya cabecera es
idéntica a la de A o B y cuyo cuerpo está formado por todas la
tuplas t pertenecientes tanto a A como a B.

La operación Diferencia.
La diferencia entre dos relaciones compatibles con respecto a la
unión A y B, A MINUS B, es una relación cuya cabecera es
idéntica a la de A o B y cuyo cuerpo está formado por todas las
tuplas t pertenecientes a A pero no a B.
Ejemplo: Considerando las relaciones:

Relación A
No_S Snombre Situación Ciudad
S1 Salazar 20 México
S4 Carmona 40 Morelia
S5 Alvarez 50 Puebla

Relación B
No_S Snombre Situación Ciudad
S1 Salazar 20 México
S2 Martinez 30 Veracruz
S3 Breidi 10 Puebla
S5 Alvarez 50 Puebla

A UNION B
No_S Snombre Situación Ciudad
S1 Salazar 20 México
S2 Martinez 30 Veracruz
S3 Breidi 10 Puebla
S4 Carmona 40 Morelia
S5 Alvarez 50 Puebla

A INTERSECT B
No_S Snombre Situación Ciudad
S1 Salazar 20 México
S5 Alvarez 50 Puebla

A MINUS B
No_S Snombre Situación Ciudad
S4 Carmona 40 Morelia

B MINUS A
No_S Snombre Situación Ciudad
S2 Martinez 30 Veracruz
S3 Breidi 10 Puebla
La operación Producto cartesiano.
En matemáticas, el producto cartesiano de dos conjuntos es el
conjunto de todos los pares ordenados de elementos tales que el
primer elemento de cada par pertenece al primer conjunto y el
segundo elemento pertenece al segundo conjunto. Así el
producto cartesiano de dos relaciones sería un conjunto de pares
ordenados de tuplas.

Para conservar la propiedad de cerradura, la versión de producto


cartesiano en álgebra relacional es una forma ampliada de la
operación. Cada par ordenado de tuplas es reemplazado por la
tupla resultante de la combinación de las dos tuplas del par
ordenado.

Dadas dos tuplas


( A1:a1, A2:a2, ...,Am:am) y (B1:b1, B2:b2,...,Bn:bn)

la combinación de las dos tuplas es la tupla:

( A1:a1, A2:a2, ...,Am:am, B1:b1, B2:b2,...,Bn:bn)

El problema con el producto cartesiano es la cabecera de esta


nueva relación, la cual es la combinación de las dos cabeceras de
las relaciones de entrada, donde pueden existir atributos con
nombres iguales. En este caso se debe emplear el operador
RENAME para modificar de manera apropiada los nombres de los
atributos. Así dos relaciones son compatibles respecto al
producto si y sólo si sus cabeceras son disjuntas (es decir no
tienen nombres de atributos en común).

La operación de Producto cartesiano de dos relaciones


(compatibles respecto al producto) A y B, A TIMES B (A x B), es
una relación cuya cabecera es la combinación de las cabeceras
de A y B y cuyo cuerpo está formado por el conjunto de todas las
tuplas t tales que t es la combinación de una tupla a
perteneciente a A y una tupla b perteneciente a B.

Esta operación no tiene mucha importancia práctica en un


sistema relacional.
La operación Restricción o Selección.
Sea theta la representación de cualquier operador de
comparación escalar simple (=, <>, >, >=, < y <=).

La selección theta de la relación A según los atributos X y Y

A where X theta Y

Es una relación con la misma cabecera que A con un cuerpo


formado por el conjunto de todas las tuplas t de A tales que la
evaluación de la comparación “X theta Y” resulta verdadera en el
caso de esa tupla t.

Consideraciones.
 Los atributos X y Y deben estar definidos sobre el mismo
dominio y la operación theta debe ser aplicable a ese dominio.
 La relación A no debe ser por fuerza una relación nombrada y
puede representarse mediante una expresión arbitraria del
álgebra relacional.
 En lugar de alguno de los atributos X o Y se puede especificar
por un valor literal.
 El operador de restricción produce un subconjunto horizontal
de una relación dada, es decir, un subconjunto de tuplas.
 La operación de restricción permite una operación simple de
comparación o una de las siguientes formas en las cuales la
expresión condicional de la cláusula WHERE esté formada por
una combinación booleana arbitraria de tales comparaciones
simples:
1. A WHERE c1 AND c2
Que es equivalente a(A WHERE c1)INTERSECT(A WHERE c2)
2. A WHERE c1 OR c2
Que es equivalente a (A WHERE c1) UNION (A WHERE c2)
3. A WHERE NOT c
Que es equivalente a A MINUS (A WHERE c)

Ejemplo: S WHERE CIUDAD = ´Puebla´


No_S Snombre Situación Ciudad
S3 Breidi 10 Puebla
S5 Alvarez 50 Puebla
La operación Proyección
La proyección de la relación A según los atributos X,Y,...,Z

A [x,y,...,z]

Es una relación con (X,Y,...,Z) como cabecera y cuyp cuerpo está


formado por el conjunto de todas las tuplas (X:x, Y:y,...,Z:z) tales
que una tupla t aparece en a con el valor x en X, el valor y en Y, ...,
y el valor z en Z.
Consideraciones.
 El operador de proyección produce un subconjunto “vertical”
de una relación dada, o sea, el subconjunto obtenido mediante
la selección de los atributos especificados y la eliminación de
las tuplas repetidas dentro los atributos seleccionados.
 Ningún atributo puede especificarse más de una vez en la lista
de atributos de una operación proyección.
 Sin embargo si se puede omitir del todo la lista de atributos, lo
cual equivale a especificar una lista con todos los atributos de
la relación original, es decir, representa la proyección
identidad.
 En contraste, la especificación de una lista vacía, representa la
proyección nula.

Ejemplos:
S [CIUDAD]
Ciudad
México
Veracruz
Puebla
Morelia

P [COLOR, CIUDAD]
Color Ciudad
Rojo México
Verde Veracruz
Azul Puebla
Azul Morelia
La operación Reunión natural.
La operación reunión tiene diferentes formas. La más importante
es la reunión natural.

Sean las cabeceras de las relaciones A y B.

(X1,X2,...Xm,Y1,Y2,...,Yn)
y
(Y1,Y2,...,Yn,Z1,Z2,...Zp)

respectivamente; es decir los atributos Y1,Y2,...,Yn son (los


únicos) comunes a las dos relaciones, los atributos X1,X2,...Xm,
son los demás atributos de A, y los atributos Z1,Z2,...,Zp son los
demás atributos de B. Suponemos que los atributos con el
mismo nombre están definidos sobre el mismo dominio.

Consideremos que (X1,X2,...,Xm), (Y1,Y2,...,Yn) y (Z1,Z2,...,Zp)


como tres atributos compuestos, X,Y y Z respectivamente. La
reunión natural de A y B

A JOIN B

Es una relación con la cabecera (X,Y,Z) y un cuerpo formado por


el conjunto de todas las tuplas (X:x,Y:y: y Z:z) tales que una tupla
a aparezca en A con el valor x en X y el valor y en Y, y una tupla b
que aparezca en B con el valor y en Y y el valor z en Z.

La reunión natural es asociativa y conmutativa, por lo que

(A JOIN B) JOIN C
y
A JOIN (B JOIN C)

se pueden simplificar a

A JOIN B JOIN C

y A JOIN B y B JOIN A son equivalentes.


Ejemplo: S JOIN P

Relación S Relación P
S# Snombre Situación Ciudad P# Pnombre Color Peso Ciudad
S1 Salazar 20 Londres P1 Tuerca Rojo 12 Londres
S2 Jaimes 10 París P2 Perno Verde 17 París
S3 Bernal 30 París P3 Birlo Azul 17 Roma
S4 Corona 20 Londres P4 Birlo Rojo 14 Londres
S5 Aldana 30 Atenas P5 Leva Azul 12 París
P6 Engrane Rojo 19 Londres

S JOIN P
S# Snombre Situación Ciudad P# Pnombre Color Peso
S1 Salazar 20 Londres P1 Tuerca Rojo 12
S1 Salazar 20 Londres P4 Birlo Rojo 14
S1 Salazar 20 Londres P6 Engrane Rojo 19
S2 Jaimes 10 París P2 Perno Verde 17
S2 Jaimes 10 París P5 Leva Azul 12
S3 Bernal 30 París P2 Perno Verde 17
S3 Bernal 30 París P5 Leva Azul 12
S4 Corona 20 Londres P1 Tuerca Rojo 12
S4 Corona 20 Londres P4 Birlo Rojo 14
S4 Corona 20 Londres P6 Engrane Rojo 19

Si las relaciones A y B no tienen nombres de atributos en común,


A JOIN B es equivalente a A TIMES B.

Operación Reunión-Theta.
La reunión theta es un subcaso de la reunión natural, en la cual
se juntan dos relaciones con base en alguna condición diferente a
la igualdad.

Sean las relaciones A y B compatibles respecto al producto (no


tienen nombres de atributos en común) y sea theta un operador
según la definición dada en el análisis de la restricción o
selección. La reunión theta de la relación a según el atributo X
con la relación B según el atributo Y, se define como el resultado
de evaluar la expresión

(A TIMES B) WHERE X theta Y


En otras palabras, es una relación con la misma cabecera que el
producto cartesiano de A y B, y con un cuerpo formado por el
conjunto de todas las tuplas t tales que t pertenece a ese
producto cartesiano y la evaluación de la condición “X theta Y”
resulta verdadera para esa tupla t. (Los atributos X y Y deberán
estar definidos sobre el mismo dominio, y la operación theta debe
ser aplicable a ese dominio.)

Ejemplo: Se desea calcular la reunión mayor que de la relación S


según Ciudad con la relación P según Ciudad.

Relación S Relación P
S# Snombre Situación Ciudad P# Pnombre Color Peso Ciudad
S1 Salazar 20 Londres P1 Tuerca Rojo 12 Londres
S2 Jaimes 10 París P2 Perno Verde 17 París
S3 Bernal 30 París P3 Birlo Azul 17 Roma
S4 Corona 20 Londres P4 Birlo Rojo 14 Londres
S5 Aldana 30 Atenas P5 Leva Azul 12 París
P6 Engrane Rojo 19 Londres

(( S RENAME CIUDAD AS SCIUDAD) TIMES ( P RENAME


CIUDAD AS PCIUDAD)) WHERE SCIUDAD > PCIUDAD
S# Snombre Situación Sciudad P# Pnombre Color Peso Pciudad
S2 Jaimes 10 París P1 Tuerca Rojo 12 Londres
S2 Jaimes 10 París P4 Birlo Rojo 14 Londres
S2 Jaimes 10 París P6 Engrane Rojo 19 Londres
S3 Bernal 30 París P1 Tuerca Rojo 12 Londres
S3 Bernal 30 París P4 Birlo Rojo 14 Londres
S3 Bernal 30 París P6 Engrane Rojo 19 Londres

La reunión theta no es una operación primitiva y es equivalente a


obtener el producto cartesiano ampliado de las dos relaciones
con modificaciones apropiadas de los nombres de los
atributos( si es necesario), y luego se realiza una selección
apropiada sobre el resultado.

Si theta es “igual a”, la reunión theta se llama equirreunión. El


resultado de una equirreunión debe incluir dos atributos con la
propiedad de que los valores de esos dos atributos son iguales
entre sí en cada tupla de la relación. Si se elimina uno de esos
dos atributos, el resultado será la reunión natural.
Relación S Relación P
S# Snombre Situación Ciudad P# Pnombre Color Peso Ciudad
S1 Salazar 20 Londres P1 Tuerca Rojo 12 Londres
S2 Jaimes 10 París P2 Perno Verde 17 París
S3 Bernal 30 París P3 Birlo Azul 17 Roma
S4 Corona 20 Londres P4 Birlo Rojo 14 Londres
S5 Aldana 30 Atenas P5 Leva Azul 12 París
P6 Engrane Rojo 19 Londres

(( S RENAME CIUDAD AS SCIUDAD) TIMES ( P RENAME


CIUDAD AS PCIUDAD)) WHERE SCIUDAD = PCIUDAD

S# Snombre Situación Sciudad P# Pnombre Color Peso Pciudad


S1 Salazar 20 Londres P1 Tuerca Rojo 12 Londres
S1 Salazar 20 Londres P4 Birlo Rojo 14 Londres
S1 Salazar 20 Londres P6 Engrane Rojo 19 Londres
S2 Jaimes 10 París P2 Perno Verde 17 París
S2 Jaimes 10 París P5 Leva Azul 12 París
S3 Bernal 30 París P2 Perno Verde 17 París
S3 Bernal 30 París P5 Leva Azul 12 París
S4 Corona 20 Londres P1 Tuerca Rojo 12 Londres
S4 Corona 20 Londres P4 Birlo Rojo 14 Londres
S4 Corona 20 Londres P6 Engrane Rojo 19 Londres

Por lo tanto la reunión natural tampoco es una operación


primitiva, es una proyección de una restricción de un producto,
(renombrando los atributos necesarios).

Por ejemplo, la expresión que representa la reunión natural de


proveedores y partes (según ciudades)

S JOIN P

Es equivalente a la siguiente expresión:

((S TIMES (P RENAME CIUDAD AS PCIUDAD)) WHERE CIUDAD =


PCIUDAD) [S#, SNOMBRE, SITUACION, CIUDAD, P#, PNOMBRE,
COLOR, PESO]
Operación División.
Sean las cabeceras de las relaciones A y B

(X1,X2,...Xm,Y1,Y2,...,Yn)
y
(Y1,Y2,...,Yn)

respectivamente; es decir, los atributos Y1,Y2,...Yn son comunes


a las dos relaciones. Además, A tiene los atributos X1, X2,...,Xm y
B no tiene otros atributos. Suponemos que los atributos con el
mismo nombre están definidos sobre el mismo dominio.
Consideremos que (X1,X2,...,Xm) y (Y1,Y2,...,Yn) como dos
atributos compuestos, X y Y. La división de A entre B

A DIVIDEBY B

Es una relación con la cabecera (X) y un cuerpo formado por el


conjunto de todas las tuplas (X:x) tales que aparece una tupla
(X:x, Y:y) en A para todas las tuplas (Y:y) presentes en B.

En otras palabras, el resultado contiene todos los valores de X en


A cuyos valores de Y correspondientes en A incluyen a todos los
valores de Y en B, en términos informales.

DENDO DENDO DENDO


DENDO DOR1 DOR2 DOR3 DIVIDEBY DIVIDEBY DIVIDEBY
DOR1 DOR2 DOR3
S# P# P# P# P# S# S# S#
S1 P1 P1 P2 P1 S1 S1 S1
S1 P2 P4 P2 S2 S4
S1 P3 P3
S1 P4 P4
S1 P5 P5
S1 P6 P6
S2 P1
S2 P2
S3 P2
S4 P2
S4 P4
S4 P5
El objetivo del álgebra relacional es ayudar a escribir expresiones
para obtener relaciones. Las expresiones constituyen una
representación simbólica de alto nivel de la intención del usuario.
Estas expresiones definen el alcance de las operaciones

EJEMPLOS: Considerando las siguientes relaciones

Relación S Relación SP
S# SNOMBRE SITUACIÓN CIUDAD S# P# CANTIDAD
S1 Salazar 20 Londres S1 P1 300
S2 Jaimes 10 París S1 P2 200
S3 Bernal 30 París S1 P3 400
S4 Corona 20 Londres S1 P4 200
S5 Aldana 30 Atenas S1 P5 100
S1 P6 100
Relacion P S2 P1 300
P# PNOMBRE COLOR PESO CIUDAD S2 P2 400
P1 Tuerca Rojo 12 Londres S3 P2 200
P2 Perno Verde 17 París S4 P2 200
P3 Birlo Azul 17 Roma S4 P4 300
P4 Birlo Rojo 14 Londres S4 P5 400
P5 Leva Azul 12 París
P6 Engrane Rojo 19 Londres
¿Cuál es el resultado de S WHERE CIUDAD = ´Londres’ [S#,
SNOMBRE]?
S1 Salazar
S4 Corona

¿Cuál es el valor de la expresión S JOIN SP JOIN P?


S# Snombre Sit. Ciudad P# CANT Pnombre Color Peso
S1 Salazar 20 Londres P1 300 Tuerca Rojo 12
S1 Salazar 20 Londres P4 200 Birlo Rojo 14
S1 Salazar 20 Londres P6 100 Engrane Rojo 19
S2 Jaimes 10 París P2 400 Perno Verde 17
S3 Bernal 30 París P2 200 Perno Verde 17
S4 Corona 20 Londres P4 300 Birlo Rojo 14

( ( (S TIMES (P RENAME CIUDAD AS PCIUDAD)) WHERE CIUDAD


= PCIUDAD) [S#, SNOMBRE, SITUACION, CIUDAD, P#, PNOMBRE,
COLOR, PESO] ) WHERE SITUACION <> 20
S# Snombre Situación Ciudad P# Pnombre Color Peso
S2 Jaimes 10 París P2 Perno Verde 17
S2 Jaimes 10 París P5 Leva Azul 12
S3 Bernal 30 París P2 Perno Verde 17
S3 Bernal 30 París P5 Leva Azul 12

1. Obtener los nombres de los proveedores que suministran la


parte P2.
( (S JOIN SP) WHERE P# = P2) [SNOMBRE]
Salazar
Jaimes
Bernal
Corona

2. Obtener los nombres de los proveedores que suministran por


lo menos una parte roja.
( ( ( P WHERE COLOR = ‘Rojo’ ) [P#] JOIN SP ) [S#] JOIN S)
[SNOMBRE]
S1 Salazar
S2 Jaimes
S4 Corona
3. Obtener los nombres de los proveedores que suministran todas
las partes.
( ( SP [S#, P#] DIVIDEBY P [P#] ) JOIN S [SNOMBRE]

S1 Salazar

4. Obtener los números de los proveedores que suministran al


menos todas las partes suministradas por el proveedor S2.
SP [S#, P#] DIVIDEBY (SP WHERE S# = ‘S2’ ) [P#]
S1
S2

5. Obtenerlos nombre de los proveedores que no suministran la


P2.
( ( S [S#] MINUS (SP WHERE P# = ‘P2’ ) [S#]) JOIN S)
[SNOMBRE]

Aldana

Tabla de equivalencias de símbolos para los operadores del


álgebra relacional

Operador
Unión A UNION B A∪ B
Intersección A INTERSECT B A∩ B
Diferencia A MINUS B A–B
Producto cartesiano A TIMES B AxB
Selección A WHERE X THETA Y σ X THETA Y (A)
Proyección A [] Π X,Y,...Z (A)
Reunión A JOIN B A | x| B
División A DIVIDEBY B A÷ B
Renombrar A RENAME Ai AS Ain ρ X (A)
Asignación A := B A← B
Ejemplo: La siguiente expresión

( ( ( P WHERE COLOR = ‘Rojo’ ) [P#] JOIN SP ) [S#] JOIN S)


[SNOMBRE]

También se puede escribir así:


Π snombre (Π s# ( Π P# ( σ COLOR = ‘Rojo’ (P) ) | x| SP ) | x| S )

Ejercicio: Escribir con la segunda simbología.

( ( S [S#] MINUS (SP WHERE P# = ‘P2’ ) [S#]) JOIN S)


[SNOMBRE]

Operación asignación relacional.


La operación asignación se usa para recordar el valor de alguna
expresión algebraica, la cual que se quiera escribir por partes
usando una variable de relación temporal.

Esta operación permite la sustitución total del valor completo de


una relación. Se puede representar por := o ← y funciona de
forma parecida al operador de asignación de cualquier lenguaje
de programación.

Con la operación de asignación, una consulta puede escribirse


como un programa secuencial de una serie de asignaciones
seguidas de una expresión. En álgebra relacional, la asignación
siempre debe hacerse a una variable de relación temporal. Las
asignaciones a relaciones permanentes constituyen una
modificación a la base de datos.

Ejemplo:
La siguiente expresión

( ( (S TIMES (P RENAME CIUDAD AS PCIUDAD)) WHERE CIUDAD


= PCIUDAD) [S#, SNOMBRE, SITUACION, CIUDAD, P#, PNOMBRE,
COLOR, PESO] ) WHERE SITUACION <> 20

se puede escribir
TEMP1:= P RENAME CIUDAD AS PCIUDAD
TEMP2:= S TIMES TEMP1
TEMP3:= TEMP2 WHERE CIUDAD =PCIUDAD
TEMP4:= TEMP3 [S#, SNOMBRE, SITUACION, CIUDAD, P#,
PNOMBRE, COLOR, PESO]
TEMP5:= TEMP4 WHERE SITUACION <>20

En los siguientes ejemplos:


S:= S UNION { ( S# : ‘S6’,
SNOMBRE : ‘Beltrán’,
SITUACION : 50,
CIUDAD : ‘Madrid’,)}
SP:=SP MINUS {( S# : ‘S1’,
P# : ‘P1’,
CANT : 300)}
Modifican la base de datos, ya que las asignaciones se hacen a
relaciones ya existentes. La primera de estas asignaciones,
inserta la tupla del proveedor S6, la segunda hace una
eliminación de la tupla S1 y P1 de la relación SP.

Sin embargo las operaciones de unión y diferencia como


sustitutos de operaciones explícitas para insertar y eliminar, no
son satisfactorias porque no manejan las situaciones de error.
Por ejemplo, UNION no rechaza un intento de insertar una tupla
repetida.
Relación S Relación SP
S# SNOMBRE SITUACIÓN CIUDAD S# P# J# CANT
S1 Salazar 20 Londres S1 P1 J1 200
S2 Jaimes 10 París S1 P1 J4 700
S3 Bernal 30 París S2 P3 J1 400
S4 Corona 20 Londres S2 P3 J2 200
S5 Aldana 30 Atenas S2 P3 J3 200
S2 P3 J4 500
Relacion P S2 P3 J5 600
P# PNOMBRE COLOR PESO CIUDAD S2 P3 J6 400
P1 Tuerca Rojo 12 Londres S2 P3 J7 800
P2 Perno Verde 17 París S2 P5 J2 100
P3 Birlo Azul 17 Roma S3 P3 J1 200
P4 Birlo Rojo 14 Londres S3 P4 J2 500
P5 Leva Azul 12 París S4 P6 J3 300
P6 Engrane Rojo 19 Londres S4 P6 J7 300
S5 P2 J2 200
Relación J S5 P2 J4 100
J# JNOMBRE CIUDAD S5 P5 J5 500
J1 Clasificador París S5 P5 J7 100
J2 Perforadora Roma S5 P6 J2 200
J3 Lectora Atenas S5 P1 J4 100
J4 Consola Londres S5 P3 J4 200
J5 Compaginador Atenas S5 P4 J4 800
J6 Terminal Oslo S5 P5 J4 400
J7 Cinta Londres S5 P6 J4 500

You might also like