Como projetar uma tabela assim no mongodb?
Primeiro, para esclarecer algumas convenções de nomenclatura. MongoDB usa
collections
em vez de tables
.
Eu acho que não há chaves estrangeiras!
Pegue o seguinte modelo:
student
{
_id: ObjectId(...),
name: 'Jane',
courses: [
{ course: 'bio101', mark: 85 },
{ course: 'chem101', mark: 89 }
]
}
course
{
_id: 'bio101',
name: 'Biology 101',
description: 'Introduction to biology'
}
Claramente a lista de cursos de Jane aponta para alguns cursos específicos. O banco de dados não aplica nenhuma restrição ao sistema (ou seja:restrições de chave estrangeira ), portanto, não há "exclusões em cascata" ou "atualizações em cascata". No entanto, o banco de dados contém as informações corretas.
Além disso, o MongoDB possui um padrão DBRef que ajuda a padronizar a criação dessas referências. Na verdade, se você der uma olhada nesse link, ele tem um exemplo semelhante.
Como posso resolver esta tarefa?
Para ser claro, o MongoDB não é relacional. Não existe uma "forma normal" padrão. Você deve modelar seu banco de dados de acordo com os dados armazenados e as consultas que pretende executar.