Sunteți pe pagina 1din 59

lgebra Relacional

Universidad de los Andes


Demin Gutierrez
Mayo 2010
1
Lenguajes de Consulta

Una consulta es
bsicamente una
pregunta sobre un Todos los autos marca Ford...
hecho en (Lenguaje de consulta)
particular que
puede o no existir
en la BD placa marca
MBO34L Ford
a
sult LDA75K Toyota
n
Co
ADA89A Fiat
LBF78G Toyota
XSA67D Ford

La consulta
se realiza
sobre las
relaciones de
Usuario la BD
Aplicacin
Otros...
Re
su Base de Datos
lta
El resultado de do Relacional
placa marca
una consulta es MBO34L Ford
una coleccin de XSA67D Ford
registros de la BD
(Una Relacin)
2
Tipos de Lenguajes de Consulta

Son lenguajes que utilizan los usuarios para


solicitar informacin a la BD

Hay de dos tipos Estas son las


bases de los
lenguajes de
Procedimentales consulta
comerciales
No-procedimentales

Lenguajes puros
Clculo relacional de tuplas (N/P)
Clculo relacional de dominios (N/P)
lgebra relacional (P)
3
Tipos de Lenguajes de Consulta

Lenguajes comerciales
SEQUEL
QBE (N/P)
SQL (P + N/P)
OQL (P + N/P) (Y todos los [Object Oriented]QL)
...entre otros

El estndar de facto usado hoy en da en la


industria es el SQL, aunque con la incursin de
los SGBDOO, ORMs y tecnologas similares el
OQL y sus distintas alternativas y variantes son
tambin bastante utilizados 4
Clculo Relacional de Tuplas

Es un lenguaje de consulta formal que permite


expresar las consultas a partir de frmulas
bien formadas, donde las variables son
interpretadas como variantes sobre las tuplas
de las tablas. Fue presentado por Codd en
1972 y se deduce del Clculo de Predicados

Una consulta en CRT es una expresin de tipo:


{t,e,x | C(t,e,x)}
Donde t,e,x son variables de tuplas y C(t,e,x) es
una expresin condicional donde intervienen t,e,x
5
Clculo Relacional de Tuplas

tomos:
Las variables estn asociadas a las tuplas de las tablas y se
denota como relacin(variable). Ej: Modelo(M).
Los valores constantes estn asociados a los valores de los
dominios de los atributos y las funciones generadoras de los
mismos se denotan como variable.atributo. Ej: M.marca
Los predicados utilizados se construyen con los operadores de
comparacin {<, , >, , =, } y constantes.
Ejm: M.marca fiat.

A modo informativo
6
Clculo Relacional de Tuplas

Una frmula bien formada se define como:


Todo tomo es una frmula bien formada F.
Si F1 y F2 son frmulas bien formadas, entonces F1 and
F2, F1 or F2, not F1 o not F2 son frmula bien formada.
F1 es una frmula bien formada (Cuantificador
existencial, se lee, existe un...).
F1 es una frmula bien formada (Cuantificador
universal, se lee, para todo ...).

A modo informativo
7
Clculo Relacional de Tuplas

Ejemplo 1: Obtener la fecha de nacimiento y la


direccin del empleado (o empleados) cuyo
nombre es 'Pedro Prez':

Empleado(Cdula, Nombre, Apellido FechaN, Direccin)

{e.FechaN, e.Direccin | Empleado(e) and


e.Nombre = 'Pedro' and e.Apellido = 'Prez'}

8
Clculo Relacional de Tuplas

Ejemplo 2: Obtener el nombre y la direccin de


todos los empleados que trabajan para el
departamento 'Investigacin')

Empleado(Cdula, Nombre, Apellido FechaN, Direccin, NumDpto)


Dpto(NumDpto, NomDpto)

{e.Nombre, e.Direccin | Empleado(e) and (d)


(Dpto(d) and e.NumDpto = d.NumDpto and
d.NomDpto = 'Investigacin')} 9
Clculo Relacional de Tuplas

Es un lenguaje de consulta formal que


permite expresar las consultas a partir de
frmulas bien formadas, donde cada
variable se interpreta como variante
sobre el dominio del atributo de una
relacin.
Es similar al Clculo Relacional de
Tuplas y tambin se deduce del clculo
de predicados

10
Clculo Relacional de Dominios

Las variables estn asociadas a los dominios de los


