| [Home](home) | [Arquitetura](arquitetura) | [Banco de Dados](banco_dados) | [Configuração](configuracao) | [Gerenciamento do Projeto](Gerenciamento_projeto) | [Instalação](instalacao) | [Materiais de Estudo](Materiais_estudo) | [Mockups](mockups) | [Requisitos](requisitos) | [Reunioes](reunioes) | [Sprints](sprints) | [Time](time) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
# Sumário
1. ***Acesso ao banco de dados Cloud Firestore***
2. ***Modelo Conceitual do banco***
3. ***Modelo ER do banco***
4. ***Descrição dos atributos do modelo***
## 1. Acesso ao banco de dados Cloud Firestore
O Cloud Firestore é uma plataforma da Google que é utilizada neste projeto como banco de dados.
Para fazer o login, basta ir na página do [Firestore](https://firebase.google.com/docs/firestore) e realizar login com a seguinte conta [Google](configuracao)
O banco de dados possui duas sessões: Authentication e Database. A primeira é onde estão os dados de login e autenticação de contas, na segunda temos o banco de dados em si com as informações especificadas no modelo ER.
Documentação da Authentication: https://firebase.google.com/docs/auth?authuser=0
Documentação do Firestore(Banco de dados): https://firebase.google.com/docs/firestore?authuser=0
## 2. Modelo Conceitual
## 3. Modelo ER
## 4. Descrição dos Atributos
### Usuario
1. **name**:
Tipo = Texto
Descrição = Nome completo do usuário
2. **email**:
Tipo = Texto
Descrição = E-mail do usuário a ser usado para login
3. **cpf**:
Tipo = Texto
Descrição = Cpf do usuário no formato 123.456.789.00
4. **dob**:
Tipo = Data
Descrição = Data de nascimento do usuário
5. **phone**:
Tipo = Texto
Descrição = número de telefone do usuário
6. **isAdmin**:
Tipo = Boolean
Descrição = true indica que o usuário é administrador
8. **deleted**:
Tipo = Boolean
Descrição = true indica que a conta está excluída
### Log
1. Usuario (FK):
Tipo = Usuario
Descrição = usuário que realizou a ação
2. DateTime:
Tipo = Data
Descrição = data e horário quando ocorreu esta ação
3. Action:
Tipo = Texto
Descrição = ação realizada (e.g. terminou um treino)
4. Where:
Tipo = Texto
Descrição = onde a ação foi realizada (e.g. na tela do treino)
5. Deleted:
Tipo = Bool
Descrição = valor true indica que o log foi excluído
### Treino
1. Usuario (FK):
Tipo = Usuario
Descrição = Usuário as quais pertence o treino
2. Semana:
Tipo = Inteiro
Descrição = Qual das semanas de treino este treino pertence (1-4)
3. Description:
Tipo = Texto
Descrição = Descrição do treino, com as metas a se atingir
4. Month:
Tipo = Inteiro
Descrição = número do mês atual. É um inteiro que inicia em 1 e continua incrementando a cada mês que se passa infinitamente (e.g. mês 146 desde o lançamento do app)
5. Order:
Tipo = Inteiro
Descrição = valor inteiro indicando a ordem deste treino na lista de treinos da semana. Número menor aparece antes.
6. DateTime_Created:
Tipo = Data
Descrição = data e hora que o treino foi criado
7. Deleted:
Tipo = Bool
Descrição = valor true indica que o treino foi excluído
8. Distance:
Tipo = Inteiro
Descrição = distância em metros que o usuário percorreu no treino e preencheu no app
9. Time:
Tipo = Inteiro
Descrição = tempo em minutos que o usuário percorreu o treino e preencheu no app
10. DateTime_Concluded:
Tipo = Data
Descrição = data e hora que o treino foi concluído
### Posts
1. DateTime Cadastro:
Tipo = Data
Descrição =
2. Titulo:
Tipo = Texto
Descrição = titulo do post
3. Tipo:
Tipo = Enum
Descrição = Event ou Notification
4. Description:
Tipo = Texto
Descrição = descrição do post
5. Date_Post:
Tipo = Data
Descrição =
6. Date_Event:
Tipo = Data
Descrição =
7. Deleted:
Tipo = Bool
Descrição = valor true indica que o post foi excluído
### Post_Usuario
1. Post (FK):
Tipo = Post
Descrição = Post pertencente a este Post_Usuario
2. Usuario (FK):
Tipo = Usuario
Descrição = Usuario aos quais este Post_Usuario pertence
3. Action:
Tipo = Texto
Descrição =
4. DateTime:
Tipo = Data
Descrição =
5. Deleted:
Tipo = Bool
Descrição = valor true indica que o Post_Usuario foi excluído
### Formato do banco de dados no Firebase
~~~
{
"eventLikes": {
"[eventLikeId]": {
"users": {
"[userId]": {
}
}
}
},
"feed": {
"[feedId]": {
"createdAt": {
"seconds": 0,
"nanoseconds": 0
},
"deleted": false,
"description": "",
"eventDate": {
"seconds": 0,
"nanoseconds": 0
},
"title": "",
"type": "event"
}
},
"logs": {
"[logId]": {
"action": "",
"creationDate": {
"seconds": 0,
"nanoseconds": 0
},
"deleted": false,
"user": null,
"where": ""
}
},
"postsUsers": {
"[userId]": {
"posts": {
"[postId]": {
"updatedAt": "timestamp",
"value": false
}
}
}
},
"trainings": {
"[userId]": {
"months": {
"[monthId]": {
"fulfilled": false,
"index": 0,
"trainingItems": {
"[trainingItemId]": {
"completedAt": {
"seconds": 0,
"nanoseconds": 0
},
"createdAt": {
"seconds": 0,
"nanoseconds": 0
},
"description": "",
"meters": 0,
"order": 1,
"seconds": 0,
"week": 1
}
}
}
}
}
},
"users": {
"[userId]": {
"amountOfTrainings": null,
"completedTrainings": [""],
"cpf": "",
"deleted": false,
"dob": {
"seconds": 0,
"nanoseconds": 0
},
"email": "",
"isAdmin": false,
"name": "",
"phone": ""
}
}
}
~~~