... | ... | @@ -3,8 +3,88 @@ |
|
|
|
|
|
# Página do Banco de Dados
|
|
|
|
|
|
Aqui deve ser explicado com modelos e explicações como o Banco de Dados foi construido, onde se deve focar em:
|
|
|
O banco de dados do projeto vai de encontro com a arquitetura de microsserviços definida. Decidimos utilizar o MongoDB visto que, para o nosso contexto, não existiam motivos para utilizar um banco relacional. Isso se deve pelo fato de que os dados que são armazenados na base não possuem relações diretas suficientes. Ainda que escolhêssemos a abordagem relacional, teríamos amarras que dificultariam a escalabilidade da camada de backend, pois para fazer sentido, teríamos somente uma base de dados. Sabendo disso, o MongoDB faz mais sentido por ser extensível, armazenando as informações no formato JSON (*JavaScript Object Notation*) que é entendido pelas aplicações.
|
|
|
|
|
|
* Como ele foi desenvolvido, com Imagens e Diagramas
|
|
|
* o Collections(Entities)
|
|
|
* o ScriptSQL |
|
|
\ No newline at end of file |
|
|
## Coleções
|
|
|
|
|
|
O MongoDB, por ser um banco de dados documental, permite com que se criem coleções dos documentos armazenados. Portanto assim o fizemos, com a finalidade de manter o estado da aplicação de forma transacional (OLTP). Assim, para cada microsserviço temos as coleções listadas abaixo.
|
|
|
|
|
|
### Voluntários
|
|
|
|
|
|
**Coleção voluntários:**
|
|
|
```
|
|
|
{
|
|
|
Id (hash)
|
|
|
Name (string)
|
|
|
Email (string)
|
|
|
Password (hash)
|
|
|
Interests (object array) [{
|
|
|
OpportunityId (hash)
|
|
|
isActive (boolean)
|
|
|
}]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### Oportunidades
|
|
|
|
|
|
**Coleção oportunidades:**
|
|
|
```
|
|
|
{
|
|
|
Id (hash)
|
|
|
InstitutionId (hash)
|
|
|
Title (string)
|
|
|
Type (string) -> filtro
|
|
|
Course (hash array) -> filtro [
|
|
|
CourseId (hash)
|
|
|
]
|
|
|
Description (string)
|
|
|
Location (object)
|
|
|
}
|
|
|
```
|
|
|
|
|
|
**Coleção localização:**
|
|
|
```
|
|
|
{
|
|
|
Complement (int)
|
|
|
Number (int)
|
|
|
Street (string)
|
|
|
City (string)
|
|
|
State (string)
|
|
|
Country (string)
|
|
|
}
|
|
|
```
|
|
|
|
|
|
**Coleção curso:**
|
|
|
```
|
|
|
{
|
|
|
CourseId (hash)
|
|
|
Name (string)
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### Instituições
|
|
|
|
|
|
**Coleção instituições:**
|
|
|
```
|
|
|
{
|
|
|
Id (hash)
|
|
|
isValid (boolean)
|
|
|
Name (string)
|
|
|
Email (string)
|
|
|
Password (hash)
|
|
|
Description (string)
|
|
|
Location (object)
|
|
|
}
|
|
|
```
|
|
|
|
|
|
**Coleção localização:**
|
|
|
```
|
|
|
{
|
|
|
Complement (int)
|
|
|
Number (int)
|
|
|
Street (string)
|
|
|
City (string)
|
|
|
State (string)
|
|
|
Country (string)
|
|
|
}
|
|
|
``` |
|
|
\ No newline at end of file |