atributos y se denota como
relacin(att1: variable1, att2: variable2, ... )
Ejm: ModeloCarro(modelo: m, marca: c)

los predicados utilizados se construyen igual que


para el clculo relacional de tuplas

11
Clculo Relacional de Tuplas

Ejemplo 1: Obtener el nombre y el color de


cada producto en almacn:

Producto(nroPro, nombrePro, cantidad, color)

{N, C | Producto(nombrePro: N, color: C,


cantidad > 0)}

El resultado, a diferencia del CRT son variables


12
Clculo Relacional de Tuplas

Ejemplo 2: Obtener los clientes que han comprado al


menos un producto de color verde:

Producto(nroPro, nombrePro, cantidad, color)


Venta(nroVen, fechaVen, nombreCliente, nroProVen, cantidadVen)

{ V, P | NP Venta(nombreCliente: V, nroProVen:
NP) and Producto(nroPro: NP, nombrePro: P, color =
verde) }
Se produce producto por medio de la variable NP
13
lgebra Relacional

Es un conjunto de operaciones que describen


paso a paso (procedimental) la forma de
transformar una serie de relaciones en otras
para as obtener una respuesta a una consulta
R2 = Operacin1 (R1)
R3 = Operacin2 (R2)
R5 = Operacin2 (R3, R4)
...

Una operacin de AR toma una serie de


relaciones de entrada y genera una relacin
de salida
14
lgebra Relacional (Operaciones)

Reunin Producto Reunin


Natural Cartesiano Externa
R |x|a,b Q RxQ RQ

Interseccin Unin Unin


RQ RQ Externa

Operacin Seleccin Funciones


Asignacin a,b(R) Agregadas

Divisin Proyeccin
a,b(R) Otras...
RQ

Diferencia
Conjunto completo
R-Q
de operaciones del
lgebra relacional
15
Proyeccin

placa, marca(Carro)
marca,modelo,color(Carro)

Carro placa marca modelo color


MBO34L Ford Ka verde
LDA75K Toyota corollaXL blanco
ADA89A Fiat siena gris Se eliminan todas
LBF78G Toyota corollaXL blanco salvo una de las
XSA67D Ford Ka rojo tuplas repetidas
(Ej, <Toyota,
corollaXL, blanco>)

R placa marca
Q marca modelo color
MBO34L Ford
Ford Ka verde
LDA75K Toyota
Fiat siena gris
ADA89A Fiat
Toyota corollaXL blanco
LBF78G Toyota
Ford Ka rojo
XSA67D Ford 16
Proyeccin

Todas las tuplas, pero no completas, slo se


seleccionan algunas columnas...
R'
R
rombos(R)

Se eliminan
todas las tuplas
duplicadas

17
Producto Cartesiano

Carro = R x Q
R placa marca Q marca modelo color
ADA89A Fiat Fiat siena gris
LBF78G Toyota Toyota corollaXL blanco
XSA67D Ford Ford Ka rojo

Carro placa marcaR marcaQ modelo color


ADA89A Fiat Fiat siena gris
ADA89A Fiat Toyota corollaXL blanco
No es relevante ADA89A Fiat Ford Ka rojo
para el producto LBF78G Toyota Fiat siena gris
cartesiano, pero es LBF78G Toyota Toyota corollaXL blanco
notable, que en LBF78G Toyota Ford Ka rojo
algunas tuplas XSA67D Ford Fiat siena gris
marcaR = marcaQ XSA67D Ford Toyota corollaXL blanco
18
XSA67D Ford Ford Ka rojo
Producto Cartesiano

Cada tupla de uno de los conjuntos se


combina con todas las tuplas del otro conjunto

R Q R'


R'=R x Q







19
Seleccin

R = marca=Ford(Carro)
Carro placa marca color
MBO34L Ford verde
R placa marca color
LDA75K Toyota blanco
MBO34L Ford verde
ADA89A Fiat gris
XSA67D Ford rojo
LBF78G Toyota blanco
XSA67D Ford rojo

R = marca=Ford color=rojo(Carro)

Carro placa marca color


MBO34L Ford verde
LDA75K Toyota blanco R placa marca color
ADA89A Fiat gris XSA67D Ford rojo
LBF78G Toyota blanco
XSA67D Ford rojo 20
Seleccin

Se seleccionan slo las tuplas que cumplen


