Enunciado do problema

Propaganda
Base de Dados 2004/05
Enunciado do Projecto
Neste projecto pretende-se implementar uma base de dados e uma aplicação para
gerir stocks de uma empresa. Os alunos devem organizar-se em grupos de três
pessoas para a realização do projecto.
O projecto será avaliado por dois relatórios que deverão ser entregues em papel
segundo o template disponibilizado na página da disciplina. Junto com o segundo
relatório deverá ser entregue um CDROM ou disquete com todo o código
desenvolvido pelos alunos.
Para facilitar a correcção, os relatórios deverão ser apenas agrafados. Não utilize
capas rígidas ou transparentes, não encaderne o relatório (com argolas ou a
quente), nem intercale folhas em branco dentro do relatório. Em alternativa, os
relatórios e código podem ser enviados por email para o responsável da cadeira.
O nome dos ficheiros a enviar deve obedecer ao seguinte formato:

númerodogrupoReln.doc (n=1 para o 1º relatório e n= 2 para o 2º relatório)

númerodogrupoApl.rar ou númerodogrupoApl.zip (para o código da
aplicação da 2ª parte).
1 Primeira Parte
Na primeira parte do projecto, os alunos vão desenhar e implementar a base de
dados de acordo com os requisitos especificados. O primeiro relatório deverá ser
entregue até 9/11/04 e deverá conter, para além da capa formatada de acordo com
o template a fornecer, as seguintes secções:
1. Introdução – objectivo deste relatório, metodologia de trabalho, qual o SGBD
seleccionado, etc. (Máximo: 1 página.)
2. Modelo de classes UML – Converta o diagrama ER apresentado em 1.2
(inventário) no respectivo diagrama de classes de UML. Diga qual o conhecimento
que perdeu na conversão ER-> diagrama de classes. Depois, modifique e enriqueça
o diagrama de classes UML que apresentou em 1.2 com os requisitos adicionais do
problema apresentados em 1.3 (facturação). Todas as restrições de integridade que
não podem ser modeladas no diagrama de classes devem se enumeradas. Pode
utilizar, se quiser, uma ferramenta de modelação como o Visio ou o PowerDesigner.
(Máximo: 2 páginas).
3. Modelo Relacional – Modelo relacional simplificado (apenas os nomes das
relações e os seus campos), convertido segundo as regras a partir do modelo de
classes UML do domínio do problema completo (cujos requisitos estão especificados
em 1.1 e 1.3). Todas as restrições de integridade que não podem ser captadas no
modelo relacional devem ser listadas. (Máximo: 2 páginas).
4. Tabelas em SQL – Instruções SQL necessárias para criar as tabelas respectivas
na base de dados. Não se esqueça de especificar todas as restrições de integridade
(chave, integridade referencial, e outras) suportadas pelo SGBD escolhido, assim
como todas as validações e valores por omissão. Deve inserir alguns registos de
1
teste nas tabelas embora estas instruções não devam aparecer no relatório.
(Máximo: 6 páginas).
5. Interrogações, Vistas e Segurança em SQL – Implementação em SQL das
interrogações listadas em 1.4. Teste as interrogações com os registos de teste e
apresente no relatório o código SQL correspondente. (Máximo: 2 páginas.)
1.1 Problema base
Pretende-se desenhar e implementar uma base de dados para gerir o inventário de
uma empresa. O inventário é um catálogo com todos os produtos que a empresa
comercializa. Neste caso, a empresa vende livros e CDs. O mercado de negócio
desta empresa já é suficientemente grande para justificar a existência de vários
armazéns espalhados pelo país. Cada um destes armazéns tem diferentes
quantidades em stock de cada um dos produtos que a empresa vende.
A base de dados deve guardar a seguinte informação:
Cada livro tem um título, um ou mais autores, e um ISBN (número único que é usado
para identificar o livro). Um livro tem um preço, um valor de IVA e pode ter um
desconto.
Os livros estão organizados em categorias (por exemplo, ficção, drama, fantasia,
banda desenhada, etc) de modo a facilitar a sua procura. Um livro tem tipicamente
um conjunto de palavras chave associadas que descrevem o conteúdo do livro.
Cada CD tem um nome de album, um ou mais artistas, uma editora discográfica,
uma identificação única (como o ISBN para os livros), um preço, um valor de IVA e
pode ter um desconto. Tal como os livros, os CDs estão organizados por categorias
(rock, jazz, clássico, etc). Os CDs pertencem a um tipo: single, double, edição
comemorativa, etc.
Um livro ou CD pode estar ou não disponível em vários armazéns. É importante
guardar a quantidade em stock de cada produto nos diferentes armazéns.
Cada armazém tem uma localização (constituída pelo nome da rua, cidade e código
postal), uma informação de contacto (número de telefone, número de fax, endereço
de mail) e um responsável sobre o qual se pretende guardar o nome e o contacto.
1.2 Modelo ER do problema base
Um modelo ER possível que corresponde aos requisitos descritos em 1.1 é o
seguinte:
2
Algumas das restrições de integridade (podem existir outras) que este modelo ER
não consegue captar são as seguintes:
RI1: Livro tem duas chaves candidatas: o id do produto e o ISBN
RI2: CD tem chaves candidatas: o id do produto e o código.
RI3: O tipo do CD pode ser: single, double, edição comemorativa, etc.
Pretende-se o diagrama de classes UML e todas as restrições de integridade que o
diagrama não consegue captar.
1.3 Requisitos do problema a resolver
A mesma empresa de comercialização de livros e CDs pretende um sistema de
facturação. Cada factura é um registo de uma transacção de venda. Pretende-se
armazenar todas as transacções de venda realizadas. Para cada encomenda feita
pelo cliente, existe normalmente uma factura. Esta factura guarda toda a informação
que diz respeito aos artigos comprados assim como informação sobre o cliente.
Aos requisitos da base de dados descritos em 1.1., deve acrescentar os seguintes:
Cada factura é identificada por um número único. A factura tem uma data de
encomenda associada. Uma factura pode incluir um ou mais produtos distintos
(livros e/ou CDs). Cada factura tem associado um comprador e um destinatário que
pode ser diferente do comprador (no caso de ser um presente). Para cada factura
existe um método de envio associado (expresso, normal, etc) com um preço distinto.
3
A factura inclui também o preço total que é calculado pela soma dos preços de todos
os produtos comprados acrescidos de IVA e do custo do envio. Deve existir também
informação sobre o método de pagamento da factura (cheque, cartão de crédito ou à
cobrança). Se o pagamento fôr feito por cartão de crédito, devem ser guardados os
detalhes do cartão (número e data de validade).
Como o cliente pode adquirir várias cópias do mesmo artigo, a quantidade adquirida
deve também constar da factura. Além desta informação, para cada produto que
consta numa factura, deve ser guardado o armazém do qual as unidades vão ser
retiradas (potencialmente provenientes de diferentes armazéns) e a data esperada
de entrega. A quantidade adquirida de cada produto tem que existir no armazém de
onde o produto é retirado.
Cada cliente (comprador e/ou destinatário) tem um nome e um endereço. O
endereço pode ser dividido em nome da rua, cidade e código postal. Adicionalmente,
pode existir informação de contacto como o telefone e endereço de mail.
1.4 Interrogações
Escreva em SQL (e teste com alguns registos) as seguintes interrogações:
A. Quais os nomes dos CDs duplos de rock?
B. Quais os produtos que não estão disponíveis em nenhum armazém (isto é, a
quantidade em stock é zero)?
C. Quais os armazéns que têm disponíveis todos os produtos comercializados
pela empresa?
D. Quais os autores que não têm livros na base de dados?
E. Quais as facturas que tem menor número de produtos?
F. Quais as facturas que têm produtos provenientes de diferentes armazéns?
G. Para uma dada cidade, quantas cópias de cada produto que consta na base
de dados, vão ser enviadas para essa cidade?
H. Suponha que existe um utilizador da base de dados que é o cliente (existente
em todos os esquemas de BD Oracle de cada grupo). O cliente só pode
consultar informação sobre os produtos, isto é a identificação, o nome, os
autores ou artistas (para livro ou CD), o preço, desconto (se existir), a
categoria, o tipo (se CD) e a quantidade existente em stock.
Utilizando os mecanismos de segurança do SQL e suportados pelo SGBD,
garanta que o cliente só pode visualizar esta informação, não a podendo
obviamente modificar.
Antes de testar as interrogações não se esqueça de inserir registos nas tabelas que
permitam obter resultados. Pode usar um utilitário de importação/exportação para
carregar directamente os registos a partir de ficheiros de texto ou escrever um
programa que cria registos com valores aleatórios.
4
Download