Escolar Documentos
Profissional Documentos
Cultura Documentos
LIC. EM INFORMÁTICA, LIC. EM TIC E LIC. EM MATEMÁTICA
BASES DE DADOS
Resolução proposta de: Afonso Ferreira Gomes
2007/2008 2ª Chamada 1º Semestre
NÃO GARANTO 100% EXATIDÃO
ERROS DETECTADOS? INFORMEMME penaf@yahoo.com
1. Em termos de desenvolvimento e manutenção de sistemas, compare as facilidades obtidas pela
utilização de tecnologia de bases de dados relativamente aos sistemas de gestão de ficheiros.
Dados são apenas elementos ou valores discretos que, isoladamente, não têm qualquer
valor, só se transformando em informação quando analisados de alguma forma. Com o
evoluir do tempo e das tecnologias, a gestão informática de dados passou da técnica de
gestão de ficheiros para modernos sistemas de Base de Dados
Utilizando sistemas de gestão de ficheiros, as organizações começaram por automatizar
algumas tarefas até aí realizadas manualmente. Estes sistemas surgiram no panorama
informático das organizações sem qualquer relação com os sistemas já existentes,
constituindo assim “ilhas isoladas” entre si.
Os dados como são actualizados independentemente pelas respectivas aplicações, existe
uma grande probabilidade de ocorrência de incoerências – redundância não controlada.
Outra consequência grave deste tipo de gestão de dados: o acesso concorrente aos
dados partilhados tem de ser feito ao nível das aplicações, utilizando funções de baixo-
nivel disponibilizadas pelo sistema operativo – o que vem por em causa a fiabilidade dos
próprios sistemas.
Os sistemas de bases de dados surgem como tentativa de resolver estes problemas. A
abordagem pelos sistemas de bases de dados tem uma característica fundamental – os
dados são organizados num único conjunto. Isto é, em vez de estarem separados por
várias unidades independentes, os dados encontram-se integrados numa só unidade
(lógica) de armazenamento.
Todos os acessos aos dados passam sempre por uma entidade designada Sistema de
Gestão de Bases de Dados (SGBD), que centraliza em si o acesso físico à base de dados.
A interface lógica entre o nível aplicacional e a base de dados é conseguida à custa do
armazenamento na base de dados, não só dos dados propriamente ditos, mas também
das suas descrições (metadados), numa entidade conhecida por dicionário de dados
(também chamado catálogo).
2. Considere que se pretende criar um sistema de base de dados para gerir reparações em
equipamentos de estações de extracção de petróleo. O sistema deve registar as estações de
extracção de petróleo e os equipamentos associados. Uma estação de extracção de petróleo é
caracterizada por um identificador, um nome e uma localização. Por seu lado, os equipamentos são
caracterizados por um número de identificação, um nome, um fabricante e uma data de aquisição.
Um equipamento está associado a uma categoria. As categorias estão organizadas hierarquicamente
e são caracterizadas por um número identificador, um nome e um grau de importância. O sistema
deve também ser capaz de registar as intervenções sobre os equipamentos da estação de extracção
de petróleo, sabendo que cada operação é efectuada por dois mecânicos, um responsável pela
reparação e outro pela verificação. Para cada intervenção o sistema regista, além dos mecânicos
associados à operação, a data de intervenção e uma pequena descrição. Cada mecânico é
caracterizado por um número único de identificação, um nome e um contacto telefónico.
2.1. Desenhe o diagrama conceptual para a base de dados do sistema de gestão de reparações em
estações de extracção de petróleo.
2.2. Com base no modelo conceptual definido anteriormente, elabore, em linguagem SQL, a base de
dados relacional tendo em consideração os conceitos de normalização (1FN, 2FN e 3FN) e a
integridade de domínio, entidade e referencial. Garanta, ainda, alguma integridade dos dados do
sistema que considere fundamental.
3. Considere o seguinte diagrama relacional de uma base de dados de um catálogo de nomeação e
atribuição de oscares:
3.1. Escreva questões em linguagem SQL que responda a cada uma das seguintes perguntas:
NOTA: Entre parêntesis rectos encontramse os dados que se pretende obter com cada questão.
3.1.1. Quais os filmes registados no sistema? [informação completa dos filmes]
SELECT * FROM Filme
3.1.2. Quais os filmes nomeados para Óscares em 2007? [informação completa dos filmes]
SELECT * FROM Filme F, Nomeacao N
WHERE F.idFilme=N.idFilme AND
N.ano=2007
3.1.3. Quantas categorias existem registadas no sistema? [número de categorias]
SELECT COUNT(*) AS contador_categorias FROM Categoria
3.1.4. Quantos filmes distintos ganharam Óscares em 2007? [número de filmes]
SELECT COUNT(DISTINCT titulo)
FROM Filme F, Nomeacao N
WHERE N.ano=2007 AND
N.idFilme=F.idFilme
3.1.5. Qual o filme tipo “Drama” foi venceu na categoria de “Melhor Filme” no ano de 2003? [titulo]
SELECT titulo FROM Filme F, Nomeacao N, Categoria C, Tipo T, TipoFilme X
WHERE N.ano=2003 AND
T.tipo=’Drama’ AND
C.nome=’Melhor Filme’ AND
C.idCategoria=N.idCategoria AND
N.idFilme=F.idFilme AND
F.idFilme=X.idFilme AND
X.idTipo = T.idTipo
Na próxima pergunta…
(não tinha espaço na página seguinte :D )
3.2 Considere que foi executado o seguinte comando em linguagem SQL:
ALTER TABLE Filme ADD n_nomeacoes INT
3.2.1. Desenvolva um procedimento que receba como parâmetro os dados necessários para o
registo de uma nomeação e insira um novo registo na tabela Nomeacao. Tenha em atenção que o
n_nomeacoes na tabela Filme deve ser actualizado automaticamente com o número actual de
nomeações existentes para esse filme. NOTA – Crie dois procedimentos auxiliares: um para devolver
o número de nomeações de um filme, e outro para actualizar esse número.
-- Vamos actualizar a tabela Filme mas para isso é preciso recontar nomeaçoes
EXECUTE Conta_Nomeacoes @idFilme
GO
Procedimento Auxiliar 1
Procedimento Auxiliar 2
FROM INSERTED
UPDATE Filme
-- Actualizar esse valor na tabela! Mas não esquecer que entretanto já foi adicionado
outra nomeacao!
GO
Como podem reparar a resolução é sempre a mesma … só é preciso prática e mais prática para se
fazerem as coisas de gás…