(solución): Simpatías y antipatías

Anuncio
Introducción a la Ingeniería del Software y a los Sistemas de Información
Simpatías y antipatías
octubre 2011
Solución (álgebra relacional)
1. Mujeres que gustan a Pedro
project m ( select h = 'Pedro' ( simpatias ) );
2. Hombres antipáticos a Rosa
project h ( select m = 'Rosa' ( antipatias ) );
3. Mujeres simpáticas a alguien
project m ( simpatias );
4. Hombres antipáticos a alguien
project h ( antipatias );
5. Hombres que no son simpáticos a nadie
hombres difference ( project h ( simpatias ) );
6. Mujeres que no son antipáticas a nadie
mujeres difference ( project m ( antipatias ) );
7. Hombres que caen simpáticos a todas las mujeres
simpaticosUniversales := simpatias divideby mujeres;
Sin usar la división:
simpaticos := project h (simpatias);
parejasPosiblesSimpaticos := simpaticos product mujeres;
parejasFalsasSimpaticos := parejasPosiblesSimpaticos difference simpatias;
simpaticosEnParejasFalsas := project h ( parejasFalsasSimpaticos );
simpaticosUniversales := simpaticos difference simpaticosEnParejasFalsas;
Página 2 de 3
Introducción a la Ingeniería del Software y a los Sistemas de Información
Simpatías y antipatías
octubre 2011
Solución (SQL)
1. Mujeres que gustan a Pedro
SELECT DISTINCT m FROM simpatias
WHERE h = 'Pedro';
2. Hombres antipáticos a Rosa
SELECT DISTINCT h FROM antipatias
WHERE m = 'Rosa';
3. Mujeres simpáticas a alguien
SELECT DISTINCT m FROM simpatias;
4. Hombres antipáticos a alguien
SELECT DISTINCT h FROM antipatias;
5. Hombres que no son simpáticos a nadie
SELECT h FROM hombres H
WHERE NOT EXISTS (
SELECT * FROM simpatias S
WHERE S.h = H.h );
6. Mujeres que no son antipáticas a nadie
SELECT m FROM mujeres M
WHERE NOT EXISTS (
SELECT * FROM antipatias A
WHERE A.m = M.m );
7. Hombres que caen simpáticos a todas las mujeres
SELECT DISTINCT h FROM simpatias SX
WHERE NOT EXISTS (
SELECT * FROM mujeres M
WHERE NOT EXISTS (
SELECT * FROM simpatias SY
WHERE SY.h = SX.h AND SY.m = M.m ) );
|
*
*
(
|
)
(
Página 3 de 3
+
)
+
Descargar