2.6 KiB
2.6 KiB
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)
{
"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 paraInteger. As classesmodels/ditam o tipo final. - Campos Opcionais: Determinados campos como
matchReportUrlpodem 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.