Você está na página 1de 9

1.

Modele através do DER: Uma empresa possui diversos clientes, sendo que cada cliente ou é uma
pessoa física ou é uma pessoa jurídica. Pessoas físicas podem ser casadas e, nesse caso, é importante
saber quem é o seu cônjuge (que também pode ser considerado um cliente da empresa).

2. Modele através do DER: Uma clínica possui diversos funcionários, que são casados ou não. Alguns dos
funcionários são casados com funcionários da própria clínica e, nesses casos, é importante saber, para
cada um, qual o seu respectivo cônjuge.

3. Considere a seguinte descrição e construa o modelo conceitual: Um aluno possui matrícula e nome e
pode estar alocado a uma ou várias disciplinas. Cada disciplina tem um titulo e uma ementa e pode ter
uma ou várias turmas que, por sua vez, possui um único professor alocado.

4. Elabore um DER para o seguinte texto:

Uma grande organização deseja elaborar um Sistema na área de Gestão do Conhecimento para poder
melhor conhecer os seus recursos humanos e poder aproveitar melhor os seus recursos, alocando-os nos
diferentes projetos da cia. O objetivo maior da organização é saber se, ao demandar um recurso humano
com determinado perfil para a realização de um novo projeto, já existe algum funcionário com esse perfil
na organização, de modo a se verificar a possibilidade de alocação desse funcionário para o trabalho em
um novo projeto. Cada projeto possui um único gerente. Dessa maneira, um mesmo funcionário alocado
em diversos projetos pode se reportar a mais de um chefe.

Esse sistema necessita apresentar as seguintes informações:


- Em quais projetos da empresa o funcionário já trabalhou e/ou ainda está trabalhando (quando iniciou, a
data de previsão de término e se já terminou, se for o caso).
- Quais as áreas de conhecimento e, para cada uma dessas áreas, o respectivo grau de formação desse
funcionário (ex: Carlos é graduado em engenharia elétrica e também tem mestrado em administração;
João é técnico (ensino médio) em informática; José é Doutor em Engenharia nuclear, mestre em
engenharia mecânica e graduado em matemática).
- Quais os gerentes a que um funcionário se reporta.
- Funcionários com qualquer grau de parentesco não podem trabalhar no mesmo projeto, por isso, a
empresa também precisa ter condições de obter essa informação.
- Quais os cursos oferecidos internamente (pela própria organização) que o funcionário participou, a área
de conhecimento (ex: administração, informática, eng. Nuclear, eng. mecânica, etc) e quando participou.
- Qual foi o total de horas de participação de um funcionário em cursos internos por área de conhecimento

5. Uma empresa de motoboys realiza serviços de diversos tipos (ex: pagamento em banco, cobrança,
entrega de documentos, etc) para diversos clientes. Para cada serviço solicitado é gerada uma ordem de
serviço que identificará os dados relacionados ao respectivo serviço (obs.: para cada serviço é gerada uma
ordem de serviço diferente, ou seja, se em uma saída do motoboy ele realiza 10 serviços, ele leva consigo
10 ordens de serviço). A empresa faz serviços somente na própria cidade e o preço de cada serviço
dependerá da região destino do serviço (ex: Centro = R$3,00; Tijuca = R$3,50; Ipanema = R$4,00; ...).
Assumindo que são necessárias as seguintes informações pela organização:
• Quantos serviços foram efetuados por tipo de serviço em determinado período?
• Qual das motos realizou mais serviços em determinada região em determinado período?
• Para cada cliente, qual a região mais solicitada pelo mesmo para a prestação de serviços?
• Qual o tempo médio de duração dos serviços, contando a partir da saída até o retorno da moto?
• Quais as saídas de moto, com dados sobre cliente, endereço e serviço, para o dia ___ / ___ / ___ no
horário das X hs?
• Quantos serviços um motoboy fez por mês e qual o respectivo faturamento total?
• Quanto a empresa faturou em serviços no ano passado?

Faça o DER para o problema acima.


LISTA DE EXERCÍCIOS DE MODELAGEM DE DADOS

Faça a modelagem de dados referente aos seguintes problemas:

1) A sua empresa possui diversos equipamentos de informática e deseja controlar a localização


dos mesmos e os defeitos que esses apresentam. Cada equipamento possuirá sempre um único
funcionário responsável pelo mesmo. Construa o MER, de forma que as seguintes perguntas
possam ser respondidas:

