melhores marcadores adicionados
This commit is contained in:
74
docs/04_SCHEMA_BASE_DADOS.md
Normal file
74
docs/04_SCHEMA_BASE_DADOS.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# 04 - Schema da Base de Dados (Firebase Realtime Database)
|
||||
|
||||
Este projeto utiliza o Firebase Realtime Database. Como se trata de uma base de dados NoSQL estruturada em árvore JSON, a integridade é mantida pela concordância entre o que o **Scraper Java escreve** e aquilo que a **App Android espera ler**.
|
||||
|
||||
A raiz da base de dados encontra-se geralmente dividida por categoria de campeonato. Assumindo como base o desenvolvimento, a organização atual reflete a estrutura de Escalões (ex. "Senior", "Junior", etc).
|
||||
|
||||
## Estrutura Árvore JSON (Schema Esperado)
|
||||
|
||||
```json
|
||||
{
|
||||
"Senior": {
|
||||
"standings": {
|
||||
"Vila Chã": {
|
||||
"clubName": "Vila Chã",
|
||||
"clubLogo": "https://url...",
|
||||
"points": "45",
|
||||
"gamesPlayed": "15",
|
||||
"wins": "15",
|
||||
"draws": "0",
|
||||
"losses": "0",
|
||||
"goalsFor": "50",
|
||||
"goalsAgainst": "10",
|
||||
"position": 1
|
||||
},
|
||||
"Outro Clube": {
|
||||
...
|
||||
}
|
||||
},
|
||||
"journeys": {
|
||||
"Jornada 1": {
|
||||
"games": [
|
||||
{
|
||||
"homeTeam": "Clube A",
|
||||
"homeLogo": "https://url...",
|
||||
"awayTeam": "Clube B",
|
||||
"awayLogo": "https://url...",
|
||||
"homeScore": "2",
|
||||
"awayScore": "1",
|
||||
"date": "10-10-2023",
|
||||
"field": "Campo do Clube A",
|
||||
"matchReportUrl": "https://url..."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"players": {
|
||||
"Vila Chã": [
|
||||
{
|
||||
"name": "João Silva",
|
||||
"number": "10",
|
||||
"position": "Avançado",
|
||||
"photoUrl": "https://url..."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"Users": {
|
||||
"UID_12345": {
|
||||
"email": "user@email.com",
|
||||
"favoriteClub": "Vila Chã"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Regras e Convenções
|
||||
|
||||
- **As chaves principais** (`standings`, `journeys`, `players`) devem ser escritas com letra minúscula, facilitando as queries.
|
||||
- **Formatação Numérica**: Ocasionalmente no processo de Web Scraping, os valores numéricos são guardados e transmitidos como `String`. Na App Android, ao efetuar lógicas matemáticas é importante fazer parse para `Integer`. As classes `models/` ditam o tipo final.
|
||||
- **Campos Opcionais**: Determinados campos como `matchReportUrl` podem vir vazios (`""`) da AFAVCD. Os adaptadores Android deverão estar preparados para ocultar botões se essa string for nula ou vazia.
|
||||
|
||||
## Segurança
|
||||
|
||||
As regras da Realtime Database (`rules.json` na consola da Firebase) deverão espelhar a permissão "Leitura de qualquer utilizador, Escrita apenas por Admin". Isto previne que um utilizador malicioso com App Adulterada envie resultados falsos.
|
||||
Reference in New Issue
Block a user