una condicin dada

R R'


rombo=negro(R)

21
Producto / Reunin Natural

Carro=R|x|marcaQ

R placa marca Q marca modelo color


MBO34L Ford Ford Ka verde
LDA75K Toyota Toyota corollaXL blanco
ADA89A Fiat Fiat siena gris
LBF78G Toyota Toyota corollaXL blanco
XSA67D Ford Ford Ka rojo

Sin embargo aqu


se perdi
informacin
(Descomposicin
con prdida) Carro placa marca modelo color
MBO34L Ford Ka verde
MBO34L Ford Ka rojo
LDA75K Toyota corollaXL blanco
Carro = (R.marca=Q.marca)(R x Q) ADA89A Fiat siena gris
LBF78G Toyota corollaXL blanco
o bien:
XSA67D Ford Ka verde
Carro = R |x| Q XSA67D Ford Ka rojo 22
Producto / Reunin Natural

Producto cartesiano con condicin de


igualdad, se combinan solo las tuplas con
valores iguales en ciertos atributos

R Q R'


R'=R crculo Q

23
Unin

R=EP

E Cdula Nombre P Cdula Nombre


9.644.667 Pedro Prez 8.347.223 Hector Redondo
10.133.212 Gabriel Mendoza 9.644.667 Pedro Prez
11.332.334 Luis Colina 10.133.212 Gabriel Mendoza
12.562.884 Andrs Rojas 11.332.334 Luis Colina
20.126.112 Gilberto Zapata 12.123.231 Diego Dvila

R Cdula Nombre
8.347.223 Hector Redondo
9.644.667 Pedro Prez
Las relaciones
Se realiza una usadas como
operacin de unin 10.133.212 Gabriel Mendoza
operandos deben
de conjuntos. Se 11.332.334 Luis Colina
ser compatibles
eliminan las tuplas 12.123.231 Diego Dvila entre si
repetidas 12.562.884 Andrs Rojas
20.126.112 Gilberto Zapata 24
Unin

Todas las tuplas de ambas relaciones (que


deben ser compatibles)

R Q R'
R'=R Q

Se eliminan
todas las tuplas
duplicadas
25
Interseccin

R=EP

E Cdula Nombre P Cdula Nombre


9.644.667 Pedro Prez 8.347.223 Hector Redondo
10.133.212 Gabriel Mendoza 9.644.667 Pedro Prez
11.332.334 Luis Colina 10.133.212 Gabriel Mendoza
12.562.884 Andrs Rojas 11.332.334 Luis Colina
20.126.112 Gilberto Zapata 12.123.231 Diego Dvila

Las relaciones
R Cdula Nombre usadas como
9.644.667 Pedro Prez operandos deben
10.133.212 Gabriel Mendoza ser compatibles
11.332.334 Luis Colina entre si

26
Interseccin

Slo las tuplas comunes a ambas relaciones


(que deben ser compatibles)

R Q R'
R'=R Q

27
Diferencia

R=E-P

E Cdula Nombre P Cdula Nombre


9.644.667 Pedro Prez 8.347.223 Hector Redondo
10.133.212 Gabriel Mendoza 9.644.667 Pedro Prez
11.332.334 Luis Colina 10.133.212 Gabriel Mendoza
12.562.884 Andrs Rojas 11.332.334 Luis Colina
20.126.112 Gilberto Zapata 12.123.231 Diego Dvila

Las relaciones
R Cdula Nombre usadas como
12.562.884 Andrs Rojas operandos deben
20.126.112 Gilberto Zapata ser compatibles
entre si

Cmo sera P E? 28
Diferencia

Tuplas que aparecen en la primera relacin


pero no en la segunda

R Q R'
R'=R - Q

Cmo sera Q R? 29
Divisin

Supongamos que tenemos dos


relaciones A(x, y) y B(y) donde el
dominio de y en A y B, es el mismo.

El operador divisin A B retorna todos


los distintos valores de x tales que para
todo valor y en B existe una tupla <x,
y> en A

30
Divisin

R=EM M'

M Materia Semestre
BD 8 M' Materia
IS 8 LC
LC 9 M'=materia(semestre=9(M)) SO
SO 9

Luego...
EM Cdula Materia
9.644.667 BD
9.644.667 IS
10.133.212 LC R Cdula
10.133.212 BD 10.133.212
10.133.212 SO 11.332.334
11.332.334 LC R=EM M'
11.332.334 SO
12.562.884 LC
12.562.884 BD 31
Divisin