• Quais os tipos de equipamentos (ex: computadores, monitores, Hubs, ...) que apresentam
mais defeitos?
• Quais os tipos de defeitos (ex: defeito elétrico, defeito mecânico, ferrugem, super-
aquecimento, etc) que mais ocorrem nos equipamentos?
• Quais os departamentos que possuem mais equipamentos (ou seja, mais funcionários
responsáveis por equipamentos)?
• Apresentar todas os equipamentos que um funcionário é responsável.
• Apresentar todos os defeitos que um equipamento apresentou na empresa
• Qual o tempo médio (em dias) entre falhas por tipo de equipamento (obs: para responder
essa questão é importante guardar o atributo de data de aquisição do equipamento) ?
Obs: atenção à possibilidade de escolha por período

2) Uma imobiliária precisa armazenar as informações dos seguintes tipos de imóveis: Terrenos,
casas e salas comerciais. Crie o MER com o relacionamento das entidades e, para cada entidade,
especifique seus atributos. (Obs: use pelo menos os atributos: num. quartos, num. banheiros,
grau de inclinação, área em m2. Mas não use somente estes.)

3) Uma empresa que trabalha no mercado de artes realiza leilões em diversas filiais. Para cada
leilão é escolhido um leiloeiro responsável e, nesse leilão, são negociadas várias peças. Deseja-
se saber as seguintes informações por período:

• Quais os compradores que mais compram peças por localidade (filial) ?


• Qual o valor total negociado por categoria de peça (ex: quadros, esculturas, tapetes, etc) ?
• Qual a peça mais cara negociada no ano passado?
• Qual o leiloeiro que mais realizou leilões por filial ?

4) Suponha que você seja contratado pelo departamento de compras de uma


empresa para elaborar um banco de dados. A empresa trabalha com diversos
fornecedores de produtos. Para cada compra efetuada temos uma ou mais
parcelas de pagamento (ex: posso pagar a vista ou dar uma entrada e pagar
outras 2 parcelas daqui a 30 e 60 dias). A empresa também possui diversos
compradores, sendo que cada compra possui um único comprador responsável
pela mesma. Este departamento precisa de uma série de informações como:

• Total de compras por comprador


• Compras por categoria de produto
• Quais as próximas Datas de Vencimento e quanto tenho que pagar em cada data
• Quais fornecedores vendem mais para o departamento
• Quais produtos cada fornecedor pode fornecer
• Média de itens comprados por nota fiscal de compra
• Total de compras a vista
• Total de compras parceladas

Obs1: todas as informações acima poderão ser obtidas com a escolha de qualquer
período.
Obs2: o fato dos fornecedores estarem cadastrados no sistema não implica
necessariamente que estes já tenham vendido algum produto para a empresa
compradora, mas a qualquer momento podem passar a fornecê-lo.

5) O setor de assistência técnica de uma determinada empresa, recebe ligações com


reclamações de seus clientes sobre os produtos comprados pelos mesmos. Para que seja
feito um controle de qualidade melhor, foi criado um formulário onde são anotadas as
informações referentes a cada telefonema. Como o volume de papéis aumentou muito, o
gerente da empresa necessita que estes dados sejam colocados num banco de dados.
Parabéns !!! Você foi contratado para fazer este trabalho !!!!

A partir das informações constantes no formulário abaixo (utilize apenas estas


informações), faça a modelagem conceitual dos dados, criando o DER
correspondente (entidades/relacionamentos/atributos).

OBS: existem apenas alguns tipos de problemas cadastrados (Ex: “quebra total”,
“quebra parcial”,...)

Número Ligação:______ Código Cliente: ______ Nome Cliente: __________


Tel. Cliente: ____________ Fax Cliente: _________ Data Ligação:_____

CodProduto NomeProduto CodTipoProblema DescricaoTipoProblema


========= ========== ============= ==================
________ ___________ ______________ _____________________
________ ___________ ______________ _____________________
________ ___________ ______________ _____________________
________ ___________ ______________ _____________________
Considere o seguinte esquema relacional e responda às questões apresentando o
respectivo SQL1:
Cliente( cod_cliente, cliente, profissao, localidade)
Agencia( cod_agencia, agencia, localidade)
Conta( num_conta, tipo_conta, cod_cliente, cod_agencia, saldo)
Emprestimo( num_emprestimo, cod_cliente, cod_agencia, valor)
1 Retirado de Tecnologia de Bases de Dados, J. Pereira. FCA Ed.

