BASES DE DATOS INCO - 1992 SOLUCION - PRACTICO 4
Enviado por Maria Aguirre • 11 de Diciembre de 2018 • Apuntes • 6.511 Palabras (27 Páginas) • 169 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]
...