Você está na página 1de 17

Módulo 2: Conceitos e Estrutura de Bases de Dados

Aula 4
Exercícios de Desenho de Bases de Dados
Exercício 1
Considere o diagrama de classe que se apresenta de seguida e tente validar se as
seguintes afirmações são verdadeiras ou falsas:

● Um funcionário pode ser chefe dele próprio?

● Para um determinado ano, podem ser registados vários valores de vendas de um


mesmo cliente?

● Um funcionário pode ter como chefe um funcionário de outra filial?


Exercício 1- Diagrama de Classes
Filial Funcionário
nome : String nome : String Vendas
1…1 1…* 0…1 valor : int
local : String
0…*
Chefe
Filial Região Norte Cliente
0…* nome : String
0…* Ano
ano : int
0…*

Cliente Região 0…*


Exercício 1- Resolução
● Um funcionário pode ser chefe dele próprio? Verdadeiro

● Para um determinado ano, podem ser registados vários valores de vendas de um


mesmo cliente? Verdadeiro, desde que as regiões sejam diferentes.

● Um funcionário pode ter como chefe um funcionário de outra filial? Verdadeiro


Exercício 2
Um ginásio pretende automatizar o controlo de acesso dos sócios às suas instalações. O
acesso às instalações é controlado através de um leitor de cartões magnético que lê o
cartão do sócio. A frequência com que um sócio pode entrar no ginásio, bem como o
horário de entrada, dependem do tipo de cartão que possui. Por exemplo, existem
cartões que apenas permitem que o sócio entre nas instalações um vez por dia, ou
apenas a partir das 17h00, ou apenas que possa frequentar aos dias da semana, etc.
Após entrarem no ginásio, os sócios introduzem o seu cartão num aparelho que lhes
mostras as modalidades (aulas) disponíveis no momento e para as quais ainda existem
vagas. Após o sócio indicar que modalidade vai frequentar, a máquina imprime uma
senha necessário para que o sócio possa frequentar a modalidade.
De forma a planear as suas actividades futuras, o ginásio pretende manter um registo de
todas as horas de entrada e saída dos sócios. Sobre os sócios, para além do seu nome e
morada é importante conhecer a sua idade.
Exercício 2- Diagrama de Classes
Horário Tipo de Cartão
Registo Entrada Ginásio
dia de semana : String 0…* 0…* designação do tipo :
String hora de saída : int

0…* 1…1
Sócio 0…*
Horário do Cartão
hora de entrada : int número: int 0…1
nome : String Modalidade
morada : String
data nascimento: Date designação : String
0…* modalidade: String
0…*
Dia 0…*
dia do mês : int Hora
0…* hora do dia : int
1…1 0…*
Exercício 2
1-Pretende-se que em qualquer momento o sistema saiba que monitor está a dar uma
aula de uma determinada modalidade. O administrador do sistema também deverá ter
acesso às “especialidades” dos monitores (modalidades para as quais eles estão aptos a
dar aula) de forma a facultar o processo de atribuição de horários aos monitores.
Altere o diagrama de classes para que ele contenha a informação de suporte a estas
novas funcionalidades.
Exercício 2- Resolução 1
Dia Hora Modalidade
1…1 designação : String
dia do mês : int hora do dia : int
0…* 0…* modalidade: String
0…*

Monitor
Data
nome : String
hora : int 0…* 0…* especialidade : String 1…1 Registo de Modalidade
0…*
Exercício 2
2-Considerando os requisitos e restrições do diagrama de classes anterior, assinale se a
afirmação é correcta (V) ou incorrecta (F):
a. Na associação “Registo Entrada Ginásio” deveria constar o atributo Hora Entrada caso
contrário apenas é conhecida a hora de saída.
b. O diagrama obriga a que se introduza todos os dias do calendário em que uma
modalidade ocorre, não permitindo, por exemplo, indicar apenas os dias da semana
em que ela ocorre.
c. Dado que para um mesmo dia as horas não se repetem (não ocorre, por exemplo
duas vezes às 21h no mesmo dia), como os objectos da classe “Hora” apenas podem
estar associados a um dia (classe “Dia”), não é necessário recorrer-se à composição.
d. A cardinalidade da associação entre “Registo Entrada Ginásio” e “Modalidade” dado
que não obriga a que um registo de entrada esteja associado a uma modalidade,
permite que o registo fique associado a modalidades que não constam na classe
“Modalidade”)
Exercício 2- Resolução 2
a. Na associação “Registo Entrada Ginásio” deveria constar o atributo Hora Entrada caso
contrário apenas é conhecida a hora de saída. - Falso

