INF1340 - Banco de Dados II (BD2) Prof Marcos Villas Turma 3WA 3as e 5as 17-19hs www.inf.puc-rio.br/~villas/bd2 [email protected] RDC (Sala 414) E-mail: [email protected] A) Prepare uma árvore de consulta otimizada para o comando SQL apresentado a seguir. Registre as premissas que você utilizou para a otimização (memória de cálculo da quantidade de tuplas acessadas por seleção). O contexto é de bandas (grupos) musicais, seus artistas, músicas, eventos e apresentações (música apresentada por uma banda em um evento). (B) (A) (P) (M) (E) (X) Banda (cod-banda, nome-banda, estilo, ano-criação, país-origem) Artista (cod-artista, nome-artista, ano-nascimento) Participa (cod-artista, cod-banda, ano-início, ano-término) Música (cod-música, nome-música, ano-composição) Evento (cod-evento, nome-evento, local-evento, data-evento) Apresentação (cod-evento, cod-banda, cod-música) SELECT E.nome-evento, E.data-evento FROM X, E, B, M WHERE X.cod-evento = E.cod-evento AND X.cod-banda = B.cod-banda AND X.cod-musica = M.cod-musica AND E.local-evento = ‘Rio’ AND B.país-origem = ‘Brasil’ AND M.nome-musica LIKE ‘%praia%’; AND B.cod-banda IN ( SELECT P.cod-banda FROM P, A WHERE P.cod-artista = A.cod-artista AND A.ano-nascimento = 1971 AND P.ano-início > 1990 ) Nome e data do evento onde foram apresentadas, no Rio, músicas com ‘praia’ em seu nome por bandas brasileiras, e que nessas bandas havia um músico nascido em 1971 mas que ingressou na banda apenas após 1990. 100 bandas, 500 artistas, 1000 participações; 2.000 músicas, 200 eventos, 3.000 apresentações; E.local-evento = Rio (20%), São Paulo (50%), Porto Alegre (5%), demais estados (25%) B.país-origem = Brasil (90%), Argentina (5%), Chile (5%) A.ano-nascimento = 1969 (5%), 1970 (10%), 1971 (20%), demais anos (65%) Cardinalidade (π (B.cod-banda)) ≈ Cardinalidade (π (B.nome-banda)) Cardinalidade (π (M.cod-musica)) > Cardinalidade (π (M.nome-musica)) Chaves estrangeiras: P.cod-artista A.cod-artista; P.cod-banda B.cod-banda X.cod-evento E.cod-evento; X.cod-banda B.cod-banda; X.cod-musica M.cod-musica 1/4 INF1340 - Banco de Dados II (BD2) Prof Marcos Villas Turma 3WA 3as e 5as 17-19hs www.inf.puc-rio.br/~villas/bd2 [email protected] RDC (Sala 414) E-mail: [email protected] Tuplas acessadas por seleção Seleção Comparação Tuplas (1) (2) (3) (4) (5) Árvore de Consulta 2/4 INF1340 - Banco de Dados II (BD2) Prof Marcos Villas Turma 3WA 3as e 5as 17-19hs www.inf.puc-rio.br/~villas/bd2 [email protected] RDC (Sala 414) E-mail: [email protected] B) Prepare uma árvore de consulta otimizada para o comando SQL apresentado a seguir. Registre as premissas que você utilizou para a otimização (memória de cálculo da quantidade de páginas acessadas por seleção). O contexto é de bandas (grupos) musicais, seus artistas, músicas, eventos e apresentações (música apresentada por uma banda em um evento). Tabelas: [no BD uma página tem 1000 bytes] [400 [200 [100 [100 [200 [100 bytes] bytes] bytes] bytes] bytes] bytes] (B) (A) (P) (M) (E) (X) Banda (cod-banda, nome-banda, estilo, ano-criação, país-origem) Artista (cod-artista, nome-artista, ano-nascimento) Participa (cod-artista, cod-banda, ano-início, ano-término) Música (cod-música, nome-música, ano-composição) Evento (cod-evento, nome-evento, local-evento, data-evento) Apresentação (cod-evento, cod-banda, cod-música) Comando SQL: SELECT E.nome-evento, E.data-evento FROM X, E, B, M WHERE X.cod-evento = E.cod-evento AND X.cod-banda = B.cod-banda AND X.cod-musica = M.cod-musica AND E.local-evento = ‘Rio’ AND B.país-origem = ‘Brasil’ AND M.nome-musica LIKE ‘%praia%’; AND B.cod-banda IN ( SELECT P.cod-banda FROM P, A WHERE P.cod-artista = A.cod-artista AND A.ano-nascimento = 1971 AND P.ano-início > 1990 ) Nome e data do evento onde foram apresentadas, no Rio, músicas com ‘praia’ em seu nome por bandas brasileiras, e que nessas bandas havia um músico nascido em 1971 mas que ingressou na banda apenas após 1990. Estatísticas: 100 bandas, 500 artistas, 1000 participações; 2.000 músicas, 200 eventos, 3.000 apresentações; E.local-evento = Rio (20%), São Paulo (50%), Porto Alegre (5%), demais estados (25%) B.país-origem = Brasil (90%), Argentina (5%), Chile (5%) A.ano-nascimento = 1969 (5%), 1970 (10%), 1971 (20%), demais anos (65%) Cardinalidade (π (B.cod-banda)) ≈ Cardinalidade (π (B.nome-banda)) Cardinalidade (π (M.cod-musica)) > Cardinalidade (π (M.nome-musica)) Chaves estrangeiras: P.cod-artista A.cod-artista; P.cod-banda B.cod-banda X.cod-evento E.cod-evento; X.cod-banda B.cod-banda; X.cod-musica M.cod-musica 3/4 INF1340 - Banco de Dados II (BD2) Prof Marcos Villas Turma 3WA 3as e 5as 17-19hs www.inf.puc-rio.br/~villas/bd2 [email protected] RDC (Sala 414) E-mail: [email protected] 5) Continuação: espaço para a resposta Páginas acessadas por seleção Seleção Comparação Tuplas (1) (2) (3) (4) (5) Árvore de Consulta 4/4 Bytes Páginas