AULA DE DÚVIDAS 9 de Abril de 2013 Autorização Especialização Chave estrangeira referindo que tabela?! e bi nome … Pessoas obs ISA Alunos Autorização disjunta Docentes Simplifica-se quando: Espaços bi e 1 II.127 3 II.252 Pessoas bi nome … obs 1 Sofia … xxx 2 Pedro … yyy 3 João … zzz 4 Ana … vvv bi nome … obs 1 Sofia … xxx Pedro … yyy Alunos 2 especialização é disjunta e Onde colocar? especialização é total e Docentes não há relações envolvendo o bi conjunto de entidades mais geral. Redundancia! nome … obs 3 João … zzz 1 Sofia … xxx R5(a1,a2,a4,a3,a8) Ent7(a1,a2,a4,a3,a7,a8) Conversão entre Modelo de Entidades e Relações e Modelo Relacional Ent7(a1,a2,a4,a7) Chave de R1: a1,a2 Chave de Ent4: a1,a2,a4 Chave de Ent7: a1,a2,a4 • Qual das seguintes relações pode pertencer ao conjunto de relações obtido através da conversão do Modelo de Entidades e Relações para o Modelo Relacional apresentada nas aulas? Ent7(...) R2(a4,a6,a1,a5) ou R2(a1,a5,a4,a6) Ent6(a4,a6) Ent6(a4,a6, a1,a5) Conversão entre Modelo de Entidades e Relações e Modelo Relacional Chave de Ent3: a1 Chave de R3: a4 Chave de Ent4: a5,a1 Chave de R2: a1,a5 ou a4,a6 Chave de Ent6: a6,a4 SQL II.5. Considere o seguinte esquema de base de dados (com apenas uma tabela) e consulta: CREATE TABLE r( a INT PRIMARY KEY, SELECT a, MIN(b), SUM(c) b INT, FROM r c INT, WHERE b > 5 d INT, GROUP BY a e INT); HAVING Condição; Qual das seguintes frases é verdadeira? • (A) Condição não pode ser d = 5; • (B) Condição não pode ser a = sum(e); • (C) O valor de min(b) pode ser menor do que 6; • (D) Nenhumas das anteriores i.e., todas as frases anteriores são falsas. SQL II.14. Com R(a,b) e S(a,b), considere as consultas: Q1: (SELECT * FROM R) INTERSECT ALL (SELECT * FROM S); Q2: (SELECT * FROM R) NATURAL INNER JOIN (SELECT * FROM S); Se R contiver n tuplos para um dado (a,b) e S contiver m desses tuplos, então: INTERSECT ALL contém min(n,m) tuplos para esse (a,b) NATURAL INNER JOIN contém n*m tuplos para esse (a,b) Ora, min(n,m) ≤ n*m A resposta a Q1 está sempre contida na resposta a Q2. SQL II.16. Com R(a) com pelo menos um tuplo, considere as consultas: Q1: SELECT rr.a FROM R AS rr WHERE NOT EXISTS(SELECT * FROM R WHERE a > rr.a); Q2: SELECT MAX(a) FROM R; A consulta Q2 devolve um tuplo com o valor máximo do atributo a. A consulta Q1 devolve n tuplos, um para cada tuplo de R que tenha como valor de a o valor máximo do atributo a. A resposta a Q2 está sempre contida na resposta a Q1. SQL Considere as instancias de R(A,B,C) e S(C,D) e a consulta SELECT A, SUM(B+D) FROM R NATURAL INNER JOIN S GROUP BY A; Qual a soma dos valores não nulos de todos os atributos em todas as linhas do resultado da consulta anterior? A B C C D A B C D B+D A SUM(B+D) 1 2 x NULL 3 1 2 x 3 5 1 12 1 5 y x 3 1 5 y 2 7 NULL 13 NULL 3 x y 2 1 5 y NULL NULL 2 1 NULL y NULL NULL 3 x 3 6 NULL 4 x NULL 4 x 3 7 R S R S AGA,SUM(B+D)(R 26 S) SQL Considere a tabela R criada com o seguinte comando SQL: CREATE TABLE R(a INT NOT NULL, b INT NOT NULL); a b a r1.b r2.b 1 2 1 2 3 1 3 1 3 2 DELETE FROM R 2 1 2 1 3 WHERE a IN (SELECT a FROM R r1 INNER JOIN R r2 USING (a) WHERE r1.b <> r2.b); 2 3 2 1 4 2 4 2 1 5 2 5 2 3 1 3 5 2 3 4 5 2 3 5 2 4 1 2 4 3 2 4 5 2 5 1 2 5 3 2 5 4 e a instância de R apresentada. A tabela é actualizada com o seguinte comando SQL: Qual das seguinte afirmações é verdadeira: O comando dá erro por não ser possível fazer remoções 3 baseadas no conteúdo da própria tabela. R O comando dá erro por existirem tuplos duplicados em R. O comando remove 8 tuplos. O comando remove 6 tuplos. O comando remove 5 tuplos. Tuplos O comando remove 4 tuplos. Removidos! O comando remove 0 tuplos. R r1 INNER JOIN R r2 USING (a) WHERE r1.b <> r2.b SQL b a b b b Considere a tabela criada com o seguinte comando SQL: Q2 40 1 30 30 CREATE TABLE R( Q3 2 40 40 a INT NOT NULL PRIMARY KEY, 3 40 40 b INT NOT NULL); R Q1 Considere as seguintes consultas: Q1: SELECT b FROM R WHERE b >= SOME (SELECT b from R); Q2: SELECT b FROM R as R1 WHERE b > ALL (SELECT b FROM R as R2 WHERE R2.a <> R1.a); Q3: SELECT max(b) AS b FROM R; Qual das seguintes frases é verdadeira? Q1 e Q2 e Q3 são todas equivalentes. Q1 e Q2 são equivalentes; Q3 pode produzir uma resposta diferente nalgumas instâncias de R. Q1 e Q3 são equivalentes; Q2 pode produzir uma resposta diferente nalgumas instâncias de R. Q2 e Q3 são equivalentes; Q1 pode produzir uma resposta diferente nalgumas instâncias de R. Q1, Q2 e Q3 podem todas produzir respostas diferentes nalgumas instâncias de R. Redundância em Modelos ER Considerando o seguinte diagrama ER, quais dos conjuntos de relações são necessariamente redundantes? Álgebra Relacional Considere duas relações r e s, definidas sobre um mesmo esquema (que tem pelo menos o atributo a), e as consultas Q1: a r a s Q2: a r s Q1 e Q2 produzem sempre a mesma resposta, contendo todos os valores de “a” presentes num tuplo de r ou s. Álgebra Relacional Considere duas relações r e s, definidas sobre um mesmo esquema (que tem pelo menos o atributo a), e as consultas Q1: a r s Q2: a r a s Q2 contém valores de “a” que apareçam num tuplo de r e num tuplo de s; Q1 contém valores de “a” que apareçam no mesmo tuplo de r e s; tudo o que está em Q1 está também em Q2, mas não o contrário Álgebra Relacional Considere duas relações r e s, definidas sobre um mesmo esquema (que tem pelo menos o atributo a), e as consultas Q1: a r s Q2: a r a s Q2 contém valores de “a” que apareçam num tuplo de r e não num tuplo de s; Q1 contém valores de “a” que apareçam num tuplo de r e não no mesmo tuplo de s; tudo o que está em Q2 está também em Q1, mas não o contrário Várias Especializações Como resolver uma situação com várias especializações onde, aparentemente, necessitamos de “herança múltipla”. Base de Dados para uma empresa: Todos são contribuintes. Os contribuintes dividem-se em pessoas e empresas (especialização disjunta). Depois há clientes e fornecedores (especialização sobreposta). Alguns clientes serão empresas e outros pessoas. Alguns fornecedores serão empresas e outros pessoas. Por fim, algumas das pessoas são funcionários. Várias Especializações nif morada nome contribuinte salário cap.social prazo de entrega ISA disjoint sexo pessoa ISA ISA fornecedor ISA X empresa cliente funcionário desconto Várias Especializações nif morada nome contribuinte ISA ISA fornecedor cliente prazo de entrega desconto empresa cap.social disjoint sexo pessoa ISA contribuinte(nif,nome,morada) cliente(nif,desconto) nif é chave ext de contribuinte funcionário fornecedor(nif,prazo_de_entrega) nif é chave ext de contribuinte empresa(nif,cap_social) nif é chave ext de contribuinte salário pessoa(nif,sexo) nif é chave ext de contribuinte funcionário(nif,salário) nif é chave ext de pessoa