sql >> Database >  >> NoSQL >> MongoDB

Buitenlandse sleutels in Mongo?

Hoe ontwerp je zo'n tafel in Mongodb?

Allereerst om enkele naamgevingsconventies te verduidelijken. MongoDB gebruikt collections in plaats van tables .

Ik denk dat er geen externe sleutels zijn!

Neem het volgende model:

student
{ 
  _id: ObjectId(...),
  name: 'Jane',
  courses: [
    { course: 'bio101', mark: 85 },
    { course: 'chem101', mark: 89 }
  ]
}

course
{
  _id: 'bio101',
  name: 'Biology 101',
  description: 'Introduction to biology'
}

Het is duidelijk dat Jane's cursuslijst verwijst naar een aantal specifieke cursussen. De database legt geen beperkingen op aan het systeem (d.w.z.:beperkingen voor externe sleutels ), dus er zijn geen "trapsgewijze verwijderingen" of "trapsgewijze updates". De database bevat echter wel de juiste informatie.

Daarnaast heeft MongoDB een DBRef-standaard die helpt bij het standaardiseren van het maken van deze referenties. Als je die link bekijkt, staat er zelfs een soortgelijk voorbeeld.

Hoe kan ik deze taak oplossen?

Voor alle duidelijkheid:MongoDB is niet relationeel. Er is geen standaard "normale vorm". U moet uw database aanpassen aan de gegevens die u opslaat en de query's die u wilt uitvoeren.



  1. MongoDB Aggregation Framework-stadia en Pipelining

  2. Problemen oplossen

  3. Communicatie tussen twee Docker-containers op macOS 10.12

  4. MongoDB groeperen per uur