|
|
|
|
|
## Ferramentas Escolhidas
|
|
|
|
|
|
<table align="center"><tr><td align="center" >
|
|
|
<img src="uploads/675aef81bde448dcc2001026040a8eca/image.png" width="300px">
|
|
|
<table>
|
|
|
<tr>
|
|
|
<td>
|
|
|
|
|
|
![](uploads/675aef81bde448dcc2001026040a8eca/image.png)
|
|
|
|
|
|
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.
|
|
|
|
|
|
<img src="uploads/a082b9db86e0b08a31fa4b5435d8b7bb/image.png" width="300px">
|
|
|
![](uploads/a082b9db86e0b08a31fa4b5435d8b7bb/image.png)
|
|
|
|
|
|
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.
|
|
|
|
|
|
<img src="uploads/193543472e9e058031ce10b7d5be43b0/image.png" width="300px">
|
|
|
![](uploads/193543472e9e058031ce10b7d5be43b0/image.png)
|
|
|
|
|
|
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.
|
|
|
|
|
|
<img src="uploads/a10549802509a99eeec9ac413f4e337a/image.png" width="300px">
|
|
|
![](uploads/a10549802509a99eeec9ac413f4e337a/image.png)
|
|
|
|
|
|
é 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.
|
|
|
|
|
|
</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
## Modelagem
|
... | ... | @@ -27,118 +29,107 @@ Optamos por criar um banco de dados relacional, tendo em vista que o banco possu |
|
|
|
|
|
### Modelo ER
|
|
|
|
|
|
![image](uploads/c2b8ec891f0bc362bfa81b228efca390/image.png)
|
|
|
![bddNovo](uploads/bf00b28d1ca5bbc7a5a4ed6f40b967f1/bddNovo.png)
|
|
|
|
|
|
Para ver com mais detalhes sobre este modelo, clique [aqui](https://dbdiagram.io/d/Copy-of-Untitled-Diagram-660c745903593b6b61017b26)
|
|
|
|
|
|
## Scripts de criação das tabelas
|
|
|
|
|
|
```
|
|
|
```plaintext
|
|
|
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]
|
|
|
email varchar2 [not null]
|
|
|
cpf_cnpj varchar2 [not null, unique]
|
|
|
email varchar2 [not null, unique]
|
|
|
senha varchar2 [not null]
|
|
|
createdAt date [not null]
|
|
|
updatedAt date [not null]
|
|
|
deletedAt date
|
|
|
isOng bool [not null]
|
|
|
createdAt timestamp [not null]
|
|
|
updatedAt timestamp [not null]
|
|
|
deletedAt timestamp
|
|
|
}
|
|
|
```
|
|
|
|
|
|
```
|
|
|
```plaintext
|
|
|
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]
|
|
|
createdAt date [not null]
|
|
|
updatedAt date [not null]
|
|
|
deletedAt date
|
|
|
aberto bool [not null]
|
|
|
createdAt timestamp [not null]
|
|
|
updatedAt timestamp [not null]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
```
|
|
|
```plaintext
|
|
|
Table alimentos {
|
|
|
id_alimento integer [primary key, not null]
|
|
|
id_empresa integer [primary key, not null]
|
|
|
id integer [primary key, not null]
|
|
|
id_empresa integer [not null]
|
|
|
nome varchar2 [not null]
|
|
|
descricao varchar2
|
|
|
descricao varchar2 [not null]
|
|
|
preco double [not null]
|
|
|
quantidade integer [not null]
|
|
|
marca varchar2
|
|
|
marca varchar2 [not null]
|
|
|
data_validade date [not null]
|
|
|
categoria varchar2 [not null]
|
|
|
foto varchar2
|
|
|
cod_barras varchar2
|
|
|
createdAt date [not null]
|
|
|
updatedAt date [not null]
|
|
|
deletedAt date
|
|
|
deleted bool [not null]
|
|
|
cod_barras varchar2 [not null]
|
|
|
createdAt timestamp [not null]
|
|
|
updatedAt timestamp [not null]
|
|
|
deletedAt timestamp
|
|
|
}
|
|
|
```
|
|
|
|
|
|
```
|
|
|
```plaintext
|
|
|
Table item_pedido {
|
|
|
id integer [increment, primary key]
|
|
|
id_pedido integer [not null]
|
|
|
id_alimento integer [not null]
|
|
|
id_empresa integer [not null]
|
|
|
quantidade integer [not null]
|
|
|
preco_unitario double [not null]
|
|
|
createdAt date [not null]
|
|
|
updatedAt date [not null]
|
|
|
deletedAt date
|
|
|
|
|
|
createdAt timestamp [not null]
|
|
|
updatedAt timestamp [not null]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
```
|
|
|
```plaintext
|
|
|
Table empresas {
|
|
|
id integer [increment, primary key]
|
|
|
nome varchar2 [not null]
|
|
|
cnpj varchar2 [not null]
|
|
|
email 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]
|
|
|
createdAt date [not null]
|
|
|
updatedAt date [not null]
|
|
|
deletedAt date
|
|
|
id_endereco integer [not null, unique]
|
|
|
createdAt timestamp [not null]
|
|
|
updatedAt timestamp [not null]
|
|
|
deletedAt timestamp
|
|
|
}
|
|
|
```
|
|
|
|
|
|
```
|
|
|
```plaintext
|
|
|
Table enderecos {
|
|
|
id integer [increment, primary key]
|
|
|
rua varchar2 [not null]
|
|
|
numero integer [not null]
|
|
|
complemento varchar2
|
|
|
cidade varchar2 [not null]
|
|
|
estado varchar2 [not null]
|
|
|
cep varchar2 [not null]
|
|
|
nome_formatado varchar2 [not null]
|
|
|
latitude double [not null]
|
|
|
longitude double [not null]
|
|
|
createdAt date [not null]
|
|
|
updatedAt date [not null]
|
|
|
deletedAt date
|
|
|
createdAt timestamp [not null]
|
|
|
updatedAt timestamp [not null]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
```
|
|
|
```plaintext
|
|
|
Ref: empresas.id_endereco > enderecos.id
|
|
|
|
|
|
Ref: pedidos.id_cliente > clientes.id
|
|
|
Ref: item_pedido.id_empresa > empresas.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_alimento
|
|
|
|
|
|
Ref: item_pedido.id_alimento > alimentos.id
|
|
|
```
|
|
|
|
|
|
|
|
|
## Implementação
|
|
|
|
|
|
1. Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina.
|
... | ... | @@ -153,7 +144,6 @@ Ref: item_pedido.id_alimento > alimentos.id_alimento |
|
|
5. O banco de dados PostgreSQL estará disponível em `localhost:5432`.
|
|
|
6. 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`.
|
... | ... | |