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
Download

slides