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 + ) +