1. Quais os clientes (cod_cliente e cliente) deste Banco?


R.:
SELECT cod_cliente, cliente
FROM Cliente
2. Quais os clientes que residem em Braga?
R.:
SELECT cod_cliente, cliente
FROM Cliente
WHERE localidade = “Braga”
3. Quais os clientes (cod_cliente) com contas na agência cod_agencia = ‘123’?
R.:
SELECT cod_cliente
FROM Conta
WHERE cod_agencia=’123’
4. Quais os clientes que residem em localidades onde existem agências?
R.:
SELECT cod_cliente
FROM Cliente, Agencia
WHERE Cliente.localidade = Agencia.localidade
5. Quais os clientes que residem na mesma localidade das agências onde possuem
contas?
R.:
SELECT Cliente.cod_cliente
FROM Cliente, Agencia,Conta
WHERE Cliente.localidade = Agencia.localidade AND Cliente.cod_cliente =
Conta.cod_cliente AND Conta.cod_agencia = Agencia.cod_agencia
6. Quais os clientes com empréstimos de valor superior a 2.500?
R.:
SELECT cod_cliente
FROM Emprestimo
WHERE valor > 2 500
7. Quais os nomes dos clientes com a mesma profissão que o cliente com
cod_cliente = ‘1234’?
R.:
SELECT cliente
FROM Cliente
WHERE profissao = (SELECT profissao FROM Cliente WHERE
cod_cliente=’1234’)
OBS: tente também usar a solução de SELF JOIN
8. Listar as contas (num_conta, saldo) da agência cujo cod_agencia = ‘123’, por
ordem decrescente do seu valor de saldo.
R.:
SELECT num_conta, saldo
FROM Conta
WHERE cod_agencia=’123’
ORDER BY saldo
9. Quantas contas existem em todas as agências do Banco?
R.:
SELECT COUNT(*)
FROM Conta
10. Quantos clientes possuem contas na agência cujo cod_agencia = ‘123’?
R.:
SELECT COUNT (DISTINCT cod_cliente)
FROM Conta
WHERE cod_agencia=’123’
11. Listar o número de contas existentes em cada agência.
R.:
SELECT cod_agencia, COUNT(*) AS [Numero de Contas]
FROM Conta
GROUP BY cod_agencia
12. Quais os clientes cuja profissão é desconhecida?
R.:
SELECT cod_cliente
FROM Cliente
WHERE ISNULL(profissão)
13. Para cada agência (cod_agencia) com menos de 1000 contas, listar os valores
máximo e mínimo dos saldos dessas contas, assim como o saldo médio.
R.:
SELECT cod_agencia, MAX(saldo) AS [Maior Saldo], MIN(saldo)AS [Menor
Saldo], AVG(saldo)AS [Saldo Médio]
FROM Conta
GROUP BY cod_agencia
HAVING COUNT(*) < 1000
14. Quais os clientes (cod_cliente e cliente) da agência cod_agencia = ‘123’?
(solução obtida pressupondo que um cliente pode ter um empréstimo sem ter
uma conta, pensamento errado na prática. Contudo, se assim não for, esta solução
é igual à questão 3 deste mesmo exercicio)
R.:
SELECT DISTINCT Cliente.cod_cliente, Cliente.cliente
FROM Cliente, Emprestimo, Conta
WHERE (Cliente.cod_cliente= Emprestimo.cod_cliente AND
Emprestimo.cod_agencia=’123’) OR (Cliente.cod_cliente= Conta.cod_cliente
AND Conta.cod_agencia=’123’)
15. Quais os clientes (cod_cliente e cliente) que são, simultaneamente, depositantes
e devedores na agência cujo cod_agencia = ‘123’?
R.:
SELECT DISTINCT Cliente.cod_cliente, Cliente.cliente
FROM Cliente, Emprestimo, Conta
WHERE Cliente.cod_cliente= Emprestimo.cod_cliente AND
Cliente.cod_cliente= Conta.cod_cliente AND Emprestimo.cod_agencia=’123’
AND Emprestimo.cod_agencia =Conta.cod_agencia
16. Quais os clientes (cod_cliente e cliente) da agência com cod_agencia = ‘123’que
apenas são depositantes?
R.:
SELECT cod_cliente, cliente
FROM Cliente, Emprestimo, Conta
WHERE Cliente.cod_cliente= Conta.cod_cliente AND
Emprestimo.cod_cliente<> Conta.cod_cliente AND
Emprestimo.cod_agencia=’123’ AND
Emprestimo.cod_agencia =Conta.cod_agencia
17. Quais os clientes (cod_cliente e cliente) com, pelo menos, um empréstimo no
banco?
R.:
SELECT cod_cliente, cliente
FROM Cliente, Emprestimo
WHERE Cliente.cod_cliente= Emprestimo.cod_cliente
GROUP BY cod_cliente, cliente
HAVING COUNT(*)>=1
18. Quais as agências (cod_agencia, agencia) com depositantes residentes em
Lisboa?
R.:
SELECT cod_agencia, agencia
FROM Cliente, Agencia,Conta
WHERE Cliente.cod_cliente= Conta.cod_cliente AND
Agencia.cod_agencia=Conta.cod_agencia AND Cliente.localidade LIKE
“Lisboa*”
19. Quais os clientes cujo saldo total das suas contas é superior ao valor de qualquer
empréstimo contraído neste banco?
R.:
SELECT cod_cliente, cliente
FROM Cliente, Conta, Emprestimo
WHERE Cliente.cod_cliente= Conta.cod_cliente
GROUP BY cod_cliente, cliente
HAVING SUM(Conta.saldo)>(SELECT MAX(Emprestimo.valor) FROM
Emprestimo)

Considere o seguinte esquema relacional e responda às questões a seguir apresentando o


SQL.
Editora (editoraID, denominação, morada, telefone)
Interprete (interpreteID, nome artístico, país, contato, editoraID)
Disco (referência, titulo, duração, ano edição, editoraID, interpreteID)
1. Quais os interpretes portugueses da editora ‘Pimba Records’?
R.:
SELECT [nome artístico]
FROM Interprete, Editora
WHERE denominação LIKE ‘Pimba Records’ AND país LIKE ‘Portugal’
AND Interprete.editoraID=Editora.editoraID
2. Quantos interpretes há por país.
R.:
SELECT país, COUNT(*) AS [Número de Intérpretes]
FROM Interprete
GROUP BY país
3. Quais as denominações, moradas e telefones das editoras com discos anteriores a
1960.
R.:
SELECT denominação, morada, telefone
FROM Editora, Disco
WHERE [ano edição]<1960 AND Disco.editoraID=Editora.editoraID

Considere o esquema relacional seguinte e responda às questões, apresentando o


respectivo SQL.
Despesa ( despesaID, valor, natureza, reservaID)
Pagamento( pagamentoID, montante, reservaID)
Reserva( reservaID, num_noites, clienteID)
Cliente( clienteID, nome, morada, telefone, dataNascimento)
1. O Hotel pretende saber o montante das vendas em função da sua natureza.
R.:
SELECT natureza, SUM(valor) AS [Volume de Vendas]
FROM Despesa
GROUP BY natureza
2. Qual o valor da conta corrente (pagamentos - despesas) do cliente, que deverá
ser identificado pelo clienteID?Atenda ao fato de que o cliente pode ter várias
reservas ao mesmo tempo.
R.:
SELECT clienteID, SUM(montante)-SUM(valor) AS [Conta Corrente]
FROM Despesa, Pagamento, Reserva
WHERE Despesa.reservaID= Reserva.reservaID AND
Pagamento.reservaID=Reserva.reservaID
GROUP BY clienteID
3. Qual o ano em que nasceu o cliente mais idoso da cadeia de hoteis?
R.:
SELECT MIN(YEAR(dataNascimento)) AS [Ano deNascimento do Cliente
mais Idoso]
FROM Cliente
4. Liste os clientes (clienteID) ordenados por ordem ascendente de clienteID, cuja
média de noites por reserva é superior a 2.
R.:
SELECT clienteID
FROM Reserva
GROUP BY clienteID
HAVING AVG(num_noites)>2
ORDER BY clienteID
CATEGORIA (CodCategoria, NomeCategoria)

PRODUTO (CodProduto, DescricaoProd, PrecoVenda, CodCategoria)

ENTRADAPRODUTO (NumeroEntrada, Data, CodProduto, QtdEntrada, PrecoCusto)

Dadas as tabelas acima:

1) Liste todos os produtos e suas respectivas categorias (DescricaoProd,


NomeCategoria)

