aula de dÚvidas 9 de abril de 2013. especialização simplifica-se quando: especialização é...
TRANSCRIPT
AULA DE DÚVIDAS9 de Abril de 2013
Especialização
Simplifica-se quando: especialização é disjunta e especialização é total e não há relações envolvendo o conjunto de entidades mais geral.
bi
DocentesAlunos
Pessoas
ISA
disjunta
nome
obs
…
Autorização Espaços
ePessoas
bi nome … obs
1 Sofia
… xxx
2 Pedro
… yyy
3 João … zzz
Docentesbi
3
Alunosbi
12
nome … obs
Sofia
… xxx
Pedro
… yyy
nome … obs
João … zzz1 Sofi
a… xxx
Redundancia!
4 Ana … vvv
Onde colocar?
Autorizaçãobi e
1 II.127
3 II.252
Chave estrangeira referindo que
tabela?!
Conversão entre Modelo de Entidades e Relações e Modelo Relacional
• 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(...)
Chave de Ent4:
a1,a2,a4
Chave de R1: a1,a2
Chave de Ent7:
a1,a2,a4
Ent7(a1,a2,a4,a7)
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
Chave de Ent4: a5,a1
Chave de Ent3: a1
Chave de R3: a4
Ent6(a4,a6)R2(a4,a6,a1,a
5) ou R2(a1,a5,a4,a
6)
Ent6(a4,a6, a1,a5)
Chave de Ent6: a6,a4
Chave de R2: a1,a5 ou a4,a6
SQLII.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 rc INT, WHERE b > 5d INT, GROUP BY ae 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*mA resposta a Q1 está sempre contida na resposta a Q2.
SQL II.16. Com R(a), 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 consultaSELECT A, SUM(B+D)FROM R NATURAL INNER JOIN SGROUP 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 C1 2 x1 5 yNULL
3 x
2 1 NULL
NULL
4 x
R
C DNULL
3
x 3y 2y NUL
LS
A B C D1 2 x 31 5 y 21 5 y NUL
LNULL
3 x 3
NULL
4 x 3
R S
B+D57NULL67
A SUM(B+D)
1 12NULL 13
AGA,SUM(B+D)(R S)26
SQL Considere a tabela R criada com o seguinte
comando SQL:CREATE TABLE R(a INT NOT NULL, b INT NOT NULL);
e a instância de R apresentada. A tabela é actualizada com o seguinte
comando SQL:DELETE FROM RWHERE a IN (SELECT a FROM R r1 INNER JOIN R r2 USING (a) WHERE r1.b <> r2.b);
Qual das seguinte afirmações é verdadeira: O comando dá erro por não ser possível fazer
remoções baseadas no conteúdo da própria tabela.
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. O comando remove 4 tuplos. O comando remove 0 tuplos.
a b
1 2
1 3
2 1
2 3
2 4
2 5
3 5
3 5
R
a r1.b r2.b
1 2 3
1 3 2
2 1 3
2 1 4
2 1 5
2 3 1
2 3 4
2 3 5
2 4 1
2 4 3
2 4 5
2 5 1
2 5 3
2 5 4
R r1 INNER JOIN R r2 USING (a) WHERE r1.b <> r2.b
Tuplos Removidos
!
SQL Considere a tabela criada com o seguinte comando SQL:
CREATE TABLE R(a INT NOT NULL PRIMARY KEY,b INT NOT NULL);
Considere as seguintes consultas:Q1: SELECT b FROM R WHERE b >= SOME (SELECT b from R);Q2: SELECT b FROM R as R1WHERE 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.
a b
1 30
2 40
3 40
R
b
30
40
40
Q1
b
Q2
b
40
Q3
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:Q2: Q1 e Q2 produzem sempre a mesma resposta, contendo todos os valores de “a” presentes num tuplo de r ou s.
sr aa
sra
Á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:Q2: 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
sra sr aa
Á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:Q2: 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
sra
sr aa
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çõesnif nomemorada
contribuinte
funcionário
salário
ISA
ISA
clientefornecedorprazo de entrega desconto
pessoa
sexo
empresa
cap.socialISA
disjoint
ISAX
Várias Especializações
contribuinte(nif,nome,morada)cliente(nif,desconto) nif é chave ext de contribuintefornecedor(nif,prazo_de_entrega) nif é chave ext de contribuinteempresa(nif,cap_social) nif é chave ext de contribuintepessoa(nif,sexo) nif é chave ext de contribuintefuncionário(nif,salário) nif é chave ext de pessoa
nif nomemorada
contribuinte
funcionário
salário
ISA
clientefornecedor
prazo de entrega
ISA
desconto
pessoa
sexo
empresa
cap.social
ISAdisjoint