|
|
<table>
|
|
|
<tr>
|
|
|
<th>
|
|
|
|
|
|
[Home](home)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[**Escopo e Cronograma**](escopo)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Processo](processo)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Design/Mockups](design_mockups)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Configuração](configuracao)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Arquitetura](arquitetura)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Código](codigo)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[BD](Banco%20de%20Dados)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Qualidade](qualidade)
|
|
|
</th>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
# **Banco de Dados**
|
|
|
|
|
|
![MongoDB_Logo.svg](uploads/b761696f1b80562fe05ae8349a7bdb1e/MongoDB_Logo.svg.png)
|
|
|
|
|
|
## **Descrição**
|
|
|
|
|
|
Para realização do projeto, escolhemos utilizar o banco de dados não relacional Mongo DB. A razão pela escolha deste modelo de banco de dados se deu principalmente por escolha do time em aprender novas tecnologias, pela facilidade de integração com o backend da aplicação e também devido ao projeto possuir somente uma entidade a ser armazenada, que é o Usuário.
|
|
|
|
|
|
## **Sumário**
|
|
|
|
|
|
- [Modelagem](#modelagem)
|
|
|
- [Esquema Conceitual](#esquema-conceitual)
|
|
|
- [Collection](#collections)
|
|
|
- [Implementação](#implementa%C3%A7%C3%A3o)
|
|
|
- [Schemas](#schemas)
|
|
|
|
|
|
## **Modelagem**
|
|
|
|
|
|
### **Esquema Conceitual**
|
|
|
|
|
|
![banco_de_dados](uploads/d7ffe7989acef01b26bfb421d9c58496/banco_de_dados.png)
|
|
|
|
|
|
### **Collections**
|
|
|
|
|
|
As informações dentro do banco de dados MongoDB são armazenadas dentro de _collections_ ou coleções. Coleções são equivalentes a tabelas de banco de dados relacionais, guardando informações importantes em relação a uma entidade.
|
|
|
|
|
|
**Coleção de usuário:**
|
|
|
|
|
|
```plaintext
|
|
|
{ "_id": {
|
|
|
"$oid": "objectId"
|
|
|
},
|
|
|
"nome": "String",
|
|
|
"password": "String",
|
|
|
"cpf": "String",
|
|
|
"telefone": "String",
|
|
|
"email": "String",
|
|
|
"numeroINSS": "String",
|
|
|
"endereco": {
|
|
|
"cep": "String",
|
|
|
"nomeRua": "String",
|
|
|
"numeroCasa": "String",
|
|
|
"complemento": "String",
|
|
|
"bairro": "String",
|
|
|
"cidade": "String",
|
|
|
"estado": "String"
|
|
|
},
|
|
|
"contatosProfissionais": [
|
|
|
{
|
|
|
"telefoneProfissional": "String",
|
|
|
"nomeProfissional": "String",
|
|
|
"descricao": "String"
|
|
|
},
|
|
|
],
|
|
|
"contatoEmergencia": "String",
|
|
|
"administrador": "bool",
|
|
|
"medicamentos": "String",
|
|
|
"planoDeSaude": "String"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
## **Implementação**
|
|
|
|
|
|
### **Schemas**
|
|
|
|
|
|
**Schema do usuário:**
|
|
|
|
|
|
```
|
|
|
@Schema()
|
|
|
export class User implements IUser {
|
|
|
@Prop({ required: true })
|
|
|
nome: string;
|
|
|
|
|
|
@Prop({ required: true })
|
|
|
password: string;
|
|
|
|
|
|
@Prop({ required: true })
|
|
|
cpf: string;
|
|
|
|
|
|
@Prop({ required: true })
|
|
|
telefone: string;
|
|
|
|
|
|
@Prop({ required: true })
|
|
|
email: string;
|
|
|
|
|
|
@Prop()
|
|
|
numeroINSS?: string;
|
|
|
|
|
|
@Prop()
|
|
|
planoDeSaude?: string;
|
|
|
|
|
|
@Prop(Address)
|
|
|
endereco?: Address;
|
|
|
|
|
|
@Prop()
|
|
|
medicamentos?: string;
|
|
|
|
|
|
@Prop({ required: true })
|
|
|
contatosProfissionais: Contact[];
|
|
|
|
|
|
@Prop({ required: true })
|
|
|
contatoEmergencia: string;
|
|
|
|
|
|
@Prop({ required: true })
|
|
|
administrador: boolean;
|
|
|
}
|
|
|
```
|
|
|
|
|
|
**Schema dos contatos:**
|
|
|
|
|
|
```
|
|
|
@Schema()
|
|
|
export class Contact implements IContact {
|
|
|
telefoneProfissional: string;
|
|
|
nomeProfissional: string;
|
|
|
descricao?: string;
|
|
|
}
|
|
|
```
|
|
|
|
|
|
**Schema de endereço:**
|
|
|
|
|
|
```
|
|
|
@Schema()
|
|
|
export class Address implements IAddress {
|
|
|
cep: string;
|
|
|
nomeRua: string;
|
|
|
numeroCasa: string;
|
|
|
complemento?: string;
|
|
|
bairro?: string;
|
|
|
cidade: string;
|
|
|
estado?: string;
|
|
|
}
|
|
|
``` |
|
|
\ No newline at end of file |