Tuplas de la primera que contienen a todas o


alguna de las tuplas de la segunda

R Q R'
R'=R Q


32
Producto / Reunin Externa

R = Prof cdula=ced_jefeDpto
Reunin Natural

Profesor Cdula NombreP CodigoDpto Dpto Cdigo NombreD CdJefe


6.274.445 Jos Mendez 01 01 Computacin 6.274.445
7.422.114 Jun Zapata 01 02 Investigacin
8.347.223 Hector Redondo 02 03 Control 12.123.231
9.644.667 Pedro Prez 02
11.332.334 Luis Colina
12.123.231 Diego Dvila 03

R Cdula NombreP CdigoDpto Cdigo NombreD CdJefe


6.274.445 Jos Mendez 01 01 Computacin 6.274.445
12.123.231 Diego Dvila 03 03 Control 12.123.231

Dnde estn los dems profesores?


Dnde est el departamento de Investigacin?
33
Producto / Reunin Externa

R = Prof cdula=ced_jefeDpto
Reunin Izquierda

Profesor Cdula NombreP CodigoDpto Dpto Cdigo NombreD CdJefe


6.274.445 Jos Mendez 01 01 Computacin 6.274.445
7.422.114 Jun Zapata 01 02 Investigacin NULO
8.347.223 Hector Redondo 02 03 Control 12.123.231
9.644.667 Pedro Prez 02
11.332.334 Luis Colina NULO
12.123.231 Diego Dvila 03

R Cdula NombreP CdigoDpto Cdigo NombreD CdJefe


6.274.445 Jos Mendez 01 01 Computacin 6.274.445
7.422.114 Jun Zapata 01 NULO NULO NULO
8.347.223 Hector Redondo 02 NULO NULO NULO
9.644.667 Pedro Prez 02 NULO NULO NULO
11.332.334 Luis Colina NULO NULO NULO
12.123.231 Diego Dvila 03 03 Control 12.123.231
34
Producto / Reunin Externa

R = Dpto cdula=ced_jefeProf
Reunin Derecha

Dpto Cdigo NombreD CdJefe Profesor Cdula NombreP CodigoDpto


01 Computacin 6.274.445 6.274.445 Jos Mendez 01
02 Investigacin NULO 7.422.114 Jun Zapata 01
03 Control 12.123.231 8.347.223 Hector Redondo 02
9.644.667 Pedro Prez 02
Es la misma relacin resultante 11.332.334 Luis Colina NULO
que la de la transparencia anterior? 12.123.231 Diego Dvila 03

R Cdigo NombreD CdJefe Cdula NombreP CdigoDpto


01 Computacin 6.274.445 6.274.445 Jos Mendez 01
NULO NULO NULO 7.422.114 Jun Zapata 01
NULO NULO NULO 8.347.223 Hector Redondo 02
NULO NULO NULO 9.644.667 Pedro Prez 02
NULO NULO NULO 11.332.334 Luis Colina
03 Control 12.123.231 12.123.231 Diego Dvila 03
35
Producto / Reunin Externa

R = Dpto cdula=ced_jefeProf

Dpto Cdigo NombreD CdJefe Profesor Cdula NombreP CodigoDpto


01 Computacin 6.274.445 6.274.445 Jos Mendez 01
02 Investigacin NULO 7.422.114 Jun Zapata 01
03 Control 12.123.231 8.347.223 Hector Redondo 02
9.644.667 Pedro Prez 02
11.332.334 Luis Colina NULO
12.123.231 Diego Dvila 03

R Cdigo NombreD CdJefe Cdula NombreP CdigoDpto


01 Computacin 6.274.445 6.274.445 Jos Mendez 01
02 Investigacin NULO NULO NULO NULO
03 Control 12.123.231 12.123.231 Diego Dvila 03

36
Producto / Reunin Externa

R = Prof cdula=ced_jefeDpto

Profesor Cdula NombreP CodigoDpto Dpto Cdigo NombreD CdJefe


6.274.445 Jos Mendez 01 01 Computacin 6.274.445
7.422.114 Jun Zapata 01 02 Investigacin NULO
8.347.223 Hector Redondo 02 03 Control 12.123.231
9.644.667 Pedro Prez 02
11.332.334 Luis Colina NULO
12.123.231 Diego Dvila 03

