TEMA 4
MODELO DE BASE DE DATOS
RELACIONAL
1. Introducci´
on . . . 2
2. Estructura de Datos . . . 4
3. Reglas de Integridad . . . 24
4. Manipulaci´
on de Datos . . . 45
(a) ´
Algebra Relacional . . . 48
Introducci´
on
CODD: Creador del MODELO RELACIONAL (1970).
MODELO RELACIONAL: ´
Unico modelo del cual se
ha dado un enfoque te´
orico antes de realizar
cual-quier implementaci´
on pr´
actica.
A mediados de los 70 se construyen dos prototipos:
1. SYSTEM R (IBM)(SQL) ←→
½
* BD2 actual * Recerca
* Altres SGBD con SQL
2. (Univ. of CaliforniaINGRES
at Berkeley) ←→
n
INGRES comercial (SQL)
MODELO RELACIONAL dividido en tres partes:
1. Estructura de Datos
2. Integridad de los Datos ⇒
REGLAS
DE INTEGRIDAD
3. Manipulaci´
on de los Datos
• ´Algebra Relacional
• C´alculo Relacional
Estructura de Datos
T´
erminos relacionales de la Estructura de Datos:
RELACI ´ON: Tabla.
TUPLA: Fila de la tabla.
ATRIBUTO: Columna de la tabla.
CARDINALIDAD: N´umero de tuplas de la tabla. GRADO: N´umero de atributos.
CLAVE PRIMARIA: Identificador (campo o campos) ´unico de la tabla.
DOMINIO: Conjunto de valores legales, permitidos en un atri-buto.
Definici´
on en SQL
CREATE TABLE s
( s# CHAR(5) NOT NULL,
snom CHAR(20) NOT NULL,
zona SMALLINT NOT NULL,
ciudad CHAR(15) NOT NULL, PRIMARY KEY (s#) ) ;
CREATE TABLE p
( p# CHAR(6) NOT NULL,
pnom CHAR(20) NOT NULL,
color CHAR(7) NOT NULL,
pes SMALLINT NOT NULL,
ciudad CHAR(15) NOT NULL, PRIMARY KEY (p#) ) ;
CREATE TABLE SP
( s# CHAR(5) NOT NULL,
p# CHAR(6) NOT NULL,
cant INTEGER NOT NULL,
PRIMARY KEY (s#, p#),
FOREIGN KEY (s#) REFERENCES s, FOREIGN KEY (p#) REFERENCES p ) ;
TERMINOLOG´IA
RELACIONAL
INFORMAL
Relaci´
on
←→
Tabla
Tupla
←→
Fila o Registro
Cardinalidad
←→
N´
umero de filas
Atributo
←→
Columna o campo
Grado
←→
N´
umero de columnas
Clave Primaria
←→
Identificador ´
unico
Dominio
←→
Conjunto de
valores permitidos
Sistemas Relacionales implementados que se utilizan
ac-tualmente NO se ajustan a TODOS los conceptos
rela-cionales.
↓
Ejemplo: Noci´
on de DOMINIO es un
as-pecto te´
orico, que no se considera en
sis-temas relacionales muy conocidos como
DB2 o INGRES.
Conceptos relacionales:
• DOMINIO
• RELACI ´
ON
DOMINIO
Un dato individual, un valor escalar es:
• Menor unidad sem´antica de informaci´on.
• No descomponible (at´omico).
Ejemplos:
– Valor escalar: No es posible descomponerlo.
– Cadena de caracteres: Si se descompone, pierde su significado.
• No tiene estructura interna.
Def. DOMINIO:
1. Conjunto de m´ınimas unidades sem´anticas de informaci´on ⇓
DOMINIO SIMPLE
2. Conjunto de datos de los cuales toman el valor los atributos.
• Cada atributo ⇒ un dominio asociado
UTILIDAD DE LOS DOMINIOS
1. Controlar que los valores de los atributos esten
en-tre los permitidos.
2. Comprobar las comparaciones. Control de tipos.
Ejemplo:
SELECT P.*, SP.* SELECT P.*, SP.*
FROM P,SP FROM P,SP
WHERE P.P#=SP.P# WHERE P.PES=SP.CANT
⇓ ⇓
Tiene sentido la comparaci´on Comparaci´on incoherente DOMINIOS IGUALES DOMINIOS DIFERENTES.
↓
ERROR
3. Realizar consultas como
Qu´
e relaciones de la BD contienen informaci´
on de
proveedores?
⇓
equivale a
Qu´
e relaciones de la BD incluyen un atributo
definido sobre el dominio de n´
umeros de
DEFINICI ´
ON DE DOMINIOS
CREATE DOMAIN <nom> <tipus> CHECK <dominio>
donde <dominio> puede ser
• Rango de valores num´ericos (a, b).
• Conjunto de strings de car´acteres (w1, w2. . . wn).
Ejemplo:
CREATE DOMAIN d_s# CHAR(5); CHECK CALL comprova_S#; CREATE DOMAIN d_nom CHAR(20);
CREATE DOMAIN d_zona SMALLINT; CHECK IN (10,20,30,40,50); CREATE DOMAIN d_ciudad CHAR(15);
CREATE DOMAIN d_p# CHAR(6); CHECK CALL comprova_P#; CREATE DOMAIN d_color CHAR(7); CHECK IN
(’Azul’,’Groc’,’Verd’, ’Vermell’);
CREATE DOMAIN d_pes SMALLINT; CHECK BETWEEN 1 AND 100; CREATE DOMAIN d_cant INTEGER; CHECK BETWEEN 1 AND 1000; CREATE TABLE s
( s# DOMAIN (d_s#) NOT NULL, snom DOMAIN (d_nom) NOT NULL, zona DOMAIN (d_zona) NOT NULL, ciudad DOMAIN (d_ciudad) NOT NULL, PRIMARY KEY (s#) ) ;
CREATE TABLE p
( p# DOMAIN (d_p#) NOT NULL, pnom DOMAIN (d_nom) NOT NULL, color DOMAIN (d_color) NOT NULL, pes DOMAIN (d_pes) NOT NULL, ciudad DOMAIN (d_ciudad) NOT NULL, PRIMARY KEY (p#) ) ;
CREATE TABLE sp
( s# DOMAIN (d_s#) NOT NULL,
p# DOMAIN (d_p#) NOT NULL,
cant DOMAIN (d_cant) NOT NULL, PRIMARY KEY (s#, p#),
En dominios definidos como un conjunto de valores no
siempre tiene sentido la ordenaci´
on SEM´
ANTICA pero
siempre habr´
a una ordenaci´
on L´
EXICA.
Ejemplo:
d color = (’Azul’,’amarillo’,’verde’,’rojo’)
• ’azul’ es anterior a ’amarillo’
DOMINIOS COMPUESTOS
Combinaci´
on de dominios simples.
Ejemplo: Definir el dominio DATA
CREATE DOMAIN d dia NUMBER(2) CHECK BETWEEN 1 AND 31; CREATE DOMAIN d mes NUMBER(2) CHECK BETWEEN 1 AND 12; CREATE DOMAIN d any NUMBER(4) CHECK BETWEEN 1 AND 9999; CREATE DOMAIN data ( dia DOMAIN (d dia),
mes DOMAIN (d mes),
any DOMAIN (d any) ) CHECK CALL data correcta
Tipus de atributos:
Atributos simples: Corresponden a dominios simples.
Atributos compostos: Corresponden a dominios
IMPORTANTE EN UN ATRIBUTO COMPUESTO: Tener
la capacidad de poder acceder a todo el atributo
com-puesto o a cada una de sus componentes por separado.
Ejemplo:
CREATE empleado
( num_emp DOMAIN (d_num_emp), fecha_ingreso DOMAIN (fecha), PRIMARY KEY (num_emp) );
data ingres: atributo compuesto. Se puede hacer
refe-rencia a
• Atributo compuesto
SELECTFROM empleado
WHERE empleado.fecha_ingreso=’01012004’;
• Componentes del atributo compuesto
SELECT
FROM empleado
WHERE ANY(empleado.fecha_ingreso)<’2004’ AND MES(empleado.fecha_ingreso)<’06’;
PROBLEMA DE LOS DOMINIOS
Puede ser que restrinja excesivamente las expresiones o
las comparaciones.
1. Comparaci´
on entre diferentes dominios (los
defi-nidos con instrucci´
on CREATE y los predefinidos CHAR,
INTEGER) pueden ser correctos SEM´
ANTICAMENTE
pero no serlo SINT´
ACTICAMENTE.
Ejemplo:
• mes(data)| {z }
dominio d mes <|{z}
12 dominio INTEGER • ciudad| {z }
dominio d ciudad = ’LONDRES’| {z }
dominio CHAR • any(data)| {z }
dominio d any +|{z}
10 dominio INTEGER|
{z
}
dominio ? > any(avui)| {z }
dominio d any2. Dominios booleanos (si/no,masculino/femenino)
3. En ciertos casos es necesario definir expresiones
combinando dominios
Ejemplo:
e = vt
Tres dominios:
ESPACIO (e),
VELOCIDAD (v)
y TIEMPO (t).
Para resolver problemas de combinaci´
on de
domi-nios, dos posibles soluciones:
• CODD: Definir operadores especiales para
sal-tarse las comprobaciones de tipos.
• DATE: Para cada dominio,
– Especificar las reglas de conversi´on de tipos,
– Especificar el tipo resultante para cada c´alculo de ex-presiones con diferentes dominios.
Para ofrecer un sistema completo de Bases de
Datos hay que hacer:
1. Especificar un conjunto completo de dominios D,
intentando que sea
CERRADO RESPECTO A LOS OPERADORES
⇓
Dados d
i, d
jdominios de D y una operaci´
on ∗, D
ES CERRADO si y s´
olo si
d
i∗ d
j∈ D
∀d
i, d
j∈ D,
∀∗
2. Definir los operadores unarios para cada dominio de
D.
3. Definir los operadores binarios para cada dominio
de D.
4. Especificar el resultado de cualquier expresi´
on
per-mitida.
RELACI ´
ON
Definici´
on: Una relaci´
on R se define sobre un conjunto
de dominios D
1. . . D
ny se compone de dos partes:
1. Cabecera: Conjunto fijo de parejas atributo/dominio.
{(A
1: D
1), (A
2: D
2) . . . (A
n: D
n)}
2. Cuerpo: Conjunto de n-tuplas, donde una n-tupla
es un conjunto de parejas atributo/valor.
{(A
1: V
i,1), (A
2: V
i,2) . . . (A
n: V
i,n)}
i = 1 . . . m
on m es la cardinalidad de la relaci´on (n´umero de tuplas) VARIABLE EN EL TIEMPO
n es el grado de la relaci´on (n´umero de atributos) FIJO EN EL TIEMPO
PROPIEDADES DE LAS RELACIONES
1. No hay tuplas duplicadas
• RELACI ´ON es un conjunto. No existen elementos dupli-cados en un conjunto.
↓
La mayor´ıa de sistemas relacionales no controlan que haya tuplas duplicadas en la relaci´on, ofreciendo m´etodos para controlarlo indirectamente (CREATE INDEX, clave primaria).
↓
En una relaci´on siempre existir´a una clave primaria (con-junto de atributos que definen una tupla de forma ´unica).
• En una TABLA pueden existir elementos duplicados.
2. Las tuplas no estan ordenadas
• En un conjunto, los elementos no estan ordenados.
P1 P3
P3 misma relaci´on P4
P5 ←→ P1
P4 P5
• No obstante existe la posibilidad de ordenar respecto de
un conjunto de atributos (´ındices).
3. Atributos no estan ordenados
atributo/do-4. Todos los elementos de un dominio son at´
omicos
• Todo valor en una relaci´on tendr´a un s´olo valor indivisible, NO UNA LISTA DE VALORES.
• Si los elementos de un dominio son compuestos, se realiza
una combinaci´on de valores, pero s´olo una combinaci´on.
• ∀ tupla ⇒ UN valor por atributo.
• RELACI ´ON NORMALIZADA: Las relaciones no contienen grupos repetitivos.
⇓
PRIMERA FORMA NORMAL
S# P# CANT S1 P1 300 P2 200 P3 400 P4 200 P5 100 P6 100 S2 P1 300 P2 400 S3 P3 200 S4 P2 200 P4 300 P5 400 Normalizaci´on =⇒ S# P# CANT S1 P1 300 S1 P2 200 S1 P3 400 S1 P4 200 S1 P5 100 S1 P6 100 S2 P1 300 S2 P2 400 S3 P3 200 S4 P2 200 S4 P4 300 S4 P5 400
TIPOS DE RELACIONES
1. RELACIONES BASE
• Tabla base de SQL.
• Tabla con nombre y datos propios.
2. VISTAS - RELACIONES VIRTUALES
• Relaciones con nombre, definidas en t´erminos de otras relaciones con nombre.
• No tiene datos almacenados propios. • Relaci´on derivada.
3. INSTANT´
ANEAS - SNAPSHOTS
• Relaci´on derivada parecida a vista pero real (no virtual).
• Relaci´on con datos propios.
• Definidas en t´erminos de otras relaciones.
• Se crea de forma parecida a una consulta
CREATE SNAPSHOT sc AS SELECT s#, ciudad
FROM s
REFRESH EVERY DAY
– Resultado de la consulta se guarda en una relaci´on de s´olo lectura.
4. RESULTADOS DE CONSULTAS
• Relaci´on resultante de una consulta.
• Puede tener nombre o no tenerlo.
• No tienen una existencia persistente en la BD.
5. RESULTADOS INTERMEDIOS
• Relaci´on usualmente sin nombre resultante de alguna ex-presi´on anidada dentro de una otra expresi´on relacional.
• No tienen una existencia persistente en la BD. Ejemplo: Listar las ciudades de los subministradores
de la pieza P2: SELECT s.ciudad FROM s WHERE s.s# IN ( SELECT sp.s# FROM sp WHERE sp.p# = ’P2’);
6. RESULTADOS TEMPORALES
• Relaci´on con nombre que se destruye de forma autom´atica en alg´un momento determinado (variables locales a un procedimiento).
• Relaciones base, vistas y snapshots son m´as permanentes, pues s´olo son destruidas por acciones expl´ıcitas del usu-ario.
BASE DE DATOS RELACIONAL
Def. BASE DE DATOS RELACIONAL:
Base de
Datos percibida por el usuario como una colecci´
on
de relaciones normalizadas de diferentes grados que
var´ıa con el tiempo.
• Percibida por el usuario: Modelo relacional se
aplica en los niveles externo (usuarios) y conceptual
(DBA). No se aplica sobre el nivel interno.
• Variable en el tiempo: Relaciones van variando
su n´
umero de tuplas en el tiempo.
Comparaci´
on BD relacional con un fichero:
relaci´
on
←→
fichero
tupla
←→
registro
atributo
←→
campo
Reglas de integridad
Reglas que permiten controlar que la informaci´
on de la
BD sea correcta.
Reglas que informan al DBMS de ciertas restricciones
del mundo real.
Dos niveles:
1. REGLAS ESPEC´IFICAS: Se aplican a una BD
espec´ıfica.
2. REGLAS GENERALES (METARREGLAS):
Re-glas aplicables a cualquier BD.
1. REGLAS ESPEC´IFICAS
Se definen seg´
un el contexto y el entorno de trabajo.
Ejemplo de reglas espec´ıficas sobre BD
proveedores-piezas (S,SP ,P ):
• N´umero de proveedor ha de ser de la forma Snnn
• N´umero de pieza ha de ser de la forma Pnnn
• Zona ha de estar entre 1 y 100.
• El peso ha de ser positivo.
• Las entregas de piezas (cant) han de ser m´ultiples de 100.
• Todas las piezas rojas han de guardarse en Londres.
• Un proveedor no puede subministrar m´as de la mitad de las piezas.
2. REGLAS GENERALES
(METARREGLAS)
Reglas de integridad aplicables a cualquier BD.
Tres reglas importantes:
1. Regla de Integridad de las Entidades
2. Regla de Integridad Referencial
3. Regla de Integridad de los Dominios: Todo valor
de un atributo ha de pertenecer al dominio sobre el
cual hemos definido el atributo.
1. Regla de Integridad de las Entidades
Regla que afecta a las claves primarias de las
rela-ciones.
Def. CLAVE PRIMARIA:
Atributo (o atributos) que
identifican de forma ´
unica cada tupla de la relaci´
on.
• Como m´
aximo, pueden ser clave primaria TODOS
los atributos de la relaci´
on.
• Pueden existir diversos conjuntos de atributos que
cumplan la definici´
on:
⇓
Definici´
on: Un conjunto de atributos k (simple o
com-puesto) de la relaci´
on R es una clave candidata de
R
⇐⇒
satisface las siguientes propiedades:
1. UNICIDAD: En todo momento no existen dos
tu-plas en R con el mismo valor de k.
2. MINIMALIDAD: Si k es compuesto, no ser´
a
posi-ble eliminar ninguna componente de k sin destruir
la propiedad de unicidad.
Consideraciones:
• Como m´ınimo, existe siempre UNA CLAVE CANDIDATA: la
uni´on de todos los atributos de la relaci´on.
• DE entre todas las claves candidatas,
– escoger una como CLAVE PRIMARIA.
– el resto definidas como CLAVES ALTERNATIVAS.
Ejemplo: Tabla de provincia. claves candidatas c´odigo postal y nombre de provincia.
– c´odigo postal: clave primaria (clave alternativa).
Observaciones sobre las claves primarias:
• Toda relaci´on tiene una clave candidata.
⇓
Toda relaci´on tiene
SIEMPRE
una clave primaria.• La clave primaria es la realmente importante. Claves
alterna-tivas poco importantes.
• Toda relaci´on tiene clave primaria, pero en la pr´actica importa s´olo la clave primaria en las relaciones base.
• Definir la clave primaria no implica que se haya de definir un
fichero ´ındice para estos campos.
• Clave primaria ofrece un MECANISMO DE
DIRECCIO-NAMIENTO DE TUPLAS en un sistema relacional.
Una consulta sobre una clave primaria retornar´a como m´aximo una sola tupla.
Ejemplo: SELECT * FROM p ==> 1 tupla WHERE p#=’P3’ SELECT * FROM p ==> n tuplas WHERE ciudad=’Paris’
REGLA DE INTEGRIDAD DE LAS ENTIDADES
Ninguna componente de la clave primaria puede
aceptar valores NULL
NULL ≡ ausencia de informaci´
on
↓
• Representa que para esta tupla no se tiene
infor-maci´
on sobre el valor del atributo.
Justificaci´
on de la Regla de integridad de las entidades:
• Las relaciones base (o tuplas) corresponden a entidades del
mundo real.
• Entidades del mundo real son distingibles, identificables de
una forma u otra.
• Representantes de entidades en la BD han de ser distinguibles.
• Claves primarias hacen la funci´on de identificaci´on ´unica de tuplas en el modelo relacional.
• Una clave primaria a NULL es equivalente a decir que existe
una entidad en el mundo que no es distinguible.
En la relaci´on S, el valor S# a NULL significa que existe un proveedor sin identidad.
• Si NULL significa propiedad no aplicable, la tupla no tiene
sentido.
Les entidades han de tener un significado (proveedor, pieza, venta).
• Si NULL significa valor desconocido, no podemos afirmar
nada de una cosa desconocida.
Otro enunciado de la regla:
En una BD relacional, nunca registraremos informaci´
on
sobre alguien que no podemos identificar
Observaciones sobre la regla:
• CLAVES PRIMARIAS COMPUESTAS: No pueden aceptar
valores NULL ninguna de las componentes de la clave.
• Regla de integridad aplicable a relaciones base.
• Regla de integridad se aplica a claves primarias, NO a claves
2. Regla de Integridad Referencial
Regla que afecta a las Claves externas de las
rela-ciones.
Def. CLAVE EXTERNA: Conjunto de atributos de
una relaci´
on R2, los valores del cual han de coincidir
con valores de una clave primaria de una relaci´
on
R1 (R1, R2 no tienen por qu´
e ser diferentes).
Ejemplo:
Atributo S# de la relaci´
on SP : Se permite un valor
de S# s´
olo si este mismo valor aparece en la clave
primaria S# de la relaci´
on S.
(Es absurdo tener envio de proveedor S9 si no es dado de alta en la tabla de proveedores.)
Atributo P# de la relaci´
on SP: Analog´ıa con el
an-terior.
↓
Atributos S#, P# de la relaci´
on SP son CLAVES
EXTERNAS.
OBSERVACI ´ON: Caso inverso ES posible. Que exista un valor en clave primaria, pero que NO exista en clave externa (Proveedor definido en clave primaria, pero que no ha hecho a´un ning´un envio).
Def. TUPLA REFERENCIADA: Tupla donde existe
el valor correspondiente de la clave primaria.
Def. RESTRICCI ´
ON
REFERENCIAL:
Restricci´
on
que impone que los valores de una clave externa han
de concordar con valores de la clave primaria.
Def. RELACI ´
ON REFERENCIAL: Relaci´
on que
con-tiene la clave externa.
Def. RELACI ´
ON REFERENCIADA:
Relaci´
on que
contiene la clave primaria.
Falta de Integridad Referencial: Cuando la BD tiene
valores no v´
alidos de clave externa.
Referencias especificadas en el
DIAGRAMA REFERENCIAL
S
|{z}
relaci´
on
referenciada
←−
|{z}
SP
relaci´
on
referencial
−→
|{z}
P
relaci´
on
referenciada
⇓
a veces las relaciones sonetiquetadas con la clave externa
Def. CLAVE EXTERNA: Conjunto de atributos CE
de la relaci´
on R2 que satisface dos propiedades
im-portantes independendientemente del tiempo:
1. Todo valor de CE es
• totalmente NULL ´
o
• totalmente NO NULL
No se admiten combinaciones entre NULL y NO
NULL, pues la clave externa referencia una clave
primaria.
2. Existe una relaci´
on R1 con clave primaria CP , en
la cual cada valor NO NULL de CE es id´
entico al
valor de CP en alguna tupla de R1.
Observaciones:
• La clave externa y la clave primaria han de tener el
mismo dominio.
• La clave externa no ha de pertenecer a la clave
primaria de la relaci´
on que la contiene...pero puede
pertenecer.
Ejemplo: Campos SP.S#, SP.P# son claves
exter-nas y a la vez clave primaria de SP .
• Una relaci´
on puede ser referenciada y referencial
simult´
aneamente
R3
→
R2
→
R1
Ruta referencial: cadena de restricciones
referen-ciales
• Relaciones R1, R2 no tienen por qu´
e ser diferentes:
RELACIONES AUTORREFERENCIALES
Ejemplo: Relaci´
on EMPLEADO
EMPLEADO (numemp, . . .,salario,. . ., numemp ger,. . .)
numemp: clave primaria de EMPLEADO.
numemo ger: n´umero de empleado correspondiente al gerente de este empleado. Clave externa de EMPLEADO.
• Relaciones autorreferenciales pueden dar lugar a
CICLOS REFERENCIALES
⇓
Ruta referencial desde una relaci´
on hacia s´ı misma
R(n) → R(n − 1) → R(n − 2) → . . . → R2 → R1 → R(n)
• Claves externas han de poder aceptar valores NULL
Ejemplo: Relaci´
on EMPLEADO
REGLA DE INTEGRIDAD REFERENCIAL
La BD no ha de tener
valores de clave externa sin concordancia
↓
Todo valor NO NULL de clave externa ha de existir en
la clave primaria de la relaci´
on referenciada
Si valor B fa referencia a A ⇒ A ha de existir
Observacions:
1. Integridad
referencial
exige concordancia entre
claves externas y llaves primarias (no claves
alter-nativas).
2.
- clave externa
- integridad referencial
conceptos muy
interrelacionados
ESTRATEGIAS PARA GARANTIZAR LA
INTEGRIDAD REFERENCIAL EN UNA BD
• No permitir realizar ninguna operaci´
on o transacci´
on
que pueda llevar a la BD a un estado incorrecto.
• Aceptar la operaci´
on que produce un estado ilegal,
pero realizar ciertas operaciones de compensaci´
on
para garantizar el estado legal.
Ejemplo: Relaciones proveedores-piezas (S,SP ,P ).
Si usuario elimina proveedor S1 de la relaci´on S, SE HA DE HACER que el sistema elimine tambi´en de la relaci´on SP los env´ıos del proveedor S1.⇓
corresponde al DBA decidir qu´e transacciones peligrosas – no se pueden realizar.
– se pueden realizar. En este caso, QU´E operaciones de compensaci´on han de realizarse?.
Por tanto, para cada clave externa habr´
a de cuestionarse
REGLAS PARA CLAVES EXTERNAS
1. Puede aceptar valores nulos la clave externa?
Respuesta depende del significado de la BD y de la pol´ıtica de datos que se quiera modelizar.
• Ejemplo: proveedores-piezas (S,SP ,P ). Tiene sentido un
env´ıo con proveedor desconocido?
↓
NO
• Ejemplo: empleados-departamentos
Tiene sentido un empleado no asignado a un departa-mento?
↓
SI
2. Qu´
e se hace si se borra una tupla referenciada?
Ejemplo: proveedores-piezas (S,SP ,P ). Borrar proveedor S1
de la relaci´on S. Tres posibilidades:
RESTRINGIDA (restricted): Se borra la tupla en el caso RESTRINGIDO en que no hay ning´un valor de clave ex-terna que la referencie.
ES PROPAGA (cascades): Se borra la tupla referenciada y se PROPAGA el borrado a todas las tuplas referenciales a ella.
ANULA (nullifies): Se borra la tupla referenciada y se asig-na a NULL los valores de las claves exterasig-nas referenciales. Esta opci´on es v´alida si las claves externas aceptan valor NULL.
3. Qu´
e se hace si se modifica la clave primaria de
la tupla referenciada?
Ejemplo: proveedores - piezas (S,SP ,P ). Modificar el n´umero de proveedor en la relaci´on S.
Tres posibilidades:
RESTRINGIDA (restricted): Se permite modificar la tupla en el caso RESTRINGIDO en que no hay ning´un valor de clave externa que la referencie.
ES PROPAGA (cascades): La modificaci´on se PROPAGA a las claves externas de la relaci´on referencial.
ANUL·LA (nullifies): Se modifica la clave primaria de la tu-pla referenciada y se asigna a NULL los valores de las claves externas referenciales.
Esta opci´on es v´alida si las claves externas aceptan valor NULL.
DEFINICI ´
ON SQL DE CLAVE EXTERNA
En la definici´
on SQL de relaci´
on base. Hay que definir
• Atributos
• Relaci´on referenciada (clave primaria)
• Reglas para claves externas
FOREIGN KEY (<nombre_clave_externa>) REFERENCES <objetivo> NULLS [NOT] ALLOWED
DELETE OF <objetivo> <efecto>
UPDATE OF <clave_primaria_objectivo> <efecto>
on < objectivo > → relaci´on referenciada
< efecto > → RESTRICTED | CASCADES | NULLIFIES
Observaciones:
• Posibilidades de tratamiento alternativos a RESTRICTED,
CASCADES y NULLIFIES (todo y que estas estrategias
s´
on las m´
as usuales):
– Conversaci´on con el usuario final
– Grabar la informaci´on a borrar o modificarla en otro archivo. – Transferir la informaci´on a borrar o modificar a otras
tu-plas
Para incluir estos tratamientos alternativos en
de-finici´
on SQL:
• Regla de clave externa CASCADES puede comportar
problemas
R3
−→
bR2
−→
aR1
donde referencia a:
– Regla de clave externa: CASCADES
– Se eliminan tuplas de R1 → eliminar tuplas de R2.
– Problema: Si eliminamos tuplas de R2, c´omo afecta a las tuplas de R3?.
donde referencia b:
– Regla de clave externa: X
– PROBLEMA: Si regla X no permite eliminar tuplas de
R3 como consecuencia a la eliminaci´on de tuplas de R2, tupla de R1 no puede ser borrada.
↓
Operaciones de modificaci´
on de la BD
son de tipo at´
omico (se hacen todas o no
se hace ninguna), a pesar de que
com-porten toda una serie de operaciones
adi-cionales, como por ejemplo la regla de
clave externa CASCADES.
Manipulaci´
on de Datos
Tercera y ´
ultima parte del modelo relacional.
Alternativas (estrategias) para constituir la base formal
de la manipulaci´
on de datos:
• ´
ALGEBRA RELACIONAL
• C´
ALCULO RELACIONAL
expresi´
on
expresi´
on
´
Algebra
⇐⇒
C´
alculo
Relacional
Relacional
´
ALGEBRA RELACIONAL
Conjunto de operaciones expl´ıcitas para indicar al
sis-tema la forma de construir una relaci´
on.
Formulaci´
on prescriptiva. ´
Algebra proporciona
proce-dimiento para resolver el problema.
Ejemplo:
Obtener los n´
umeros y ciudades de los proveedores que
suministren la pieza P2
⇓
formulaci´
on algebraica
1. Formar el join natural de las relaciones S y SP
seg´
un S#.
2. Restringir el resultado del join a las tuplas de la
pieza P2.
3. Proyectar el resultado sobre S#, CIUDAD.
• Basada en procedimientos.
• Formulaci´
on m´
as pr´
oxima a lenguaje de
progra-maci´
on.
C´
ALCULO RELACIONAL
Ofrece una notaci´
on para formular la definici´
on de la
consulta deseada.
Formulaci´
on descriptiva. Da la definici´
on de lo que se
quiere.
Ejemplo:
Obtener los n´
umeros y ciudades de los proveedores que
suministran la pieza P2
⇓
formulaci´
on c´
alculo relacional
OBTENER S# y CIUDAD PARA LOS PROVEEDORES TALES QUE
EXISTA UN ENVIO SP CON EL MISMO VALOR EN S# Y CON EL
VALOR P2 EN P#
• Observaciones:
– Usuario define las caracter´ısticas del resultado.
– Sistema decide qu´e joins, proyecciones, etc. se han de realizar para obtener el resultado.
• Basada en el ´
area de la l´
ogica matem´
atica
C´
ALCULO DE PREDICADOS.
´
ALGEBRA RELACIONAL
Conjunto de operadores de alto nivel que operan sobre
relaciones
⇓
Reglas para construir expresiones
Cada operador se aplica a una (operador unario) o a dos
(operador binario) relaciones y produce una relaci´
on de
salida.
OPERADORES:
• OPERADORES DE CONJUNTOS
– Uni´
on
– Intersecci´
on
– Diferencia
– Producto cartesiano
• OPERADORES RELACIONALES
– Restricci´
on
– Projecci´
on
– Reuni´
on (join) natural
– Join theta (join general)
– Divisi´
on
• OPERADORES ADICIONALES
– Ampliaci´
on (extensi´
on)
– Resumen
– Divisi´
on General
– Join extern (outer join)
Operadores de CODD
Ocho operadores:
• Operadores de conjuntos (4)
DEFINICI ´
ON INTU¨ITIVA DE LOS
CUATRO OPERADORES DE CONJUNTOS
UNI ´O (op. binario) Construye una relaci´on formada por todas las tuplas que aparezcan en cualquiera de las dos relaciones especificadas.
INTERSECCI ´ON (op. binario): Construye una relaci´on formada per aquellas tuplas que aparezcan en las dos relaciones es-pecificadas.
DIFER´ENCIA (op. binario) Construye una relaci´on formada por todas las tuplas de la primera relaci´on que no aparezcan en la segunda de las dos tuplas especificadas.
PRODUCTO CARTESIANO (op. binario) Construye una rela-ci´on que contiene todas las combinaciones posibles de tuplas, una de cada una de las dos relaciones.
DEFINICI ´
ON INTUITIVA DE LOS
CUATRO OPERADORES RELACIONALES
RESTRICCI ´ON (op. unario) Genera una nueva relaci´on, for-mada por las tuplas de la tabla original que cumplen una cierta condici´on.
PROYECCI ´ON (op. unario) Genera una nueva relaci´on formada por los atributos especificados de la tabla original.
JOIN-REUNI ´ON (op. binario) Construye una relaci´on que con-tiene todas las posibles combinaciones de tuplas, una por cada una de las relaciones, de manera que las dos tuplas que forman una combinaci´on satisfacen una condici´on especificada.
Parecido al producto cartesiano pero las tuplas seleccionadas han de cumplir ciertas restricciones.
DIVISI ´ON (op. binario) Dadas dos relaciones (una binaria y otra unaria), construye una nueva relaci´on formada por todos los valores de un atributo de la relaci´on binaria que coinciden con el otro atributo, con todos los valores de la relaci´on unaria.
Aspecto importante: PROPIEDAD DE CIERRE
EN-TRE OPERADORES:
• Resultado de cada operador es una nueva relaci´
on.
• Esto permite que cada operaci´
on pueda ser operando
de otra.
⇓
SINTAXIS PARA EL ´
ALGEBRA RELACIONAL
Para garantizar la propiedad de cierre entre operadores,
el resultado de toda operaci´
on entre relaciones ha de
ser una NUEVA RELACI ´
ON.
Toda relaci´
on ha de tener:
• CABECERA: Nombre de los atributos • CUERPO: Datos, valores de los atributos • CLAVE PRIMARIA
↓
Qu´
e cabecera tienen las operaciones entre relaciones?
Importante para referenciar atributos en operacions posteriores si son encadenadas.
⇓
´
Algebra relacional ha de garantizar la cabecera, el cuerpo
y la clave primaria de los resultados intermedios de
cual-quier operador para garantizar la formaci´
on de
expre-siones relacionales.
Ejemplo: Operador RENAME
• Operador que cambia el nombre de los atributos de una relaci´on.
• Toma una relaci´on y crea una nueva relaci´on donde se ha cambiado el nombre a uno de los atributos.
S RENAME ciudad AS sciudad
RESULTADO: Nueva relaci´on sin nombre con el mismo cuerpo que la relaci´on S, pero con el nombre de atributo sciudad en lugar
GRAM´
ATICA:
(en formato BNF - Backus Normal Form)
expresion ::= expresion_una_relacion | expresion_dos_relaciones
expresion_una_relacion ::= redenominar | restriccion | projeccion redenominar ::= terme RENAME atributo AS atributo
[,atributo AS atributo]
terme ::= relacio | (expresio) restriccio ::= terme ON comparacio projeccio ::= terme | terme
[llista_atributos] llista_atributos ::= atributo | atributo, llista atributos expresio_dues_relaciones::= terme
operacio_binaria terme operacio_binaria ::= UNION | INTERSECT | MINUS |
TIMES | JOIN | DIVIDEBY
relacion ::= identificador atributo ::= identificador comparacio ::= = | <> | < | >
Relaci´
on formada per cabecera, cuerpo y...
CLAVE PRIMARIA
Para garantizar propiedad de cierre para los operadores:
REGLAS DE HERENCIA DE CLAVE PRIMARIA
⇓
Dadas claves primarias de los operandos de una
ex-presi´
on relacional, encontrar cual es la clave primaria
de la relaci´
on resultante de la expresi´
on.
A continuaci´on se examinan los operadores del ´algebra relacional, utilizando la gram´atica especificada y detallando como se forman las relaciones resultantes de los operadores (cabecera, cuerpo y
OPERADORES TRADICIONALES DE CONJUNTOS
Operadores de conjuntos RELACIONALES:
• No tienen el mismo significado que operadores de
conjuntos MATEM´
ATICOS.
• V´
alidos cuando operandos tienen la misma
estruc-tura (cabecera), lo que garantiza la propiedad de
cierre de las operaciones.
Ejemplo: R1 ∪ R2
Si R1, R2 tienen diferente estructura, de qu´
e tipo
es la relaci´
on resultante?.
Definici´
on: Dos relaciones son COMPATIBLES
RES-PECTO LA UNI ´
ON (uni´
on-compatibles) si sus
ca-beceras son id´
enticas, es decir:
• Las dos tienen el mismo conjunto de nombres de
atributos (mismo grado).
• Atributos correspondientes a las dos relaciones tienen
el mismo dominio.
Operadores que requieren esta propiedad:
• Uni´on • Intersecci´on • Diferencia
OPERADORES DE CONJUNTOS:
• UNI ´ON • INTERSECCI ´ON • DIFERENCIA • PRODUCTO CARTESIANOUNI ´
ON
Definici´
on: Dadas dos relaciones A,B uni´
on-compati-bles, A ∪ B corresponde a una otra relaci´
on con
• misma cabecera de A y B.
• cuerpo formado por todas las tuplas pertenecientes
a A, B, A y B eliminando duplicados.
Ejemplo:
A: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S4 Corona 20 Londres
B: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S2 Jaime 10 Paris
A ∪ B: S# SNOM ZONA CIUDAD S1 Salazar 20 Londres
S4 Corona 20 Londres
INTERSECCI ´
ON
Definici´
on: Dadas dos relaciones A,B uni´
on-compati-bles, A ∩ B corresponde a otra relaci´
on con
• misma cabecera de A y B.
• cuerpo formado por todas las tuplas pertenecientes
a A y a B.
Ejemplo:
A: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S4 Corona 20 Londres
B: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S2 Jaime 10 Paris
A ∩ B: S# SNOM ZONA CIUDAD S1 Salazar 20 Londres
DIFER´
ENCIA
Definici´
on: Dadas dos relaciones A,B uni´
on-compati-bles, A - B corresponde a otra relaci´
on con
• misma cabecera de A y B.
• cuerpo formado per las tuplas de A que no pertenecen
a B.
Ejemplo:
A: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S4 Corona 20 Londres
B: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S2 Jaime 10 Paris
A - B: S# SNOM ZONA CIUDAD
S4 Corona 20 Londres
B - A: S# SNOM ZONA CIUDAD
PRODUCTO CARTESIANO
• Operaci´
on con poca importancia pr´
actica. Hay
sis-temas relacionales que no incorporan esta
opera-ci´
on.
• Para garantizar la propiedad de cierre, no puede
haber atributos iguales en los dos operandos.
↓
No existen atributos iguales en una
relaci´
on, ni que sea resultado de una
ope-raci´
on.
Definici´
on: Dos relaciones s´
on COMPATIBLES
RES-PECTO EL PRODUCTO (producto-compatibles)
si las dos cabeceras son disjuntas, no tienen ning´
un
atri-buto en com´
un.
Definici´
on: Dadas dos relaciones A,B
producto-com-patibles, A × B corresponde a otra relaci´
on con
• cabecera formada per la uni´
on de las dos cabeceras.
• cuerpo formado por todas las tuplas formadas por
la combinaci´
on de una tupla de A por cada una de
B, y esto para todas las tuplas de A.
↓
(combinaci´
on de tuplas, no de campos)
Ejemplo:
A: S# SNOM B: P# S1 Salazar P1 S4 Corona P2 S2 Jaime P3 P4 P5 P6 A × B: S# SNOM P# S# SNOM P# S1 Salazar P1 S1 Salazar P4 S4 Corona P1 S4 Corona P4 S2 Jaume P1 S2 Jaume P4 S1 Salazar P2 S1 Salazar P5 S4 Corona P2 S4 Corona P5 S2 Jaume P2 S2 Jaume P5 S1 Salazar P3 S1 Salazar P6 S4 Corona P3 S4 Corona P6 S2 Jaume P3 S2 Jaume P6Uni´
on
Intersecci´
on
Producto Cartesiano
→ Propiedades
½
Conmutativa
Asociativa
Conmutativa:
A
∪
B ≡ B
∪
A
A
∩
B ≡ B
∩
A
A
×
B ≡ B
×
A
Asociativa:
(A ∪ B) ∪ C ≡ A ∪ (B ∪ C)
(A ∩ B) ∩ C ≡ A ∩ (B ∩ C)
(A × B) × C ≡ A × (B × C)
OPERADORES RELACIONALES
• RESTRICCI ´
ON
• PROJECCI ´
ON
• REUNI ´
ON (JOIN) NATURAL
RESTRICCI ´
ON
Definici´
on: Sea ∇ la representaci´
on de cualquier
ope-rador de comparaci´
on simple (=, 6=, <, ≤, >, ≥).
Dada una relaci´
on A y dos atributos X, Y , A WHERE
X∇Y es otra relaci´
on con
• misma cabecera de A
• cuerpo formado per las tuplas que hacen verdadera
la condici´
on X∇Y .
Consideraciones:
• X, Y definidos en el mismo dominio.
• A puede o no ser una relaci´on con nombre. Tambi´en puede ser el resultado de una expresi´on relacional.
• X, Y pueden ser:
– Nombres de atributos – Constantes
– Identificadores de lenguaje anfitri´on (SQL Inmerso)
• En la definici´on se ha puesto una expresi´on condicional sim-ple, per´o tambi´en puede ir una combinaci´on de expresiones condicionales simples (expresi´on condicional compuesta):
A WHERE C1 AND C2
Ejemplo:
S: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S2 Jaume 10 Paris
S3 Bernal 30 Paris
S4 Corona 20 Londres
S5 Aldana 30 Atenas
P: P# PNOM COLOR PES CIUDAD
P1 Femella Roja 12 Londres
P2 Pern Verd 17 Paris
P3 Cojinete Azul 17 Roma
P4 Cojinete Roja 14 Londres
P5 Rodet Azul 12 Paris
P6 Engranatge Roja 19 Londres
S WHERE S# SNOM ZONA CIUDAD
CIUDAD=’Londres’:
S1 Salazar 20 Londres
S4 Corona 20 Londres
P WHERE P# PNOM COLOR PES CIUDAD
PES < 14:
P1 Femella Roja 12 Londres
Ejemplo:
SP: S# P# CANT S1 P1 300 S1 P2 200 S1 P3 400 S1 P4 200 S1 P5 100 S1 P6 100 S2 P1 300 S2 P2 400 S3 P3 200 S4 P2 200 S4 P4 300 S4 P5 400 SP WHERE S# P# CANT (S#=’S1’) AND (P#=’P1’): S1 P1 300PROJECCI ´
ON
Definici´
on: La PROYECCI ´
ON DE LA RELACI ´
ON
A SEG´
UN LOS ATRIBUTOS X,Y,...,Z, denotada
como
A[X, Y, . . . , Z]
es otra relaci´
on con
• cabecera formada por los atributos X, Y, . . . , Z.
• cuerpo
formado
por el
conjunto de todas las
tuplas (X : x, Y : y, . . . , Z : z) con valores de la
relaci´
on A de forma que x es el valor del atributo
X, y es el valor del atributo Y ... y z es el valor del
atributo Z, evitando duplicados de tuplas.
Ejemplo:
S: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S2 Jaime 10 Paris
S3 Bernal 10 Paris
S4 Corona 20 Londres
S5 Aldana 30 Atenas
P: P# PNOM COLOR PES CIUDAD
P1 Femella Roja 12 Londres
P2 Pern Verd 17 Paris
P3 Cojinete Azul 17 Roma
P4 Cojinete Roja 14 Londres
P5 Rodet Azul 12 Paris
P6 Engranatge Roja 19 Londres
S[CIUDAD]: CIUDAD Londres
Paris Atenas
P[COLOR,CIUDAD]: COLOR CIUDAD Roja Londres Verd Paris Azul Roma Azul Paris (S WHERE CIUDAD=’Paris’)[S#]: S# S2 S3
REUNI ´
ON (JOIN) NATURAL
Definici´
on: Dadas dos relaciones A, B con las
cabece-ras
A : (X
1, X
2, . . . , X
m, Y
1, Y
2, . . . , Y
n)
B : (Y
1, Y
2, . . . , Y
n, Z
1, Z
2, . . . , Z
p)
donde Y
ison los atributos comunes a las relaciones A, B
definidos en los mismo dominios,
considerando
(X
1, X
2, . . . , X
m),
(Y
1, Y
2, . . . , Y
n),
y
(Z
1, Z
2, . . . , Z
p) como atributos compuestos X, Y, Z,
la REUNI ´
ON NATURAL DE A y B (A JOIN B) es
otra relaci´
on con:
• cabecera formada por los atributos X, Y, Z.
• cuerpo formado por el conjunto de todas las tuplas
(X : x, Y : y, Z : z) tales que
1. Existe en la relaci´
on A una tupla con valor x en
el atributo X y valor y en el atributo Y .
2. Existe en la relaci´
on B una tupla con valor y en
el atributo Y y valor z en el atributo Z.
Propiedades:
• CONMUTATIVA:
A JOIN B ≡ B JOIN A
• ASOCIATIVA:
(A JOIN B) JOIN C ≡ A JOIN (B JOIN C)
• Si no existen atributos comunes,
A JOIN B ≡ A × B
En la pr´
actica, los operadores JOIN y PRODUCTO
CARTESIANO se unifican en un ´
unico expresado como
×:
• Si atributos no comunes, PRODUCTO
CARTE-SIANO:
A × B ≡ A × B
• Si atributos comunes, JOIN:
Ejemplo:
S: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S2 Jaime 10 Paris
S3 Bernal 10 Paris
S4 Corona 20 Londres
S5 Aldana 30 Atenas
P: P# PNOM COLOR PES CIUDAD
P1 Femella Roja 12 Londres
P2 Pern Verd 17 Paris
P3 Cojinete Azul 17 Roma
P4 Cojinete Roja 14 Londres
P5 Rodet Azul 12 Paris
P6 Engranatge Roja 19 Londres
S × P:
S# SNOM ZONA CIUDAD P# PNOM COLOR PES
S1 Salazar 20 Londres P1 Femella Roja 12
S1 Salazar 20 Londres P4 Cojinete Roja 14
S1 Salazar 20 Londres P6 Engranatge Roja 19
S2 Jaime 10 Paris P2 Pern Verd 17
S2 Jaime 10 Paris P5 Rodet Azul 12
S3 Bernal 10 Paris P2 Pern Verd 17
S3 Bernal 10 Paris P5 Rodet Azul 12
S4 Corona 20 Londres P1 Femella Roja 12
S4 Corona 20 Londres P4 Cojinete Roja 14
JOIN THETA (JOIN GENERAL)
Combinar tablas con condici´
on diferente a la igualdad,
que es la condici´
on propia del join natural.
Definici´
on: Sea ∇ la representaci´
on de cualquier
ope-rador de comparaci´
on simple (=, 6=, <, ≤, >, ≥),
Dadas
A, B
dos relaciones producto-compatibles, el
JOIN-theta de la relaci´
on A seg´
un el atributo X
con la relaci´
on B seg´
un el atributo Y que se denota
A × B WHERE X ∇ Y
es otra relaci´
on con:
• cabecera formada por la cabecera del producto
carte-siano A, B (uni´
on de las cabeceras A, B)
• cuerpo formado por las tuplas del producto
carte-siano A, B que cumplan la condici´
on X∇Y , siendo
X, Y sobre el mismo dominio y siendo ∇ aplicable
sobre el dominio.
Ejemplo: Calcular el join-major de la relaci´
on S seg´
un
CIUDAD, con la relaci´
on P seg´
un CIUDAD.
S: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S2 Jaime 10 Paris
S3 Bernal 10 Paris
S4 Corona 20 Londres
S5 Aldana 30 Atenas
P: P# PNOM COLOR PES CIUDAD
P1 Femella Roja 12 Londres
P2 Pern Verde 17 Paris
P3 Cojinete Azul 17 Roma
P4 Cojinete Roja 14 Londres
P5 Rodete Azul 12 Paris
P6 Engranaje Roja 19 Londres
((S RENAME CIUDAD AS SCIUDAD) × (P RENAME CIUDAD AS PCIUDAD))
(S RENAME CIUTAT AS SCIUTAT) × (P RENAME CIUTAT AS PCIUTAT): S# SNOM ZONA SCIUTAT P# PNOM COLOR PES PCIUTAT
S1 Salazar 20 Londres P1 Femella Vermell 12 Londres S1 Salazar 20 Londres P2 Pern Verd 17 Paris S1 Salazar 20 Londres P3 Coixinet Blau 17 Roma S1 Salazar 20 Londres P4 Coixinet Vermell 14 Londres S1 Salazar 20 Londres P5 Rodet Blau 12 Paris S1 Salazar 20 Londres P6 Engranatge Vermell 19 Londres
S2 Jaume 10 Paris P1 Femella Vermell 12 Londres
S2 Jaume 10 Paris P2 Pern Verd 17 Paris
S2 Jaume 10 Paris P3 Coixinet Blau 17 Roma
S2 Jaume 10 Paris P4 Coixinet Vermell 14 Londres
S2 Jaume 10 Paris P5 Rodet Blau 12 Paris
S2 Jaume 10 Paris P6 Engranatge Vermell 19 Londres S3 Bernal 30 Paris P1 Femella Vermell 12 Londres
S3 Bernal 30 Paris P2 Pern Verd 17 Paris
S3 Bernal 30 Paris P3 Coixinet Blau 17 Roma
S3 Bernal 30 Paris P4 Coixinet Vermell 14 Londres
S3 Bernal 30 Paris P5 Rodet Blau 12 Paris
S3 Bernal 30 Paris P6 Engranatge Vermell 19 Londres
S4 Corona 20 Londres P1 Femella Vermell 12 Londres S4 Corona 20 Londres P2 Coixinet Blau 17 Paris S4 Corona 20 Londres P3 Coixinet Vermell 17 Roma S4 Corona 20 Londres P4 Coixinet Vermell 14 Londres S4 Corona 20 Londres P5 Rodet Blau 12 Paris S4 Corona 20 Londres P6 Engranatge Vermell 19 Londres S5 Aldana 30 Atenas P1 Femella Vermell 12 Londres S5 Aldana 30 Atenas P2 Coixinet Blau 17 Paris S5 Aldana 30 Atenas P3 Coixinet Vermell 17 Roma S5 Aldana 30 Atenas P4 Coixinet Vermell 14 Londres S5 Aldana 30 Atenas P5 Rodet Blau 12 Paris
Observaciones:
• Si ∇ es la igualdad ⇒ EQUIJOINS
• En equijoins, han de existir como a m´ınimo dos
atri-butos iguales, uno por cada relaci´
on, con dominios
iguales.
⇓
Se eliminan atributos duplicados
JOIN NATURAL: Equijoin en el cual se eliminan
atributos duplicados.
S × P ≡
≡
³
( S × ( P RENAME CIUDAD AS PCIUDAD ) ) WHERE CIUDAD=PCIUDAD
´
[S#,SNOM,ZONA,CIUDAD,P#,PNOM,COLOR,PES] ≡
≡
³
( ( S RENAME CIUDAD AS SCIUDAD ) × P ) WHERE SCIUDAD=CIUDAD
´
[S#,SNOM,ZONA,CIUDAD,P#,PNOM,COLOR,PES]DIVISI ´
ON
Definici´
on: Dadas dos relaciones A, B con las
cabece-ras
A : (X
1, X
2, . . . , X
m, Y
1, Y
2, . . . , Y
n)
B : (Y
1, Y
2, . . . , Y
n)
siendo (Y
1, Y
2, . . . , Y
n) atributos comunes sobre los
mis-mos dominios,
considerando (X
1, X
2, . . . , X
m), (Y
1, Y
2, . . . , Y
n) como
atri-butos compuestos X, Y
la DIVISI ´
ON DE A y B (A ÷ B) es otra relaci´
on con:
• cabecera formada por los atributos X.
• 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.
⇓
Cuerpo formado por todos los valores de
X en A con valores Y en A que incluyen
todos los valores de Y en B.
Ejemplo:
SPP: S# P# A: P# P1 S1 P1 S1 P2 B: P# S1 P3 P2 S1 P4 P4 S1 P5 S1 P6 C: P# S2 P1 P1 S2 P2 P2 S3 P3 P3 S4 P2 P4 S4 P4 P5 S4 P5 P6 SPP ÷ A: S# S1 S2(S´olo dos valores S# contienen P1)
SPP ÷ B: S# S1 S4
(S´olo S1,S4 se aso-cian simult´aneamente a P2, P4)
SPP ÷ C: S# S1
(S´olo S1 est´a rela-cionado simult´ anea-mente a P1, P2, P3, P4, P5, P6)
Ejemplo: Dada la tabla SP
SP: S# P# CANT S1 P1 300 S1 P2 200 S1 P3 400 S1 P4 200 S1 P5 100 S1 P6 100 S2 P1 300 S2 P2 400 S3 P3 200 S4 P2 200 S4 P4 300 S4 P5 400Buscar los proveedores que producen piezas P2 y P4
simult´
aneamente
SP[S#,P#] ÷
EJEMPLOS DEL ´
ALGEBRA RELACIONAL
Ejemplos de formulaci´
on de consultas seg´
un el Ejemplo
de BD proveedores-piezas (S,SP ,P ).
S: S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
S2 Jaime 10 Paris
S3 Bernal 10 Paris
S4 Corona 20 Londres
S5 Aldana 30 Atenas
P: P# PNOM COLOR PES CIUDAD
P1 Femella Roja 12 Londres
P2 Pern Verd 17 Paris
P3 Cojinete Azul 17 Roma
P4 Cojinete Roja 14 Londres
P5 Rodet Azul 12 Paris
P6 Engranatge Roja 19 Londres
SP: S# P# CANT S1 P1 300 S1 P2 200 S1 P3 400 S1 P4 200 S1 P5 100 S1 P6 100 S2 P1 300 S2 P2 400 S3 P3 200 S4 P2 200 S4 P4 300 S4 P5 400
Obtener el nombre de los proveedores que suministren
la pieza P2
( ( S × SP ) WHERE P#=’P2’ ) [SNOM]
(1) S# SNOM ZONA CIUDAD P# CANT
S1 Salazar 20 Londres P1 300 S1 Salazar 20 Londres P2 200 S1 Salazar 20 Londres P3 400 S1 Salazar 20 Londres P4 200 S1 Salazar 20 Londres P5 100 S1 Salazar 20 Londres P6 100 S2 Jaime 10 Paris P1 300 S2 Jaime 10 Paris P2 400 S3 Bernal 10 Paris P3 200 S4 Corona 20 Londres P2 200 S4 Corona 20 Londres P4 300 S4 Corona 20 Londres P5 400
(2) S# SNOM ZONA CIUDAD P# CANT
S1 Salazar 20 Londres P2 200 S2 Jaime 10 Paris P2 400 S4 Corona 20 Londres P2 200 (3) SNOM Salazar Jaime
Obtener el nombre de los proveedores que proveen al
menos una pieza roja
µ
( P WHERE COLOR=’Roja’ )|
{z
}
(1) [P# ] × SP¶
|
{z
}
(2) [S#]
|
{z
}
(3) × S
[SNOM](1) P# PNOM COLOR PES CIUDAD
P1 Femella Roja 12 Londres
P4 Cojinete Roja 14 Londres
P6 Engranatge Roja 19 Londres
(2) P# S# CANT P1 S1 300 P1 S2 300 P4 S1 200 P4 S4 300 P6 S1 100
(3) S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres S2 Jaume 10 Paris S4 Corona 20 Londres (4) SNOM Salazar Jaime
Obtener el nombre de los proveedores que suministran
todas las piezas
µ
( SP[S#,P#] ÷ P[P#] )|
{z
}
(1) × S¶
|
{z
}
(2) [SNOM] (1) S# S1(2) S# SNOM ZONA CIUDAD
S1 Salazar 20 Londres
(3) SNOM Salazar
Expresi´
on:
Buscar el nombre de los proveedores que suministran al
menos todas las piezas suministradas por S2
µ
SP[S#,P#] ÷ ( ( SP WHERE S#=’S2’ ) [P #] )¶
× S
[SNOM] (1) S# P# S1 P1 S1 P2 S1 P3 S1 P4 S1 P5 S1 P6 S2 P1 S2 P2 S3 P3 S4 P2 S4 P4 S4 P5 (2) P# P1 P2 (3) S# S1(4) S# SNOM ZONA CIUDAD
Buscar el nombre de los proveedores que no suministran
la pieza P2
( ( S[S#] - ( SP WHERE P#=’P2’ ) [S#] ) × S ) [SNOM] (1) S# S1 S2 S3 S4 S5 (2) S# P# CANT S1 P2 200 S2 P2 400 S4 P2 200 (3) S# S3 S5(4) S# SNOM ZONA CIUDAD
S3 Bernal 10 Paris
Encontrar todas las parejas de n´
umeros de proveedores
tales que est´
en en la misma ciudad
( S RENAME S# AS PRIMER ) [PRIMER,CIUDAD]
×
( S RENAME S# AS SEGON ) [SEGON,CIUDAD]
WHERE PRIMER < SEGON
[PRIMER,SEGON](1) PRIMER SNOM ZONA CIUDAD
S1 Salazar 20 Londres S2 Jaime 10 Paris S3 Bernal 10 Paris S4 Corona 20 Londres S5 Aldana 30 Atenas (2) PRIMER CIUDAD S1 Londres S2 Paris S3 Paris S4 Londres S5 Atenas
(3) SEGON SNOM ZONA CIUDAD S1 Salazar 20 Londres S2 Jaime 10 Paris S3 Bernal 10 Paris S4 Corona 20 Londres S5 Aldana 30 Atenas (4) SEGON CIUDAD S1 Londres S2 Paris S3 Paris S4 Londres S5 Atenas
(5) PRIMER CIUDAD SEGON
S1 Londres S1 S1 Londres S4 S4 Londres S1 S4 Londres S4 S2 Paris S2 S2 Paris S3 S3 Paris S2 S3 Paris S3 S5 Atenas S5 (6) PRIMER SEGON S1 S4 S2 S3
REGLAS DE HERENCIA DE CLAVE
PRIMARIA
Componentes de una relaci´
on:
• Cabecera
• Cuerpo
• CLAVE PRIMARIA
Como queda la clave primaria de las relaciones
obtenidas como resultado de las expresiones?
↓
Dadas R
1, R
2, dos relaciones con claves primarias C
1, C
2respectivamente, y siendo A los atributos comunes a
C
1, C
2,
sea R
tla relaci´
on resultante de operar R
1(si la operaci´
on
es unaria– R
t= ∗ R
1) o R
1con R
2(si la operaci´
on es
binaria– R
t= R
1∗ R
2), con C
tcomo clave primaria,
en funci´
on del tipo de operaci´
on ∗, la clave primaria C
tser´
a:
• UNI ´ON: Ct = C1 ´o Ct = C2 (pues C1 = C2)
• INTERSECCI ´ON: Ct = C1 ´o Ct = C2 (pues C1 = C2)
• DIFERENCIA: Ct = C1 ´o Ct = C2 (pues C1 = C2)
• PRODUCTO CARTESIANO: Ct = C1C2
Producto cartesiano es producto-compatible
⇓ C1, C2 disjuntos ⇓ A = ∅
• RESTRICCI ´ON: Ct = C1
• PROYECCI ´ON: Dos opciones:
– Ct = C1 ⇒ si los atributos de la proyecci´contienen todos los atributos deon la clave primaria de R1.
– Ct = cabecera(Rt), en cualquier otro caso.
• JOIN NATURAL: Ct = (C1 ∪ C2) eliminando atributos
du-plicados.
• DIVISI ´ON: Considerando R1(X, Y ) ÷ R2(Y ), pueden haber
dos opciones:
– Ct = C1 ⇒ si C1 ⊂ X
– Ct = cabecera(Rt), en cualquier otro caso.
• RENAME: Atributos que formaban la clave primaria siguen
Operadores de CODD: No constituyen un conjunto
m´ınimo.
Cinco operadores primitivos:
1. Uni´on 2. Diferencia 3. Producto 4. Proyecci´on 5. Restricci´on
Tres operadores NO primitivos:
1. JOIN:
A(X, Y ) × B(X, Z) =
((A × (B RENAME X AS W )) WHERE X = W )[X, Y, Z]
2. INTERSECCI ´ON:
A(X) ∩ B(X) =
((A × (B RENAME X AS W )) WHERE X = W )[X]
3. DIVISI ´ON:
R(X, Y ) ÷ S(X) = R[Y ] − ((S × R[Y ]) − R)[Y ]