Banco de Dados
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
Esquema Conceitual
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:
{ "_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;
}