R Cdula NombreP CdigoDpto Cdigo NombreD CdJefe


6.274.445 Jos Mendez 01 01 Computacin 6.274.445
NULO NULO NULO 02 Investigacin NULO
12.123.231 Diego Dvila 03 03 Control 12.123.231

37
Producto / Reunin Externa

R = nombreP=NULO (Dpto cdula=ced_jefeProf)

Dpto Cdigo NombreD CdJefe Profesor Cdula NombreP CodigoDpto


01 Computacin 6.274.445 6.274.445 Jos Mendez 01
02 Investigacin NULO 7.422.114 Jun Zapata 01
03 Control 12.123.231 8.347.223 Hector Redondo 02
9.644.667 Pedro Prez 02
11.332.334 Luis Colina NULO
12.123.231 Diego Dvila 03

R Cdigo NombreD CdJefe Cdula NombreP CdigoDpto


02 Investigacin NULO NULO NULO NULO

Cules son los departamentos sin Jefe de


Departamento?
38
Producto / Reunin Externa

R = Dpto cdula=ced_jefeProf
Reunin Abierta
Dpto Cdigo NombreD CdJefe Profesor Cdula NombreP CodigoDpto
01 Computacin 6.274.445 6.274.445 Jos Mendez 01
02 Investigacin NULO 7.422.114 Jun Zapata 01
03 Control 12.123.231 8.347.223 Hector Redondo 02
9.644.667 Pedro Prez 02
11.332.334 Luis Colina NULO
12.123.231 Diego Dvila 03

R Cdigo NombreD CdJefe Cdula NombreP CdigoDpto


01 Computacin 6.274.445 6.274.445 Jos Mendez 01
NULO NULO NULO 7.422.114 Jun Zapata 01
NULO NULO NULO 8.347.223 Hector Redondo 02
NULO NULO NULO 9.644.667 Pedro Prez 02
NULO NULO NULO 11.332.334 Luis Colina
02 Investigacin NULO NULO NULO NULO
03 Control 12.123.231 12.123.231 Diego Dvila 03 39
Reunin Externa

Si algunas tuplas de la izquierda no tienen


pareja en la derecha, entonces se rellena con
valores nulos
R Q R'

R'=R crculo Q

null

En este caso se est haciendo una


reunin externa izquierda (), pero
se puede hacer tambin una reunin
externa derecha () y una reunin
externa completa () 40
Agrupacin (y Funciones Agregadas)

R= nacionalidad
avg(edad), count(P)

P Nombre Nacionalidad Edad


Pedro Venezuela 45
Gabriel Venezuela 20 Posibles funciones de
Luis Argentina 33 agregacin: avg,
Andrs Colombia 20 sum, max, min,
Miguel Argentina 23 count, entre otras
Luis Peru 34
Gilberto Colombia 15

Se agrupan los datos


usando algn tipo de
criterio y luego se
R Nacionalidad AVG(Edad) Count
calculan funciones sobre
los datos agrupados Venezuela 32,5 2
Argentina 28 2
Colombia 17,5 2
Peru 34 1 41
Agrupacin (y Funciones Agregadas)

Se agrupan las tuplas en base al valor de


cierto atributo y luego se pueden calcular
funciones sobre atributos de las tuplas
agrupadas

R R'

R= crculo
count(R) 1 2

42
Ejemplos de lgebra Relacional

Esquema de Ejemplo:
Empleado
NombreP Inic Apellido Ced FechaN Direccin Sexo Salario CedSuper ND

Departamento Lugares_Deptos
NombreD NmeroD CedGte FechaInicGte NumeroD LugarD

Proyecto Trabaja_En
NombreP NmeroP LugarP ND Ced NmP Horas

Dependiente
CdEmp NombreDep Sexo FechaN Parentesco
43
Ejemplos de lgebra Relacional

Esquema de Ejemplo:

44
Ejemplos de lgebra Relacional

TODO: Preguntas!!!

45
TODO: Falta:
Ejercicios de lgebra Relacional

46
Lenguaje de Consultas QBE

Presentado por Zloff en el ao 1977 y


comercializado desde 1980 por IBM.
Es un lenguaje de manipulacin de datos
grfico.
La idea de su construccin es la formulacin
de la consulta mediante un ejemplo de la
posible respuesta.
Est basado en el Clculo Relacional de
Dominios. 47
Lenguaje de Consultas QBE

