• No se han encontrado resultados

TEMA 4 MODELO DE BASE DE DATOS RELACIONAL. 1. Introducción Estructura de Datos Reglas de Integridad... 24

N/A
N/A
Protected

Academic year: 2021

Share "TEMA 4 MODELO DE BASE DE DATOS RELACIONAL. 1. Introducción Estructura de Datos Reglas de Integridad... 24"

Copied!
110
0
0

Texto completo

(1)

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

(2)

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)

(3)

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

(4)

Estructura de Datos

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.

(5)

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 ) ;

(6)

TERMINOLOG´IA

RELACIONAL

INFORMAL

Relaci´

on

←→

Tabla

Tupla

←→

Fila o Registro

Cardinalidad

←→

umero de filas

Atributo

←→

Columna o campo

Grado

←→

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.

(7)

Conceptos relacionales:

• DOMINIO

• RELACI ´

ON

(8)

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

(9)

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

(10)

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).

(11)

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#),

(12)

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’

(13)

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

(14)

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

SELECT

FROM 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’;

(15)

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 any

2. Dominios booleanos (si/no,masculino/femenino)

(16)

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.

(17)

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

j

dominios 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.

(18)

RELACI ´

ON

Definici´

on: Una relaci´

on R se define sobre un conjunto

de dominios D

1

. . . D

n

y 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

(19)

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

(20)

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

(21)

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.

(22)

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.

(23)

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

(24)

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.

(25)

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.

(26)

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.

(27)

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:

(28)

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).

(29)

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’

(30)

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.

(31)

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.

(32)

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

(33)

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).

(34)

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 son

etiquetadas con la clave externa

(35)

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.

(36)

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

(37)

• 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

(38)

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

(39)

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

(40)

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.

(41)

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.

(42)

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

(43)

Observaciones:

• Posibilidades de tratamiento alternativos a RESTRICTED,

CASCADES y NULLIFIES (todo y que estas estrategias

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:

(44)

• Regla de clave externa CASCADES puede comportar

problemas

R3

−→

b

R2

−→

a

R1

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.

(45)

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

⇐⇒

alculo

Relacional

Relacional

(46)

´

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.

(47)

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

ALCULO DE PREDICADOS.

(48)

´

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.

(49)

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)

(50)

Operadores de CODD

Ocho operadores:

• Operadores de conjuntos (4)

(51)

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.

(52)

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.

(53)

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.

(54)

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

(55)

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

(56)

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?.

(57)

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 CARTESIANO

(58)

UNI ´

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

(59)

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

(60)

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

(61)

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.

(62)

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 P6

(63)

Uni´

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)

(64)

OPERADORES RELACIONALES

• RESTRICCI ´

ON

• PROJECCI ´

ON

• REUNI ´

ON (JOIN) NATURAL

(65)

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

(66)

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

(67)

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 300

(68)

PROJECCI ´

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.

(69)

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

(70)

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

i

son 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.

(71)

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:

(72)

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

(73)

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.

(74)

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))

(75)

(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

(76)

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]

(77)

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.

(78)

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)

(79)

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 400

Buscar los proveedores que producen piezas P2 y P4

simult´

aneamente

SP[S#,P#] ÷

(80)

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

(81)

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

(82)

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

(83)

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:

(84)

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

(85)

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

(86)

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

(87)

(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

(88)

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?

(89)

Dadas R

1

, R

2

, dos relaciones con claves primarias C

1

, C

2

respectivamente, y siendo A los atributos comunes a

C

1

, C

2

,

sea R

t

la relaci´

on resultante de operar R

1

(si la operaci´

on

es unaria– R

t

= ∗ R

1

) o R

1

con R

2

(si la operaci´

on es

binaria– R

t

= R

1

∗ R

2

), con C

t

como clave primaria,

en funci´

on del tipo de operaci´

on ∗, la clave primaria C

t

ser´

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 = ∅

(90)

• 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

(91)

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 ]

(92)

OPERADORES ADICIONALES

• AMPLIACI ´

ON (EXTENSI ´

ON)

• RESUMEN

• DIVISI ´

ON GENERAL

• JOIN EXTERN (OUTER JOIN)

Referencias

Documento similar

Fuente de emisión secundaria que afecta a la estación: Combustión en sector residencial y comercial Distancia a la primera vía de tráfico: 3 metros (15 m de ancho)..

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Además de aparecer en forma de volumen, las Memorias conocieron una primera difusión, a los tres meses de la muerte del autor, en las páginas de La Presse en forma de folletín,

•cero que suplo con arreglo á lo que dice el autor en el Prólogo de su obra impresa: «Ya estaba estendida esta Noticia, año de 1750; y pareció forzo- so detener su impresión

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

Después de una descripción muy rápida de la optimización así como los problemas en los sistemas de fabricación, se presenta la integración de dos herramientas existentes

por unidad de tiempo (throughput) en estado estacionario de las transiciones.. de una red de Petri

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas