Diferencia entre revisiones de «Práctica de Lenguajes de Consulta (Bases de Datos)»
Línea 409: | Línea 409: | ||
(SELECT codigo_e, count(codigo_m) as inscriptos FROM Participa GROUP BY codigo_E) ev | (SELECT codigo_e, count(codigo_m) as inscriptos FROM Participa GROUP BY codigo_E) ev | ||
ON ev.codigo_E = e.Codigo_E | ON ev.codigo_E = e.Codigo_E | ||
WHERE e.cupo_Minimo <= inscriptos | WHERE e.cupo_Minimo <= inscriptos AND Especialidad = "Medica" | ||
GROUP BY Localidad | GROUP BY Localidad | ||
*c | *c |
Revisión del 15:51 12 may 2009
Ejercicio 01
Dadas las relaciones R y S calcular:
Parte A
R U S
Respuesta
1 | 2 |
---|---|
a | b |
b | c |
c | b |
d | e |
e | a |
b | d |
Parte B
R - S
Respuesta
1 | 2 |
---|---|
a | b |
c | b |
d | e |
Parte C
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle R \times S}
Respuesta
A | B | ? | C |
---|---|---|---|
a | b | b | c |
a | b | e | a |
a | b | b | d |
b | c | b | c |
b | c | e | a |
b | c | b | d |
c | b | b | c |
c | b | e | a |
c | b | b | d |
d | e | b | c |
d | e | e | a |
d | e | b | d |
Parte D
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(V(2 \rightarrow B1,3 \rightarrow B2), R \times S)}
Respuesta
Idem c, pero (A B ? C) pasa a ser: (A B1 B2 C)
Parte E
R |X| S
Respuesta
A | B | C |
---|---|---|
a | b | c |
a | b | d |
c | b | c |
c | b | d |
d | e | a |
Parte F
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \pi_B(R)}
Respuesta
B |
---|
b |
c |
d |
e |
¿Puede ser que la 'd' no vaya?
Parte G
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \sigma_{A=C}(R \times S)}
Respuesta
A | B | ? | C |
---|---|---|---|
a | b | e | a |
c | b | b | c |
d | e | b | d |
Parte H
S / T
Respuesta
B |
---|
b |
Parte I
R |x| S (R.B<S.C)
Respuesta
A | B | C |
---|---|---|
a | b | c |
a | b | d |
c | b | c |
c | b | d |
Ejercicio 02
Considerando el siguiente esquema de una base de datos:
• FRECUENTA(Persona, Bar)
• SIRVE (Bar, Cerveza)
• GUSTA(Persona, Cerveza).
Expresar las siguientes consultas usando álgebra relacional (AR) sin usar funciones de agregación:
Expresar las mismas consultas usando cálculo relacional de tuplas (CRT) y cálculo relacional de dominios (CRD).
- a. Bares que sirven alguna cerveza que le guste a “Juan K.”
- b. Personas que frecuentan al menos un bar que sirve alguna cerveza que les guste.
- c. Personas que no frecuenten ningún bar que sirva una cerveza que les guste.
- d. Personas que frecuentan sólo bares que sirven alguna cerveza que les guste. (Asumir que cada persona gusta al menos de una cerveza y frecuenta al menos un bar).
- e. Personas que frecuentan todos los bares. (Asumir que todos los bares sirven al menos una cerveza).
a.
AR: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \Pi_{bar}((\sigma_{persona \ = \ Juan \ K.}(Gusta) \ join \ Sirve))}
CRT: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \{R \ | \ \exist G \ \in \ Gusta \ \exist S \ \in \ Sirve (G.persona \ = \ Juan \ K. \ \and \ G.cerveza = S.cerveza \ \and \ R.bar = S.bar)\}}
CRD: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle }
b.
AR: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \Pi_{1}(\sigma_{1 \ = \ 5 \ \and \ 2 \ = \ 3 \ \and \ 4 \ = \ 6}(Frecuenta \times Sirve \times Gusta))}
CRT: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \{R \ | \ \exist G \ \in \ Gusta \ \exist S \ \in \ Sirve \ \exist F \ \in \ Frecuenta} Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle (G.persona \ = \ R.persona \ \and \ G.cerveza = S.cerveza \ \and \ F.bar = S.bar \ \and \ F.persona \ = \ G.persona)\}}
CRD: Completar.
c.
AR: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle (\Pi_{persona}(Frecuenta) \ \bigcup \ \Pi_{persona}(Gusta)) - ejercicio\ b}
CRT: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle }
CRD: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle }
d.
AR: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(PB\_Gustan, \Pi_{persona, bar}(join(Frecuenta \ \times \ Sirve \ \times \ Gusta)))}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \Pi{persona}(Frecuenta) - \Pi{persona}(Frecuenta - \ PB\_Gustan)}
CRT: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle }
CRD: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle }
e.
AR: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \Pi_{persona}(Frecuenta \ \div \ \Pi_{bar}(Sirve))}
CRT: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle }
CRD: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle }
Ejercicio 03
(Revisar)
- REN (Alumnas, SEL{a.sexo='F' && a.edad>21}(Alumno a))
- REN (Materias, SEL{c.desc='cs. comp' && p.nombre<>'Jeff Ullman'}(Materia m |x| Plan pl |x| Carrera c |x| Dicta d |x| Profesor p) )
- PRY{nombre}( (Alumnas |x| Cursa) / Materias )
Ejercicio 04
Ejercicio 05
Ejercicio 06
Ejercicio 07
- a
SELECT c.*,SUM(o.cantidad) FROM clientes c INNER JOIN ordenes o ON o.nombc=c.nombc GROUP BY c.nombc
- b
SELECT p.nombre_proveedor FROM proveedores p INNER JOIN ordenes o ON o.item=p.item GROUP BY p.nombre_proveedor HAVING 2000 < SUM(o.cantidad)
- c
SELECT c.nombc FROM clientes INNER JOIN ordenes o ON o.nombc=c.nombc WHERE 15 < ( SELECT SUM(o.cantidad) FROM orders INNER JOIN ordenes o ON o.nombc=c.nombc WHERE item='lampara' )
Sin usar anidadas podría ser:
SELECT o.nombre_cliente FROM Clientes c INNER JOIN ordenes o ON c.nombre_cliente = o.nombre_cliente WHERE o.item ='lampara' GROUP BY o.nombre_cliente HAVING SUM(o.cantidad)>15
- d
SELECT c.nombc FROM clientes INNER JOIN ordenes o ON o.nombc=c.nombc GROUP BY o.item HAVING SUM(o.cantidad) > (SELECT AVG(cant) FROM ( SELECT c.nombc, SUM(o.cantidad) as cant FROM orders INNER JOIN ordenes o ON o.nombc=c.nombc GROUP BY o.item ) )
- e
UPDATE ordenes o SET o.cantidad = o.cantidad * 1.10 WHERE 10000 < ( SELECT c.saldo FROM clientes WHERE o.nombc=c.nombc )
Yo propongo esta otra manera:
UPDATE Ordenes o SET o.Cantidad = o.Cantidad*1.1 WHERE o.nombre_cliente IN (SELECT nombre_cliente FROM Clientes c WHERE c.saldo > 10000)
Ejercicio 08
Ejercicio 09
es_amigo(a,b) = (a,b) in amigo || (b,a) in amigo
- a.i
{ n:persona | ~EX a:persona . es_amigo(n.progenitor,a) }
- a.ii
{ n:persona | FA a:persona . es_amigo(n,a) -> es_amigo(n.progenitor,n) }
- a.iii
{ n:persona | #{a:persona | es_amigo(n,a)} > 8 }
Este es válido si valiera la simetría en la relación amigo:
SELECT p.nombre from persona p INNER JOIN amigo a on a.nombre1=p.nombre GROUP BY p.nombre HAVING 8 < COUNT(*)
Este contemple la asimetría de la misma:
SELECT p.nombre FROM Persona p WHERE 8 < (SELECT count(*) FROM amigo WHERE nombre1 = p.nombre OR nombre2 = p.nombre)
Ejercicio 10
Ejercicio 11
- a
SELECT m.* FROM miembro m INNER JOIN organiza o ON o.codigo_m = c.codigo_m WHERE NOT EXISTS ( SELECT p.* FROM participa p INNER JOIN evento e ON e.codigo_e = p.codigo_e WHERE p.codigo_m = m.codigo_m )
O bien:
SELECT m.* FROM Organiza o INNER JOIN Miembro m ON m.codigo_m = o.codigo_m WHERE m.codigo_m NOT IN (SELECT codigo_m FROM participa)
- b
SELECT COUNT(e.codigo_E), Localidad FROM (EVENTO e INNER JOIN Auditorio a ON e.codigo_A = a.codigo_A) INNER JOIN (SELECT codigo_e, count(codigo_m) as inscriptos FROM Participa GROUP BY codigo_E) ev ON ev.codigo_E = e.Codigo_E WHERE e.cupo_Minimo <= inscriptos AND Especialidad = "Medica" GROUP BY Localidad
- c
SELECT e.* FROM evento e WHERE e.fecha_limite_inscripcion < TODAY() AND e.cupo_minimo < ( SELECT COUNT(*) FROM participa p INNER JOIN evento e ON e.codigo_e = p.codigo_e WHERE p.codigo_m = m.codigo_m )
- d
SELECT m.* FROM miembro m WHERE NOT EXISTS ( SELECT e.* FROM evento e WHERE NOT EXISTS ( SELECT p.* FROM participa p WHERE p.codigo_m = m.codigo_m AND p.codigo_e = e.codigo_e ) )
- e
DELETE FROM auditorio a WHERE NOT EXISTS ( SELECT e.* FROM evento e WHERE e.codigo_a = a.codigo_a )
- f
- g
Ejercicio 12
Ejercicio 13
Ejercicio 14
Ejercicio 15
Ejercicio 16
Ejercicio 17
Ejercicio 18
Ejercicio 19
Ejercicio 20
Ejercicio 21
Ejercicio 22
Ejercicio 23
a.1
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(TE, \pi_{tor, eq1}(P) \cup \pi_{tor, eq2}(P))}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(TEPar(1 \rightarrow tor1,2 \rightarrow eq1,3 \rightarrow tor2,4 \rightarrow eq2), TE \times TE)}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(J2, \pi_{eq1}(\sigma_{(eq1 = eq2) \land (tor1 \neq tor2)}(TEPar)))}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(TETerna(1 \rightarrow tor1,2 \rightarrow eq1,3 \rightarrow tor2,4 \rightarrow eq2,5 \rightarrow tor3,6 \rightarrow eq3), TE \times TE \times TE)}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(J3, \pi_{eq1}(\sigma_{(eq1 = eq2) \land (eq2 = eq3) \land (tor1 \neq tor2) \land (tor3 \neq tor2) \land (tor1 \neq tor3)}(TETerna)))}
Respuesta: Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle J2 - J3}
a.2
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(Perdidos, \pi_{tor, eq1}(\sigma_{puntos1 = 0}(Partido)) \cup \pi_{tor, eq2}(\sigma_{puntos2 = 0}(Partido)))}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(Invictos, \pi_{tor, eq1}(Partido) \cup \pi_{tor, eq2}(Partido) - Perdidos)}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(InvictoPar(1 \rightarrow tor1,2 \rightarrow eq1,3 \rightarrow tor2,4 \rightarrow eq2), Invictos \times Invictos)}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(InvictoDoble, \pi_{eq1}(\sigma_{(eq1 = eq2) \land (tor1 \neq tor2)}(InvictoPar)))}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(JugadorPar(1 \rightarrow nom1, 2 \rightarrow ed1, 3 \rightarrow eq1, 4 \rightarrow nom2, 5 \rightarrow ed2, 6 \rightarrow eq2),Jugador \times Jugador)}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(MasChicos, \pi_{nom, eq}(Jugador) -\pi_{nom1, eq1}(\sigma_{(ed1 > ed2) \wedge (eq1 = eq2)}(JugadorPar)))}
Error al representar (SVG o PNG como alternativa (MathML puede ser habilitado mediante plugin de navegador): respuesta no válida («Math extension cannot connect to Restbase.») del servidor «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \rho(MasViejos, \pi_{nom, eq}(Jugador) -\pi_{nom1, eq1}(\sigma_{(ed1 < ed2) \wedge (eq1 = eq2)}(JugadorPar)))}
b.1
SELECT DISTINCT P2.equipo1 FROM Partidos as P2 WHERE NOT EXISTS ( SELECT * FROM Partidos as P3 WHERE P2.equipo1 = P3.equipo1 AND P2.torneo = P3.torneo AND P3.goles1 < P3.goles2 ) GROUP BY P2.equipo1 HAVING COUNT(DISTINCT P2.torneo) > 1
b.2
SELECT P.torneo FROM partidos P WHERE NOT EXISTS ( SELECT P2.equipo1 FROM partidos P2 WHERE P2.torneo = P.torneo GROUP BY P2.equipo1 HAVING SUM(P2.puntos1) > ( SELECT SUM(P3.puntos1) FROM partidos as P3 WHERE P3.torneo = P.torneo AND P3.equipo1 = P.equipo1 ) ) GROUP BY P.torneo HAVING COUNT(DISTINCT P.equipo1) > 1;