Home | Sprints | Requisitos | Arquitetura | Configuração | Mockups | Banco de Dados | Instalação | Git |
---|
Banco de Dados
Descrição
Para realização do projeto, a equipe escolheu a utilização de um banco de dados relacional PostgreSQL utilizando o ORM (Object Relational Mapper) Prisma.
A escolha de um banco relacional para ser utilizado no projeto é devido a necessidade técnica de mapear as relações apropriadamente, minimizando a repetição de dados armazenados e aumentando a velocidade no momento da manipulação dessas informações. O ORM Prisma por sua vez ajuda no desenvolvimento da API do projeto, diminuindo necessidade de criar querys complexas.
Sumário
Modelagem
Esquema Conceitual
Tabelas
O banco de dados PostgreSQL utiliza-se de tabelas para armazenar dados. As relações entre estas tabelas são feitas por meio de referências a identificadores de um outra tabela.
O banco de dados tenta representar a idéia de armazenamento necessário para nosso projeto, onde temos um usuário que pode ser ou o administrador do Connect Pharmacy ou uma instituição hospitalar. Se for uma instituição hospitalar, esta pode ter diversas requisições criadas,ou seja , uma relação de uma instituição para várias requisições).
Uma requisição pode ser criada por uma instituição, porém, pode ser negada por diversas instituições que não sejam a que criou esta requisição (tabela DeniedRequests). Uma requisição é feita para requisitar um medicamento, logo temos uma relação onde uma requisição tem um medicamento, porém, um mesmo medicamento pode estar presente em diversas requisições.
Uma requisição, quando aceita por outra instituição que não seja a criadora, pode gerar uma entrega (tabela Delivery) e esta entrega deve conter um motorista (tabela Driver), que fará a entrega da requisição da instituição de origem para a instituição destino. Lembre-se que um motorista pode fazer diversas entregas.
Implementação
Utilizando o ORM prisma conseguimos gerar o script de criação do banco de dados (script SQL) automaticamente quando realizamos o comando 'npx prisma generate'.
Este ORM também auxilia na busca de objetos que são resultados de relações entre entidades, visto que o ORM abstrai uma relação entre duas entidades para que possamos trata-la como se um objeto estivesse dentro de outro, e não somente sendo referenciado.
Para mais informações acesse: https://pris.ly/d/prisma-schema
Schemas
Os schemas são parte fundamental na criação do banco de dados de nosso projeto. Nele definimos as "models" , que são uma abstração das tabelas que serão criadas no nosso banco de dados.
Para a visualização completa de nosso esquema do prima, acesse:
Esquema do Projeto Connect Pharmacy
O esquema acima é utilizado pelo prisma para a criação do script SQL do nosso banco de dados. Você pode acessar esse script seguindo os seguintes passos:
- Clonar o repositório e confiruga-lo conforme o arquivo README.
- Executar os comandos "npx prisma generate" e "npx prisma migrate"
- Acessar a pasta prisma/migrations/20230326220837_test , ou qualquer outra pasta com final _test.
- Acessar o arquivo migration.sql