... | ... | @@ -20,27 +20,27 @@ |
|
|
|
|
|
Neste projeto, utilizamos um banco de dados misto, com a base em um banco de dados relacional - utilizando o PostgreSQL - para os dados de quase toda a aplicação, exceto pela lógica dos carrinhos de compras dos usuários, que foi feita de maneira não relacional - utilizando o Redis - para ter um melhor desempenho com esses registros de maior volatilidade.
|
|
|
|
|
|
## Banco de Dados Relacional PostgreSQL 12
|
|
|
## Banco de Dados Relacional PostgreSQL 15
|
|
|
|
|
|
Neste projeto, utilizamos o PostgreSQL 12 como nosso sistema de gerenciamento de banco de dados. O PostgreSQL é um sistema de banco de dados relacional de código aberto altamente confiável e poderoso, que oferece suporte a uma variedade de recursos avançados, como transações, indexação eficiente e consultas complexas.
|
|
|
Neste projeto, utilizamos o PostgreSQL 15 como nosso sistema de gerenciamento de banco de dados. O PostgreSQL é um sistema de banco de dados relacional de código aberto altamente confiável e poderoso, que oferece suporte a uma variedade de recursos avançados, como transações, indexação eficiente e consultas complexas.
|
|
|
|
|
|
### Modelo Conceitual
|
|
|
|
|
|
A modelagem conceitual foi feita utilizando a ferramenta Astah Professional:
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
### Modelo Lógico
|
|
|
|
|
|
A modelagem lógica foi feita utilizando a ferramenta online DrawSQL, por oferecer suporte às funcionalidades específicas do PostgreSQL:
|
|
|
|
|
|

|
|
|

|
|
|

|
|
|
|
|
|
### Funções de Acesso
|
|
|
|
|
|
Foram feitas Stored Procedures para limitar o acesso ao banco, de maneira que seja controlada. Foram feitas funções para todos os métodos necessários de inserção, remoção, atualização e visualização dos dados.
|
|
|
|
|
|
### PostgreSQL 12
|
|
|
### PostgreSQL 15
|
|
|
|
|
|

|
|
|
|
... | ... | @@ -54,42 +54,39 @@ Neste projeto, utilizamos o Redis como nosso sistema de gerenciamento de banco d |
|
|
|
|
|
Utilizamos uma estrutura em JSON com a lista de itens do carrinho, contendo todas as informações necessárias em cada item, e indexado pelo ID do usuário, aproveitando que o carrinho e o usuário tem uma relação 1-1.
|
|
|
|
|
|
```json {
|
|
|
"id_user": 101,
|
|
|
"id_store": 501,
|
|
|
"itens": [
|
|
|
{
|
|
|
"id_product": 1,
|
|
|
"name": "Camisa Polo Masculina",
|
|
|
"description": "Camisa polo de algodão confortável e elegante.",
|
|
|
"last_updated": "2025-04-10T14:30:00Z",
|
|
|
"id_product_variant": 1001,
|
|
|
"stock": 50,
|
|
|
"price": 79.90,
|
|
|
"details": "Tamanho M, cor azul-marinho",
|
|
|
"is_active": true,
|
|
|
"photos": [
|
|
|
"https://example.com/fotos/camisa-polo-1.jpg",
|
|
|
"https://example.com/fotos/camisa-polo-2.jpg"
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
"id_product": 2,
|
|
|
"name": "Tênis Esportivo Feminino",
|
|
|
"description": "Tênis leve e confortável para corridas e caminhadas.",
|
|
|
"last_updated": "2025-04-11T09:15:00Z",
|
|
|
"id_product_variant": 1002,
|
|
|
"stock": 120,
|
|
|
"price": 229.99,
|
|
|
"details": "Tamanho 37, cor rosa",
|
|
|
"is_active": true,
|
|
|
"photos": [
|
|
|
"https://example.com/fotos/tenis-esportivo-1.jpg",
|
|
|
"https://example.com/fotos/tenis-esportivo-2.jpg"
|
|
|
]
|
|
|
}
|
|
|
]
|
|
|
```json
|
|
|
{
|
|
|
"id_user": 17,
|
|
|
"id_store": 3,
|
|
|
"items": [
|
|
|
{
|
|
|
"id": 9,
|
|
|
"storeID": 3,
|
|
|
"name": "Produto 1",
|
|
|
"description": "Produto teste",
|
|
|
"photos": [
|
|
|
"https://example.com/photo.jpg"
|
|
|
],
|
|
|
"category": [
|
|
|
{
|
|
|
"id": 1,
|
|
|
"name": "Roupas"
|
|
|
}
|
|
|
],
|
|
|
"variant": {
|
|
|
"price": 10,
|
|
|
"stock": 1,
|
|
|
"options": {
|
|
|
"Cor": "Vermelho",
|
|
|
"Tamanho": "M"
|
|
|
}
|
|
|
},
|
|
|
"quantity": 5,
|
|
|
"lastUpdated": "2025-06-16T17:28:04.576495"
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
### Redis
|
... | ... | |