Comments (3)
A solução que considerei melhor por agora é dividir a seleção por País -> Estado/Província -> Cidade -> Instituição -> Departamento. Uma tabela mostrando a média de escolhas para cada um dos casos:
Categoria | Número de opções |
---|---|
País | +- 200 |
Estado | +- 15 |
Cidade | +- 100 |
Instutuição | +- 10 |
Departamento | +- 10 |
Ao invés de colocar todos os possíveis departamentos de todas as possíveis instuições do mundo, o servidor web pode servir como plataforma para se inserir um estado/cidade/instuição/departamento novo de forma preguiçosa na base de dados, sob demanda, assim não sobrecarregando o usuário final com muitas escolhas mas permitindo escalada global. Apenas administradores são capazer de inserir uma entrada nova nessas categorias.
from guardioes-api.
Outra possibilidade, discutida com o @gabrieldouurado foi a de fazer um sistema recursivo parecido com o anterior mas com diferenças fundamentais: não existem insituição nem departamentos. Os administradores podem adicionar e remover categorias de seleções ad infinitum. Isso conserta certos problemas que poderiam surgir devido à rigidez do sistema anterior:
- Um escola por exemplo, pode escolher por não dividir sua instituição em departamentos para categorizar alunos.
- Uma universidade pode escolher não apenas se dividir em instiuições e departamentos, mas também cursos para categorizar discentes.
Claramente pela flexibidlidade ele vai ser mais difícil de implementar e também terá muitas considerações de design para que seja fácil a sua utilização para o usuário final, além de tornar o processo de lidar com a base de dados possívelmente mais difícil, bem como os níveis de acesso dos administradores e outras considerações...
from guardioes-api.
Levando em conta as consequências do que foi sugerido anteriormente, considerei como fazer a base de dados suportar essa flexibilidade, em especial nas buscas. Cheguei em uma solução que pode suportar simples buscas de maneira instuitiva. Preferi explicar usando um exemplo de um tabela ficçional de usuários:
User ID | Country | State | City | Category |
---|---|---|---|---|
1 | Brazil | DF | Brasília | universidade: UnB, departamento: FGA, curso: Eletrônica |
2 | Brazil | DF | Brasília | universidade: UnB, tecnico: eletricista |
3 | Brazil | DF | Brasília | universidade: IFB |
4 | Brazil | DF | Brasília | escola: CEF 404 |
5 | Brazil | RJ | Rio de Janeiro | empresa: VTEX, escritorio: RH |
6 | United States | CA | Los Angeles | school: escolaqualquer, building: A-12 |
Vamos supor que vários administradores tenham diferentes níveis de permissão:
-
Um administrador cujas permissões seja apenas a universidade de Brasília teria acesso apenas aos indices da tabela que dão match com
Brazil -> DF -> Brasília -> universidade: UnB*
. -
Um administrador do curso de eletrônica da UnB teria
Brazil -> DF -> Brasília -> universidade: UnB, departamento: FGA, curso: Eletrônica*
. -
Um administrador com acesso apenas aos funcionários técnicos da UnB teria
Brazil -> DF -> Brasília -> universidade: UnB, técnico*
. -
Todas as escolas de Belo Horizonte
Brazil -> MG -> Belo Horizonte -> escolas:*
. -
Todos os alunos de uma escola em um prédio X
United States -> CA -> Los Angeles -> school: escolaqualquer, building: A-12*
. -
Todos os usuários registrados de Brasília
Brazil -> DF -> Brasília -> *
Se guardados assim na base dados, pelo próprio prefixo é possível acessar qualquer categoria de usuário levando em conta outros filtros relevantes (como data), além de guardar na base de dados de forma mais simples e compreensível.
A escolha de como seria a estrutura da(as) categoria(s) seria à critério da própria instituição em questão, isso sendo manualmente adicionado no pelo servidor web quando necessário.
from guardioes-api.
Related Issues (20)
- Refatorar o modelo de email de pré-cadastro
- Implementar lógica de limiar para o calculo do score de um survey com uma sindrome.
- Verificar permissões para GroupManagerTeams HOT 2
- Estudo de machine learning para identificação de sindromes.
- Realizar backup das informações presentes no ES HOT 3
- Adicionar variáveis de ambiente a arquivos .env
- Atualizar containers para remover o kibana e elastic-search
- Adicionar permissões para que GroupManagerTeams possam acessar a página de vigilância. HOT 1
- Verificar todas as permissões da API e Painel. HOT 1
- Verificar retorno de dados das Serializers.
- Deploy para produção da API e do Painel.
- Criação das estratégias de teste v1.0 HOT 1
- Paineis de Visualização não funcionam
- Criação das estratégias de teste v2.0 HOT 1
- Preparar os dados para aplicação em machine learning HOT 1
- Corrigir execução de testes
- Atualizar documentação da REST API HOT 2
- Criação da model Dose
- Mudar contexto das dicas (contents) de saúde
- Corrigir fuso horário do servidor
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from guardioes-api.