Kelvin Lehrback Guilherme
Este documento contém a especificação do projeto do banco de dados Provisões de Emergência
e motivação da escolha realizada.
O sistema “Provisões de emergência” tem como objetivo contribuir com o planejamento financeiro de famílias e ONGS, gerando relatórios de preços e/ou dos produtos realmente essenciais para cada realidade num determinado intervalo de tempo. Devido ao cenário que se encontra o ano de 2020, tornou-se ainda mais importante ter um controle financeiro, principalmente quando o assunto é alimentação e saúde. O objetivo inicial do sistema é gerar um relatório listando todos os bens de consumo para a sobrevivência num determinado intervalo de tempo, bem como os seus respectivos preços.
O sistema “Provisões de emergência” conterá as informações aqui detalhadas. É necessário o cadastro da quantidade de pessoas. Pessoas são cadastradas por meio do nome, CPF, data de nascimento, grupo familiar a qual pertence e o informe se necessitam ou não de medicamentos, se necessário medicamentos, informar o(s) nome(s) do(s) medicamento(s), a dose diária de cada um e o preço médio (se conhecido o preço) ou um previsto. É necessário também informar a quantidade de comida que as pessoas consomem por dia, bem como quais alimentos essenciais para a preparação das respectivas refeições diárias (arroz, feijão, carne, verduras) e seus respectivos preços (médio ou previsto). Há ainda os gastos com produtos de limpeza, seja ele geral(desinfetantes, sabão para roupas etc) ou pessoal (sabonetes, pasta de dente, etc), informar também o preço médio ou previsto. Para a compra dos produtos, é necessário conhecer os fornecedores. Fornecedores possuem nome e quais produtos eles entregam, podendo ter o(s) produto(s) em estoque ou não.
Protótipo de telas feito para o sistema "Provisoes de Emergencia" (Arquivo .PDF)
O Sistema "Provisões de Emergência" precisa inicialmente dos seguintes relatórios:
- Relatório listando todos os produtos (bens de consumo) de determinado grupo familiar.
- Relatório listando o preço (individual e total) dos produtos de cada grupo familiar.
- Relatório listando a quantidade de cada produto necessário de cada grupo familiar.
- Relatório listando quais produtos estão disponíveis para ser entregues por determinado fornecedor.
- Relatório listando qual tipo de produto está sendo mais requisitado nos grupos familiares.
- Relatório listando qual produto está sendo mais requisitado nos grupos familiares.
- Relatório listando as pessoas de cada grupo familiar.
- Relatório listando quais produtos cada pessoa está consumindo.
- Relatório listando todos os produtos cadastrados ordenando pelo tipo.
Tabela contendo exemplos de dados do sistema "Provisões de Emergência" (Arquivos .xlsx)
PedidON: Thiago da Costa Freitas, Eduarda Simões
Observações feitas pelos integrantes: Se o relaciomento "Consome" não deveria ser uma tabela associativa.
ATVGen: Matheus Costa
Observações feitas pelos integrantes: Não precisaria do endereço do fornecedor e da pessoa? Incluindo assim, algo com geolocalização.
Observações em análise.
GRUPO_FAMILIAR: Tabela que armazena as informações referentes ao grupo familiar que determinada pessoa pertence.
cod_grupo-familiar: Campo do tipo inteiro que é utilizado para identificar determinado grupo familiar que a pessoa está inserida.
nome_grupo_familiar: Campo do tipo string que nomeia determinado grupo familiar.
PESSOA: Tabela que armazena as informações referentes à pessoa.
cod_pessoa: Campo do tipo inteiro que identifica determinada pessoa.
fk_cod_grupo_familiar: Chave estrangeira do tipo inteiro que identifica à qual grupo familiar essa pessoa está inserida.
nome_pessoa: Campo do tipo varchar utilizado para armazenar o nome de cada pessoa.
cpf: Campo do tipo varchar que armazena o número de cadastro de pessoa física de cada pessoa.
data_nascimento: Campo do tipo date que armazena a data de nascimento da pessoa.
PESSOA_CONSOME: Tabela que armazena as informações referentes ao consumo de cada pessoa.
cod_pessoa: Campo do tipo inteiro que identifica a tupla contendo as informações de consumo de cada pessoa.
fk_cod_produto: Chave estrangeira do tipo inteiro que identifca qual produto a pessoa está consumindo.
fk_cod_pessoa: Chave estrangeira do tipo inteiro que identifica qual pessoa está consumindo determinado produto.
quantidade_produto: Campo do tipo float que identificar o quanto aquela pessoa está consumindo determinado produto.
FORNECEDOR: Tabela que armazena as informações dos fornecedores cadastrados.
cod_fornecedor: Campo do tipo inteiro que identifica cada fornecedor no sistema.
nome_fornecedor: Campo do tipo varchar que nomeia cada fornecedor disponível no sistema.
FORNECEDOR_PRODUTO: Tabela que armazena as informações referentes a qual produto cada fornecedor fornece.
cod_fornecedor_produto: Campo do tipo inteiro que identifica a tupla contendo as informações do fornecimento de cada produto.
fk_cod_fornecedor: Chave estrangeira do tipo inteiro que identifica qual fornecedor está fornecendo determinado produto.
fk_cod_produto: chave estrangeira do tipo inteiro que identifica qual produto está sendo fornecido.
PRODUTO: Tabela que armazena as informações referentes à produto.
cod_produto: Campo do tipo inteiro que identifica cada produto no sistema.
fk_cod_tipo_produto: Chave estrangeira do tipo inteiro que identifica o tipo do produto.
preco_produto: Campo do tipo float que armazena o preco aproximado de um produto.
nome_produto: Campo do tipo varchar que nomeia cada produto.
TIPO_PRODUTO: Tabela que armazena as informações refentes ao tipo de produto.
cod_tipo_produto: Campo do tipo inteiro que identifica o tipo de produto.
nome_tipo_produto: Campo do tipo varchar que nomeia cada tipo de produto.
create table GRUPO_FAMILIAR(
cod_grupo_familiar SERIAL primary key not null,
nome_grupo_familiar varchar(30) not null
);
create table PESSOA(
cod_pessoa SERIAL primary key not null,
fk_cod_grupo_familiar integer not null,
nome_pessoa varchar(50) not null,
cpf varchar(11) not null,
data_nascimento date not null
);
create table PESSOA_CONSOME(
cod_pessoa_consome SERIAL primary key not null,
fk_cod_produto integer not null,
fk_cod_pessoa integer not null,
quantidade_produto float not null
);
create table FORNECEDOR(
cod_fornecedor SERIAL primary key not null,
nome_fornecedor varchar(30) not null
);
create table FORNECEDOR_PRODUTO(
cod_fornecedor_produto SERIAL primary key not null,
fk_cod_fornecedor integer not null,
fk_cod_produto integer not null
);
create table PRODUTO(
cod_produto SERIAL primary key not null,
fk_cod_tipo_produto integer not null,
preco_produto float not null,
nome_produto varchar(40) not null
);
create table TIPO_PRODUTO(
cod_tipo_produto SERIAL primary key not null,
nome_tipo_produto varchar(30) not null
);
alter table PESSOA
add foreign key(fk_cod_grupo_familiar) references GRUPO_FAMILIAR(cod_grupo_familiar);
alter table PESSOA_CONSOME
add foreign key(fk_cod_produto) references PRODUTO(cod_produto),
add foreign key(fk_cod_pessoa) references PESSOA(cod_pessoa);
alter table FORNECEDOR_PRODUTO
add foreign key(fk_cod_fornecedor) references FORNECEDOR(cod_fornecedor),
add foreign key(fk_cod_produto) references PRODUTO(cod_produto);
alter table PRODUTO
add foreign key(fk_cod_tipo_produto) references TIPO_PRODUTO(cod_tipo_produto);
Script de exclusão, criação da estrutura e inserção dos dados (arquivo SQL)
Slides da Apresentação - Modelo Pecha Kucha
Slides de Apresentação - MongoDB
Slides de Apresentação - ArangoDB
Slides de Apresentação - Comparação entre os dois bancos NoSQL
Moises Savedra Omena
Não apenas esse projeto recebeu nota máxima mas como também a soma das notas do semestre inteiro desse discente.
De 0 a 100, nota 100.