BASES DE DATOS INCO - 1992 SOLUCION - PRACTICO 4
Maria AguirreApuntes11 de Diciembre de 2018
6.511 Palabras (27 Páginas)191 Visitas
BASES DE DATOS INCO - 1992
SOLUCION - PRACTICO 4
EJERCICIO 1.
PRV(#PROV, NOM_PROV, CATEGORIA, CIUDAD_PROV)
PRT(#PAR, NOM_PAR, COLOR, PESO, CIUDAD_PAR)
PRY(#PROY, NOM_PROY, CIUDAD_PROY)
PPC(#PROV, #PAR, #PROY, CANTIDAD)
a)
2. Numero de proveedores que proveen al proyecto de numero 1 alguna parte roja.
R(x) :- PPC(x,p,"1",u), PRT(p,n,"roja",a,c).
R = ã ((å PPC) |><| (å PRT))
#prov #proy="1" color="roja"
3. Los numeros de los proyectos que proveen con partes rojas a algun
proyecto de Londres o alguno de Paris.
R(x) :- PPC(x,y,z,c), PRT(y,n,ROJO,pe,ci), PRY(z,np,LONDRES)
R(x) :- PPC(x,y,z,c), PRT(y,n,ROJO,pe,ci), PRY(z,np,PARIS)
R = ã (PPC |><| (å (PRT))|><| (å (PRY))
$1 $3=ROJO $3 = LONDRES
U
ã (PPC |><| (å (PRT)) |><| (å (PRY))
$1 $3=ROJO $3 = PARIS
b)
1. Los numeros de los proveedores para aquellos que proveen a los proyectos de
numero 1 y 2.
{ t / (]-u)(PPC(u) /\ t[1] = u[1] /\ u[3] = 1) /\
(]-v)(PPC(v) /\ t[1] = v[1] /\ v[3] = 2)
}
2. Los numeros de proveedores que proveen al proyecto de numero 1 alguna parte
roja.
{ t / (]-u)(PPC(u) /\ u[1] = t[1] /\ u[3]=1 /\
(]-v)(PRT(v) /\ u[2] = v[1] /\ v[3] = rojo
)
)
}
3. Los numeros de proveedores que proveen con partes rojas a algun proyecto de
Londres o alguno de Paris.
{ t / (]-u)(PPC(u) /\ u[1] = t[1] /\
(]-v)(PRY(v) /\ v[1] = u[3] /\
(v[3] = LONDRES \/ v[3] = PARIS)
/\ (]-w)(PRT(w) /\ u[2] = w[1] /\ w[3] = ROJO
)
)
)
}
_s
4. Dar las parejas de ciudades, tales que un proveedor de la primera provee a un
proyecto de la segunda.
{ t / (]-u)(PRV(u) /\ u[4] = t[1] /\
(]-v)(PPC(v) /\ v[1] = u[1] /\
(]-w)(PRY(w) /\ w[3] = t[2] /\ v[3] = w[1]
)
)
)
}
5. Dar todas las triplas (CIUDAD, #PAR, CIUDAD), donde un proveedor de la
primera ciudad provee con la parte especificada a un proyecto de la segunda
ciudad; con la condicion de que las ciudades no deben ser la misma.
{ t / (]-u)(PRV(u) /\ u[4] = t[1] /\
(]-v)(PPC(v) /\ v[1] = u[1] /\ v[2] = t[2] /\
(]-w)(PRY(w) /\ w[3] = t[3] /\ v[3] = w[1] /\ w[3] <> u[4]
)
)
)
}
6. Todos los numeros de partes tales que no hay otra parte con peso menor.
{ #P / (]-n)(]-c)(]-w1)(]-ci)(PRT(#P,n,c,w1,ci) /\
(@p)[(]-no)(]-co)(]-w2)(]-cit)
(PRT(p,no,co,w2,cit) --> w1 <= w2)
]
)
}
7. Dar los numeros de los proyectos provistos solamente por el proveedor de
numero 9.
{ t / (]-v)(PRY(v) /\ v[1] = t[1] /\
(]-u)(PPC(u) /\ u[1] = 9 /\ u[3] = v[1]
)
/\
~(]-w)(PPC(w) /\ w[3] = v[1] /\ u[1] <> w[1]
)
)
}
8. Nombre de los proveedores que proveen alguna parte (pero la misma) a todos
los proyectos.
{ t / (]-prv) (PRV(prv) /\ t[1] = prv[2] /\
(]-ppc) (PPC(ppc) /\ ppc[1] = prv[1] /\
(V-pry) (PRY(pry) -> (]-x) (PPC(x) /\ x[1] = prv[1] /\
/\ x[2] = ppc[2] /\ x[3] = pry[1]) )
)
) }
EJERCICIO 2.(Julio '87)
VIVE (NOMBRE_FUNCIONARIO, CIUDAD, CALLE)
TRABAJA (NOMBRE_FUNCIONARIO, EMPRESA, SUELDO)
UBICACION (EMPRESA, CIUDAD)
JEFE (NOMBRE_FUNCIONARIO, NOMBRE_JEFE)
_s
a) Encontrar los funcionarios que viven en la misma ciudad y calle que su jefe.
{ t / (]-f)(VIVE(f) /\ f[1] = t[1] /\
(]-j) (VIVE(j) /\ j[2] = f[2] /\ j[3] = f[3] /\
(]-je) (JEFE(je) /\ je[1] = f[1] /\ je[2] = j[1]
)
)
)
}
b) Encontrar los funcionarios que ganan mas que cualquier empleado del "S.M.I.".
{ t / {]-ta) (TRABAJA(ta) /\ ta[1] = t[1] /\
(V-o) (TRABAJA(o) /\ o[2] = "S.M.I" -->
ta[3] > o[3]
)
)
}
c) Asumiendo que una empresa puede estar en varias ciudades, dar las empresas
ubicadas en todas las ciudades en que esta "IN.CA.".
{ t / (]-e)(UBICACION(e) /\ e[1] = t[1] /\
(]-i)(UBICACION(i) /\ i[1] = "IN.CA." /\
(V-c)(UBICACION(c) /\ c[1] = "IN.CA" -->
(]-u)(UBICACION(u) /\ u[1] = e[1] /\
u[2] = c[2]
)
)
)
)
}
EJERCICIO 3. (Diciembre '87)
VUELOS(NRO_VUELO,CIUDAD_ORIGEN,CIUDAD_DESTINO,HORA_SAL,HORA_LLEG,DIST)
V_F (NRO_VUELO, FECHA, NRO_AVION, NRO_PILOTO)
AVION(NRO_AVION, TIPO_AVION, HORAS_VUELO)
PILOTOS(NRO_PILOTO, CANT_VUELOS)
a) Numeros de piloto con menos de 10 vuelos que pilotearon a todos los aviones
del tipo boing 737 de la compania.
{ t / (]-p) (PILOTOS(p) /\ p[1] = t[1] /\ p[2] < 10 /\
(V-a)(AVION(a) /\ a[2] = boing 737 -->
(]-v) (V-F(v) /\ v[3] = a[1] /\ v[4] = p[1]
)
)
)
}
b) Numeros de los pilotos con la maxima cantidad de vuelos.
{ t/ (]-u)(PILOTOS(u) /\ u[1] = t[1] /\
(V-v)(PILOTOS(v) --> u[2] >= v[2]
)
)
}
_s
c) Numero de los pilotos con mas de 30 vuelos que pilotearon solo aviones del
tipo DC-10.
{ t / (]-p) (PILOTOS(p) /\ p[1] = t[1] /\ p[2] > 30 /\
(V-v)(V-F(v) /\ v[4] = p[1] --->
(]-a)(AVION(a) /\ a[1] = v[3] /\ a[2] = DC-10
)
)
)
}
d) Ciudades tales que todo avion tipo boing 747 salio alguna vez de alli.
{ t / (]-v)(VUELOS(v) /\ v[2] = t[1] /\
(V-a)(AVION(a) /\ a[2] = Boing 747 --->
(]-vf)(]-vu)(V-F(vf) /\ VUELOS(v) /\ vf[3] = a[1]
vf[1] = vu[1] /\ vu[2] = v[2]
)
)
)
}
EJERCICIO 4 (Diciembre '87)
OBRAS (NRO_OBRA, DIRECTOR, TIPO_OBRA, FECHA_COMIENZO)
TRABAJA(NRO_OBRERO, NRO_OBRA, FECHA, COD_TAREA)
PERSONAL(NRO_OBRERO, NOM_OBRERO, ESPECIALIDAD)
TAREAS(COD_TAREA, DESCRIPCION, DURACION)
a) Dar las triplas (obra, cod_tarea, nro_obrero) tales que el obrero trabajo en
la obra pero no realizo (en dicha obra) la tarea mencionada; siendo la tarea una
de las efectivamente realizadas en la obra.
{ t / (]-ta)(TRABAJA(ta) /\ ta[2] = t[1] /\ ta[1] = t[3] /\
(]-o)(TRABAJA(o) /\ o[2] = ta[2] /\ o[4] = t[2] /\
~(]-p)(TRABAJA(p) /\ p[1] = ta[1] /\ p[2] = ta[2]
/\ o[4] = p[4]
)
)
)
}
b) Son los obreros que trabajaron en todas las obras que tienen como director a
AL GUT.
{ t / (V-u)(OBRAS(u) /\ u[2] = "AL GUT" -->
(]-v)(TRABAJA(v) /\ v[2] = u[1] /\ v[1] = t[1]
)
)
}
c) Obtiene los pares de obreros que trabajan en la misma obra y en la misma
tarea.
ã (å (TRABAJA |><| TRABAJA))
1,5 2=6 /\ 4=8 1 <> 5
EJERCICIO 5. (Diciembre '88)
LOCALES(#LOCAL, DIRECCION, CANTIDAD_MAQ, PROM_FICHAS, VALOR_FICHA)
MAQUINAS(#MAQUINA, #JUEGO, #LOCAL)
JUEGOS(#JUEGO, ORIGEN, TIPO)
...