Hur designar man ett bord så här i mongodb?
Först för att förtydliga några namnkonventioner. MongoDB använder collections
istället för tables
.
Jag tror att det inte finns några främmande nycklar!
Ta följande modell:
student
{
_id: ObjectId(...),
name: 'Jane',
courses: [
{ course: 'bio101', mark: 85 },
{ course: 'chem101', mark: 89 }
]
}
course
{
_id: 'bio101',
name: 'Biology 101',
description: 'Introduction to biology'
}
Tydligen pekar Janes kurslista på några specifika kurser. Databasen tillämpar inga begränsningar på systemet (d.v.s.:främmande nyckelbegränsningar ), så det finns inga "kaskadborttagningar" eller "kaskaduppdateringar". Databasen innehåller dock korrekt information.
Dessutom har MongoDB en DBRef-standard som hjälper till att standardisera skapandet av dessa referenser. Faktum är att om du tittar på den länken har den ett liknande exempel.
Hur kan jag lösa denna uppgift?
För att vara tydlig är MongoDB inte relationell. Det finns ingen standard "normal form". Du bör modellera din databas som passar den data du lagrar och de frågor du tänker köra.