Jak zaprojektować taki stół w mongodb?
Po pierwsze, aby wyjaśnić niektóre konwencje nazewnictwa. MongoDB używa collections
zamiast tables
.
Myślę, że nie ma kluczy obcych!
Weź następujący 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'
}
Oczywiście lista kursów Jane wskazuje na kilka konkretnych kursów. Baza danych nie nakłada żadnych ograniczeń na system (tj.:ograniczenia klucza obcego ), więc nie ma „kaskadowych usunięć” ani „kaskadowych aktualizacji”. Jednak baza danych zawiera prawidłowe informacje.
Ponadto MongoDB ma standard DBRef, który pomaga ujednolicić tworzenie tych odniesień. W rzeczywistości, jeśli spojrzysz na ten link, ma podobny przykład.
Jak mogę rozwiązać to zadanie?
Żeby było jasne, MongoDB nie jest relacyjne. Nie ma standardowej „formy normalnej”. Powinieneś modelować swoją bazę danych odpowiednio do przechowywanych danych i zapytań, które zamierzasz uruchomić.