2
respostas

Duvida sobre "relacionamento" entre entidades

No exemplo a seguir:

{
    nome: "mathias",
    curso: {
        nome : "Analise e Desenvolvimento de Sistema"
    }
    habilidades: [
        {
            habilidade: "ingles",
            nivel: "intermediário"
        },
        {
            habilidade: "javascript",
            nivel: "intermediário"
        }
    ]
}

Se curso for uma outra entidade do meu sistema, com id e outros elementos. Eu vou continuar relacionando o aluno ao curso dessa forma? Ou eu faria uma relação com o ID do curso?

Aluno:

Aluno {
    _id:
    Nome:
    Idade: 
}

Curso:

Curso{
    _id:
    Nome:
    Código: 
}

Como eu iria referenciar um Cuso em aluno?

2 respostas

Olá Rafael, blz?

Se for uma entidade separa você pode vincular pelo _id do Curso para o Aluno.

Mas nada impede você ter no atributo curso da entidade Aluno, um ou mais objeto completos (com vários atributos).

A forma que você vai modelar vai depender da sua necessidade. Por exemplo: se sempre que eu procurar um aluno eu precisar dos dados do(s) curso(s) dele. Talvez faça mais sentido eu armazenar tudo dentro da entidade Aluno.

Agora se esporadicamente eu preciso dos cursos desse aluno, e curso é uma entidade "grande" talvez faça sentido separar em duas e vincular através do _id.

Diferente do paradigma relacional, quando trabalhamos com NoSQL não precisamos ter um banco normalizado (seguindo todas as regras de normalização de banco de dados relacional).

Espero ter ajudado e bons estudos.

No meu caso "Curso" em si não vai ter muitos campos, mas na minha aplicação diversas outras atividades vão ter um Curso.

Aluno, Professor, Noticia e outras entidades vão ter um "Curso". Mas Curso em si não teria muitros atributos.

Vou querer listar Aluno por curso, Professor por Curso, Noticia por cursos.

Vendo esse cenário, o que você acha que seria mais correto?