# Banco de Dados: Estrutura

---

- [Arquitetura do Banco de Dados](#arquitetura-do-banco-de-dados)
- [UML](#uml)
- [Tabelas & Modelos](#tabelas-e-modelos)

<a name="arquitetura-do-banco-de-dados"></a>
## Arquitetura do Banco de Dados

Esta seção fornece uma visão geral do esquema do banco de dados e seus relacionamentos, incluindo diagrama de entidade-relacionamento (ERD).

<a name="uml"></a>
## UML

<img src="{{ config('app.url').URL::signedRoute('private-storage', config('larecipe.url.uml.params'), null, false) }}"></img>

<a name="tabelas-e-modelos"></a>
## Tabelas & Modelos

Segue lista das tabelas do banco e breve explicação de cada:

| # | Tabela   | Descrição |
| : |   :-     |  :        |
| 1 | `addresses` | Armazena de forma polimórfica endereços de entidades do sistema.  |
| 2 | `ativos_medicao`   | Ativos de medição padrão do sistema (CO2,Umidade,Temperatura, etc)  |
| 3 | `cache`  | Laravel: tabela para armazenamento de caches do sistema.  |
| 4 | `cache_lock`  | Laravel: tabela para geranciar bloqueios distribuidos.  |
| 5 | `coletas`  | Registra momento de coleta enviado pelo concentrador.  |
| 6 | `comodatos`  | Comodatos de empresas registradas no sistema.  |
| 7 | `comodatos_equipaments`  | Pivot relacionando comodatos à empresas  |
| 8 | `empresas`  | Empresas que usarão e terão seus registros no sistema |
| 9 | `equipamentos`  | Cadastro de equipamentos do Grupo CRIAR (CONCENTRADO,REPETIDOR,SONDA) |
| 10 | `failed_jobs`  | Laravel: log de jobs que tiveram falha e são listadas para retentativas se necessário |
| 11 | `fatias`  | Fatias de uma silobag |
| 12 | `http_request_logs`  | Log de requests http ao sistema, registrando body de requests e reponses |
| 13 | `instalacoes`  | Registra instalaçoes de equipamentos(sondas) em silobags. |
| 13 | `job_batches`  | Laravel: armazena informações sobre um lote de jobs. |
| 14 | `jobs`  | Laravel: armazena informações sobre um lote de jobs. |
| 15 | `leituras`  | Leituras registradas em uma coleta, divididas por ativo de medição e nível do módulo |
| 16 | `ltu_contributors`  | Package(outhebox/laravel-translations): Usuários contribuidores do menu de traduções. |
| 17 | `ltu_invites`  | Package(outhebox/laravel-translations): Convites para novos usuários tradutores. |
| 18 | `ltu_languages`  | Package(outhebox/laravel-translations): Lista todas as linguas possíveis para traduções. |
| 19 | `ltu_phrases`  | Package(outhebox/laravel-translations): Importações ao banco de dados de "chaves-valores" de traduções. |
| 20 | `ltu_translation_files` | Package(outhebox/laravel-translations): Lista nome de arquivos físicos de traduções no projeto. |
| 21 | `ltu_translations` | Package(outhebox/laravel-translations): Lista atuais linguas para traduções no projeto. |
| 22 | `migrations`  | Laravel: Registra migrations executadas. |
| 23 | `model_has_permissions`  | Package(spatie/laravel-permissions): Registro polimórfico n-n de permissões de usuários. |
| 24 | `model_has_roless`  | Package(spatie/laravel-permissions): Registro polimórfico n-n de roles de usuários. |
| 25 | `ordens_instalacao` | Ordens de instalação de sondas |
| 26 | `password_reset_tokens` | Tokens de validação de solicitações de reset de senha de usuários do sistema. |
| 27 | `permissions` | Package(spatie/laravel-permissions): Lista permissões que podem ser concedidas à usuários. |
| 28 | `personal_access_tokens` | Laravel(Sanctum): Tokens de autenticação de usuários. |
| 29 | `phones` | Armazenamento polimórfico de telefones de entidades do sistema. |
| 30 | `produtos` | Produtos a serem armazenados em silobags (ex.: Milho, Soja, etc.) |
| 31 | `propriedades` | Propriedades pertencentes a empresas |
| 32 | `referencias` | Referências de valores de Ativos de Medição de Produtos |
| 33 | `referencias_ativos_pivot` | Pivot de relacionamento entre referencias e ativos de medição |
| 34 | `role_has_permissions` | Package(spatie/permissions): Pivot de relacionamento n-n de Permissões garantidas por Roles |
| 35 | `roles` | Package(spatie/permissions): Lista de possíveis Roles de usuários do sistema |
| 36 | `secoes` | Lista secoes de Fatias do Silobag |
| 37 | `session` | Laravel: Armazena informações de sessions de usuários |
| 38 | `silobags` | Lista Silobags de Empresas |
| 39 | `telescope_entries` | Laravel(Telescope): Usado para logs de monitoramento do sistema |
| 40 | `telescope_entries_tags` | Laravel(Telescope): Usado para logs de monitoramento do sistema |
| 41 | `telescope_monitoring` | Laravel(Telescope): Usado para logs de monitoramento do sistema |
| 42 | `users` | Usuarios do sistema |
| 43 | `zonas` | Lista Zonas pertencentes à Propriedades |

### Colunas padrão

Existem algumas colunas que seguem padronizações da framework e são comumente encontradas em tabelas no banco:

| # | Coluna   | Descrição |
| : |   :-     |  :        |
| 1 | `created_at` | Laravel: Coluna padrão de timestamp do momento da criação do registro |
| 2 | `updated_at` | Laravel: Coluna padrão de timestamp do momento da última atualização do registro |
| 3 | `delete_at` | Laravel: Coluna padrão de timestamp do momento da exclusão (soft delete) do registro |
| 4 | `created_by` | Identificador do usuário que criou o registro |
| 5 | `updated_by` |Identificador do usuário que realizou a última atualização no registro|
| 6 | `deleted_by` |Identificador do usuário que realizou a exclusão (soft delete) do registro|