Você está na página 1de 3

Exame de época normal de Base de Dados

Universidade do Algarve, 06/Jan/2015


(duração: 2 horas)

Leia o enunciado com atenção antes de começar o exame. Não pode chamar o docente para
lhe ajudar a compreender o enunciado. A interpretação do texto faz parte do prova. A cotação
de cada pergunta aparece entre parêntesis.

As perguntas 5, 6, 7, 8 são de escolha múltipla. Para estas perguntas, por cada resposta certa
recebe 1,5 valores. Por cada resposta errada é-lhe descontado 0,5 valores. Se não responder não
lhe são retirados quaisquer valores.

Boa sorte!

(4 valores) Pergunta 1.

Pretende-se fazer uma base de dados sobre Geografia que envolve todos os paı́ses do mundo,
cidades, e as lı́nguas oficiais que são faladas nos paı́ses. Considere a seguinte informação.

• Cada paı́s é identificado por um nome que é único. Para além do nome, queremos
armazenar a área do paı́s em km2 e o número aproximado de habitantes.
• Queremos armazenar informação sobre as cidades dos paı́ses. Para cada cidade, também
queremos saber o nome e o número aproximado de habitantes. Assuma que não pode
haver duas cidades com o mesmo nome no mesmo paı́s. Contudo, poderá haver cidades
com o mesmo nome em paı́ses distintos. (Como exemplo, existe Paris em França, mas
também existe uma pequena cidade nos EUA chamada Paris.)
• Pretende-se manter informação sobre as lı́nguas oficiais que são faladas nos paı́ses. Note
que há paı́ses com várias lı́nguas oficiais. Como exemplo, as lı́nguas oficiais da India
são o Hindi e o Inglês. Há lı́nguas que são oficiais em vários paı́ses. Por exemplo,
o Português é lı́ngua oficial em Portugal, Brasil, Moçambique, Angola, Guiné-Bissau,
Timor Leste, Cabo Verde, São Tomé e Prı́ncipe.
• Pretende-se também manter informação sobre quais os paı́ses que fazem fronteira com
um determinado paı́s. Portugal, por exemplo, só tem fronteira com Espanha. Mas a
China chega a ter fronteiras com 14 paı́ses, e a Islândia não tem fronteira com ninguém.

Elabore um modelo conceptual de dados utilizando UML para o problema descrito abaixo.
Não se esqueça de indicar as chaves primárias. Não invente atributos para além daqueles
que estão explicitamente mencionados no texto.

1
(3 valores) Pergunta 2.

Converta o modelo conceptual obtido na pergunta anterior para o modelo relacional. Não é
necessário código SQL. Basta apenas especificar as várias relações/tabelas indicando o seu
nome seguido de uma lista de atributos entre parêntesis. Não se esqueça que no modelo
relacional, os atributos que fazem parte da chave de uma relação devem ser sublinhados.

(1+1+1 = 3 valores) Pergunta 3.

Considere a relação R(A,B,C) em que AB é chave. Assuma que R tem a seguinte dependência
funcional: BC → A

a) R está na 3a forma normal? Justifique.


b) R está em BCNF? Justifique.
c) BC poderá ser uma chave de R? Justifique.

(1,5+1,5 = 3 valores) Pergunta 4.

Considere a relação Notas(num, nome, nota) que regista as notas dos alunos neste exame.
O atributo num é o número de aluno e é a chave da relação Notas.

a) Escreva uma interrogação (query) em SQL que retorne a distribuição da frequência das
notas por ordem decrescente de nota. Por exemplo, o output poderá ser qualquer coisa
deste estilo:

nota contagem
==== ========
18 1
16 2
14 5
13 5
... ...

A primeira coluna indica a nota do exame. A segunda coluna indica o número de alunos
que obtiveram essa nota.

b) Escreva uma interrogação (query) em SQL que retorne o(s) nome(s) dos alunos que
tiveram a nota mais alta.

(1,5 valores) Pergunta 5.

Suponha que R(a, b) contém os tuplos {(1,2), (3,4)} e S(b, c) contém os tuplos {(2,5), (2,6),
(7,8)}. Quantos tuplos contém o Natural Join de R com S?

a) 2 (b) 3 (c) 4 (d) 6

2
(1,5 valores) Pergunta 6.

Suponha que temos as tabelas R(a, b) e S(a, c), bem como a seguinte asserção:
CREATE ASSERTION Mistério CHECK (
NOT EXISTS (SELECT * FROM R,S WHERE R.a=S.a AND R.b<>S.c)
);
Quais das seguintes combinações de tuplos não poderão existir ao mesmo tempo?

a) (1,1) em R e (2,2) em S.
b) (1,2) em R e (2,1) em S.
c) (1,2) em R e (1,2) em S.
d) (1,1) em R e (1,2) em S.

(1,5 valores) Pergunta 7.

Em SQL, o valor lógico da expressão X < Y AND (X >= Y OR Z = 10) poderá ser:

a) TRUE ou FALSE, mas nunca UNKNOWN.


b) FALSE ou UNKNOWN, mas nunca TRUE.
c) TRUE ou UNKNOWN, mas nunca FALSE.
d) TRUE, FALSE, ou UNKNOWN.

(1,5 valores) Pergunta 8.

As seguintes queries dizem respeito a uma relação R(a, b). (Q1 está em SQL, Q2 em álgebra
relacional.)

Q1: SELECT a FROM R WHERE b=5;


Q2: πa ( σb = 5 (R))
Qualquer que seja a instância de R,

a) Q1 e Q2 produzem sempre o mesmo resultado.


b) A resposta de Q1 está contida na resposta de Q2.
c) A resposta de Q2 está contida na resposta de Q1.
d) Nenhuma das 3 hipóteses anteriores.

(1 valor) Pergunta 9.

Indique duas vantagens e duas desvantagens do modelo de dados semi-estruturado relativa-


mente ao modelo relacional.

Você também pode gostar