Las consultas se realizan invocando los esquemas de


las tablas objeto de la consulta, las cuales sern
desplegadas en forma grfica en la pantalla. Una vez
obtenidas, se posiciona el ratn en la o las columnas
deseadas y se indica la operacin a realizar.

Producto nroPro nombrePro cantidad color

Producto nroPro nombrePro cantidad color


U. _np _c rojo
_np _c+100 48
Lenguaje de Consultas QBE

Las variables se indican con el smbolo de subrayado


como prefijo, ejemplo: _s, _3, _d5, o se subrayan,
ejemplo: s, 3, d5.
Las constantes se colocan directamente en la
columna deseada precedidas por el operador de
comparacin deseado, si no es =.
Toda variable desplegable est cuantificada
implcitamente por el cuantificador existencial
Todas las operaciones deben tener como sufijo un
punto (Ver tabla siguiente) 49
Lenguaje de Consultas QBE

Operacin QBE
Desplegar o seleccionar P.
Condiciones adicionales
Cuantificador universal ALL. se expresan en una
Contar CNT. ventana aparte, en
Promedio AVG. algunos SGBD. Las
Suma SUM. funciones cnt, avg,
Calcular el valor mnimo MIN. sum, min y max deben
Calcular el valor mximo MAX. aplicarse a variables
Agrupar tuplas G. precedidas con ALL. Si
Ordenar en orden ascendente AO. no se desean eliminar
Ordenar en orden descendente DO.
las tuplas dobles en una
Negacin lgica
proyeccin, se coloca
Disyuncin lgica OR
Conjuncin lgica AND P.ALL._v
50
Lenguaje de Consultas QBE

Esquema de Ejemplo:

Producto(nroPro, nombrePro, cantidad, color)

Venta(nroVen, fechaVen, nombreCliente,


nroProVen, cantidadVen)

Compra(nroCom, fechaCom, nombreProveedor,


nroProCom, cantidadComp)

51
Procesamiento de Consultas
(Lo Bsico)

Anlisis
Lxico UPDATE departamento
(separar en SET nombre='Control'
tokens)
WHERE codigo=1
Anlisis
Sintctico
y Validacin

Optimizador
de
Consultas

SELECT nombre, cedula


Procesamiento
FROM persona de la
WHERE cedula='12.343.223' Consulta en la
BD
52
Procesamiento de Consultas
(Lo Bsico)

Cascada de
c1 and c2 and c3(R) = c1(c2(c3(R)))

Conmutatividad de
c1(c2(R)) = c2(c1(R))

Cascada de (se ignoran todas menos la ltima)


lista1(lista2(lista3(R))) = lista1

Conmutacin de con
lista(c1(R)) = c1(lista(R))

Conmutatividad de |x| o
R1cR2 = R2cR1
53
Procesamiento de Consultas
(Lo Bsico)

Proyecto (numeroPR, nombrePR, descripcion)

Empleado (cedula, nombre, apellido, fecha_nac)

Trabaja_En (cedulaEMP, numPR, horas, categoria)

apellido, nombrePR(
numeroPR=numPR AND cedulaEMP=cedula AND
nombrePR='Acuario' AND horas < 20
(
Empleado|x| Trabaja_En |x|Proyecto))

54
Optimizacin de Consultas


apellido, nombrePR

numeroPR=numPR AND
cedulaEMP=cedula AND
nombrePR='Acuario' AND
horas < 20

Empleado Trabaja_En Proyecto

55
Optimizacin de Consultas


apellido, nombrePR


numeroPR=numPR


cedulaEMP=cedula


nombrePR='Acuario'


horas < 20
X

Empleado Trabaja_En Proyecto


56
Optimizacin de Consultas


apellido, nombrePR


cedulaEMP=cedula


numeroPR=numPR

X

horas < 20 nombrePR='Acuario'
Empleado Trabaja_En Proyecto
57
Optimizacin de Consultas


apellido, nombrePR


cedulaEMP=cedula

X
numeroPR=numPR
cedulaEMP,
nombrePR

X

cedula, horas < 20 nombrePR='Acuario'
apellido
cedulaEMP,
numeroPR,

numPR, horas nombrePR
Empleado Trabaja_En Proyecto
58
Gracias

Gracias!

59

S-ar putea să vă placă și