Ferramentas Escolhidas
O PostgreSQL é uma ferramenta que atua como sistema de gerenciamento de bancos de dados relacionados. Seu foco é permitir implementação da linguagem SQL em estruturas, garantindo um trabalho com os padrões desse tipo de ordenação dos dados. Tem o papel de gerenciar os dados desses bancos de maneira organizada e eficaz, rodando e gravando todas as informações que ficam registradas nesses compartimentos. Por meio desse sistema, usuários podem executar consultas de maneira simples, sem precisar acessar diretamente o banco de dados. O Adminer é uma ferramenta completa para administração de banco de dados, desenvolvido em PHP. Ao contrário do phpMyAdmin, o Adminer é constituído em um único arquivo, pronto para ser implantado no servidor. O Adminer está disponível para MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Elasticsearch, MongoDB e outros via plugin. O dbdiagram.io é uma ferramenta online intuitiva e gratuita, projetada para simplificar a criação de diagramas de banco de dados. Ideal para desenvolvedores, analistas de sistemas e qualquer profissional envolvido no design de estruturas de dados, essa plataforma permite aos usuários desenhar rapidamente modelos de banco de dados por meio de uma interface visualmente clara e fácil de usar. é uma ferramenta que facilita a definição e execução de aplicações multi-contêineres Docker. Com ele, é possível configurar todos os serviços de que sua aplicação depende (como bancos de dados, filas de trabalho, caches, etc.) em um único arquivo docker-compose.yml. Além de ser projetado para facilitar o desenvolvimento e teste de aplicações que requerem um banco de dados PostgreSQL, fornecendo uma maneira fácil de gerenciar o banco de dados por meio de uma interface web. |
Modelagem
Optamos por criar um banco de dados relacional, tendo em vista que o banco possui várias relações entre as diferentes tabelas existentes que compõem o projeto Excedentes.
Modelo ER
Para ver com mais detalhes sobre este modelo, clique aqui
Scripts de criação das tabelas
Table clientes {
id integer [increment, primary key]
tipo_cliente enum('Pessoa Fisica', 'Pessoa Juridica') [not null]
nome varchar2 [not null]
cpf_cnpj varchar2 [not null, unique]
email varchar2 [not null, unique]
senha varchar2 [not null]
isOng bool [not null]
createdAt timestamp [not null]
updatedAt timestamp [not null]
deletedAt timestamp
}
Table pedidos {
id integer [increment, primary key]
id_cliente integer [not null]
codigo integer [not null]
valor_total double [not null]
data date [not null]
aberto bool [not null]
createdAt timestamp [not null]
updatedAt timestamp [not null]
}
Table alimentos {
id integer [primary key, not null]
id_empresa integer [not null]
nome varchar2 [not null]
descricao varchar2 [not null]
preco double [not null]
quantidade integer [not null]
marca varchar2 [not null]
data_validade date [not null]
categoria varchar2 [not null]
foto varchar2
cod_barras varchar2 [not null]
createdAt timestamp [not null]
updatedAt timestamp [not null]
deletedAt timestamp
}
Table item_pedido {
id integer [increment, primary key]
id_pedido integer [not null]
id_alimento integer [not null]
quantidade integer [not null]
preco_unitario double [not null]
createdAt timestamp [not null]
updatedAt timestamp [not null]
}
Table empresas {
id integer [increment, primary key]
nome varchar2 [not null]
cnpj varchar2 [not null, unique]
email varchar2 [not null, unique]
senha varchar2 [not null]
horario_comercial varchar2 [not null]
id_endereco integer [not null, unique]
createdAt timestamp [not null]
updatedAt timestamp [not null]
deletedAt timestamp
}
Table enderecos {
id integer [increment, primary key]
nome_formatado varchar2 [not null]
latitude double [not null]
longitude double [not null]
createdAt timestamp [not null]
updatedAt timestamp [not null]
}
Ref: empresas.id_endereco > enderecos.id
Ref: pedidos.id_cliente > clientes.id
Ref: alimentos.id_empresa > empresas.id
Ref: item_pedido.id_pedido > pedidos.id
Ref: item_pedido.id_alimento > alimentos.id
Implementação
- Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina.
- Clone o repositório do aplicativo Excedentes.
- Navegue até o diretório onde o arquivo
docker-compose.yml
está localizado. - Execute o seguinte comando para iniciar os serviços:
docker-compose up -d
- O banco de dados PostgreSQL estará disponível em
localhost:5432
. - O Adminer estará disponível em
localhost:8080
para gerenciar o banco de dados.
Reconstrução de containers
Em certos momentos, pode ser necessário reconstruir suas imagens Docker para aplicar alterações feitas no Dockerfile ou nas configurações definidas no docker-compose.yml
. Para isso, você pode utilizar a opção --build
com o comando docker-compose up
.
docker-compose up --build -d
Se desejar garantir que as imagens sejam reconstruídas do zero, sem utilizar o cache de construções anteriores, você pode usar o comando docker-compose build com a opção --no-cache:
docker-compose build --no-cache
Encerramento
Para encerrar o container sem removê-lo, você pode usar o seguinte comando no terminal:
docker-compose stop
Para parar e remover todos os serviços definidos no seu arquivo docker-compose.yml. Certifique-se de estar no mesmo diretório onde o arquivo está localizado antes de executar o comando.
docker-compose down
Para uma limpeza completa, incluindo volumes, acrescente -v
ao comando (docker-compose down -v
).