2) Liste todos os produtos e suas quantidades adquiridas em 15/04/2004 (CodProduto,


QtdEntrada)

3) Liste a data de entrada, descrição do produto, quantidade de entrada e nome da


categoria do produto de todos os produtos adquiridos após 01/01/2006 (Data,
DescricaoProd, QtdEntrada, NomeCategoria)

4) Liste a quantidade total de entrada dos produtos com código igual a ‘1234’
(QtdTotal)

5) Liste a quantidade total de entrada de cada categoria de produto, ou seja, agrupada


pelo nome da categoria dos produtos (NomeCategoriua, qtdtotal)

6) Liste o preço médio de custo dos produtos adquiridos em 15/05/2006


(MediaPrecoCusto)

7) Liste o preço médio de custo de cada produto adquirido, ou seja, o preço médio de
custo agrupado pelo código do produto (CodProduto, MediaPrecoCusto)

8) Liste somente os códigos dos produtos adquiridos que tiveram o preço médio de
custo maior que 20,00 (CodProduto, MediaPrecoCusto

9) A partir das tabelas CATEGORIA (CodCategoria, NomeCategoria), PRODUTO


(CodProduto, NomeProduto, PrecoProduto, CodCategoria), VENDA(CodVenda,
DataVenda, CodCliente), VENDAITEM (CodVenda, CodProduto, QtdVendida,
PrecoVenda) e CLIENTE (CodCliente, NomeCliente, telefone, datanasc), responda
usando SQL:

a) Liste as categorias iniciadas com a letra “A” e para cada categoria, liste quantos
produtos custam entre 40,00 e 80,00 cada uma possui, sendo que é desejado que
seja listado no resultado somente os dados para as categorias que possuírem mais
de 20 produtos nestas condições (NomeCategoria, TotalProdutos)
b) Liste o nome e o preço de todos os produtos da categoria “Impressoras”.
c) Liste os produtos (NomeProduto) que não foram vendidos no mês de janeiro de
2000.
d) Aumente o preço em 10% dos produtos da Categoria de código = 27
LISTA DE EXERCÍCIOS DE NORMALIZAÇÃO

1) Dada a relação R (#cod_cliente, #cod_ritmopreferido, nomeritmopreferido,


tel_cliente) que identifica os clientes, seus ritmos preferidos de disco, o nome do(s)
ritmo(s) preferido(s) e o telefone do cliente, com :

cod_ritmopreferido → nomeritmopreferido
cod_cliente → tel_cliente

a) Que forma normal não é satisfeita ? Por quê ?


b) Dê um exemplo de anomalia de ATUALIZAÇÃO para a relação R.
c) Elimine as anomalias/redundâncias definindo a(s) nova(s) tabela(s) normalizada(s).
Obs: a → b indica que o campo b é funcionalmente dependente de a

2) A tabela T contém os dados históricos do suprimento de peças feito pelos


fornecedores para os departamentos de uma empresa.
T (CF, CP, CD, DataFornecimento, Quantfornecida , NomeFornecedor, NomePeca )
onde CF = Código Fornecedor, CP = Código Peça, CD = Código do Departamento,
(CF,CP,CD,DataFornecimento) → QuantFornecida , CF → NomeFornecedor e CP →
NomePeca

2.1) Qual o(s) atributo(s) que forma(m) a chave primária da tabela T ?


2.2) Qual Forma Normal não é satisfeita ? Por quê ?
2.3) Transforme a tabela T em tabela(s) que atenda(m) a 3a. forma normal, sem
esquecer de identificar a chave primária da(s) tabela(s) resultante(s).

3) A tabela abaixo possui informações sobre um funcionário de uma empresa e seu(s)


filhos(s).

#Matricula_func, #Nome_filho, Nome_Funcionario

◼ Qual forma normal não é satisfeita para essa tabela e por que ?
◼ Quais anomalias possuo ? Dê exemplos de cada uma destas anomalias.
◼ Reduza as anomalias/redundâncias definindo nova(s) tabela(s) normalizada(s).

4) Assumindo que o departamento da universidade possui um único diretor, responda:


OBS: cada professor trabalha em um único departamento.

◼ Qual forma normal não é atendida para a tabela abaixo e por que ?
◼ Defina nova(s) tabela(s) já normalizada(s).

#cod_professor, nomeprofessor, coddepartamento, cod_diretor

Você também pode gostar