b. O diagrama obriga a que se introduza todos os dias do calendário em que uma


modalidade ocorre, não permitindo, por exemplo, indicar apenas os dias da semana
em que ela ocorre. - Verdadeiro

c. Dado que para um mesmo dia as horas não se repetem (não ocorre, por exemplo
duas vezes às 21h no mesmo dia), como os objectos da classe “Hora” apenas podem
estar associados a um dia (classe “Dia”), não é necessário recorrer-se à composição. -
Falso

d. A cardinalidade da associação entre “Registo Entrada Ginásio” e “Modalidade” dado


que não obriga a que um registo de entrada esteja associado a uma modalidade,
permite que o registo fique associado a modalidades que não constam na classe
“Modalidade”). - Falso
Exercício 3
Considere o diagrama de classes relativo a uma aplicação que disponibiliza artigos
através de leilões online.
Sobre cada artigo leiloado, para além da sua descrição e categoria (Música, Mobiliário,
etc.), é necessário conhecer a base de licitação (valor a partir do qual são efectuadas as
licitações), o seu valor mínimo de venda (valor a partir do qual o vendedor aceita vender o
artigo a quem efectuou a maior licitação) e a data e hora a partir do qual não são
possíveis mais licitações. Sobre as licitações é necessário conhecer a data, hora, valor
licitado e identificação do licitador.
Exercício 3- Diagrama de Classes
Artigo em Leilão
Categoria Artigo número artigo: int
identificação: int descrição: String
1…1
0…* base de licitação : int
valor mínimo : int
1…1 data limite : Date
hora limite : int
0…*
Licitação 1…1
0…*
número licitação: int
valor: int
data de licitação : Date Utilizador
0…* 1…1
hora de licitação : int nome: String
mail: String
Exercício 3

1-Altere o diagrama de classes para que exista a possibilidade de a entidade poder definir
escalões de taxas de comissão a cobrar aos vendedores. As comissões poderão variar
consoante a natureza do artigo e o valor de venda, tal como se exemplifica no seguinte
quadro de escalões:

Categoria Electrodomésticos Gravador de DVD Guitarra eléctrica ...


Valor mínimo
Acima de 10€ 10% 12% 10% ...

Acima de 100€ 8% 10% 10% ...

... ... ... ... ...


Exercício 3- Diagrama de Classes
Comissão
percentagem: Artigo em Leilão
double Categoria Artigo número artigo: int
identificação: int descrição: String
1…1
0…* 0…* base de licitação : int
valor mínimo : int
1…1 data limite : Date
hora limite : int
0…*
Escalão 0…* 0…*
valor mínimo: int Licitação
número licitação: int
valor: int 1…1
data de licitação : Date
0…* Utilizador
hora de licitação : int
nome: String
mail: String
1…1
Exercício 3

2-Altere o diagrama para que exista a possibilidade de efectuar pesquisas avançadas


nomeadamente, poder-se indicar na pesquisa de leilões que apenas se pretendem
artigos de uma determinada categoria e todas as subcategorias dessa categoria podendo
haver um número arbitrário de níveis de subcategorias.
Exercício 3- Diagrama de Classes
Comissão Categoria Superior
percentagem: 0…1 Artigo em Leilão
double Categoria Artigo número artigo: int
identificação: int descrição: String
1…1
0…* 0…* base de licitação : int
valor mínimo : int
1…1 data limite : Date
0…* hora limite : int
0…* Subcategoria
0…* 0…*
Escalão Licitação
valor mínimo: int número licitação: int
valor: int 1…1
data de licitação : Date
0…* Utilizador
hora de licitação : int
nome: String
mail: String
1…1

Você também pode gostar