MySQL
- Usuário
- uuid
- username
- password
- favoritas: tabela a parte de relação, usuário/receita
- Logs (ao fazer uma pesquisa salvaria um log, ex: {userId, searchType: recipe/ingredient, value: text recipe/array ingredients})
- ultimas buscas (a definir) (pode ser uma tabela/collection a parte)
MongoDB
- Receita
- uuid
- title
- description
- ingredients
- avaliação: array com objetos que armazenam o id do usuário e a nota
- tempo de preparo: estará nulo por limitação do dataset
- passos: array de passos
- quantas porções
- tamanho da porção
- Ingredientes únicos
- id
- name
Neo4j
- Pesquisa por receitas a partir de ingredientes
- Receitas que possuem os ingredientes/Receitas que possuem apenas os ingredientes
Observações
Pesquisa por receitas diretamente pelo nome dela (Ex: bolo de chocolate) será feita através do MongoDB e a pesquisa pela receita através da construção de seus ingredientes será feita pelo Neo4j
Ordenação e Filtros em cima do resultado retornado de receitas (maleavel dependendo dos campos disponiveis na receita) (Mongo query)
- Ordenar por tempo de preparo (crescente e decrescente)
- Ordenar por tamanho da porção
- Filtrar por categoria/tags (sobremesa, café da manhã, almoço, italiana, japonesa, etc…)
- Ordenar por avaliação
O mongo precisará gerar um .csv com os dados da receita:
- uuid
- title
- ingredients Um depende do outro no contexto da aplicação, seus dados são diretamente ligados e a responsabilidade de popular o neo4j com base nos dados armazenados no mongo seria da aplicação.
Dataset
https://www.kaggle.com/datasets/sooryaprakash12/cleaned-indian-recipes-dataset