2011-11-14 12 views

Odpowiedz

26

Ideą MongoDB jest wyeliminowanie (lub przynajmniej zminimalizować) danych relacyjnych. Czy zastanawiałeś się nad umieszczeniem danych o obecności bezpośrednio w każdym rekordzie ucznia? Jest to faktycznie preferowany wzór dla MongoDB i może skutkować znacznie lepszą wydajnością i skalowalnością.

Jeśli naprawdę potrzebujesz wysoce relacyjnych i znormalizowanych danych, możesz rozważyć ponowne użycie MongoDB.

+0

Dziękuję za odpowiedź. Mój instruktor dał mi ten projekt, aby zrobić to z MongoDb. Więc przeszukuję jakieś informacje gdzieś/ktoś (jak ty :)) i spróbuję to zrobić. Jeszcze raz dziękuję. –

+2

Jeśli jesteś nowicjuszem w MongoDB, istnieje całkiem fajny mały samouczek na ich stronie internetowej: http://www.mongodb.org/ (wystarczy kliknąć "Wypróbuj", a następnie wpisz 'tutorial' w powłoce). –

+1

@MikeChristensen W tej chwili ta rada nie jest już ważna. Prawdopodobnie zmienili swoją stronę internetową. – Kunok

17

Odpowiedź zależy od sposobu wykorzystania danych. Naprawdę masz 2 opcje, umieść tabelę obecności lub połącz ją. Więcej informacji na temat tych metod można znaleźć tutaj: http://www.mongodb.org/display/DOCS/Schema+Design

W przypadku zwykłego zastosowania prawdopodobnie zostałaby osadzona ta konkretna kolekcja, więc każdy rekord ucznia miałby osadzoną tabelę "obecności". Będzie to działało, ponieważ mało prawdopodobne jest, aby frekwencja była dzielona pomiędzy uczniami, a pobieranie danych o obecności może wymagać również informacji o uczniach. Pobieranie danych dotyczących obecności będzie tak proste, jak:

db.student.find({ login : "sean" }) 
{ 
    login : "sean", 
    first : "Sean", 
    last : "Hodges", 
    attendance : [ 
    { class : "Maths", when : Date("2011-09-19T04:00:10.112Z") }, 
    { class : "Science", when : Date("2011-09-20T14:36:06.958Z") } 
    ] 
} 
+0

Dziękuję, zacząłem czytać Schema Design. –

0

Tak. Nie ma sztywnych reguł. Musisz spojrzeć na zalety i wady osadzania lub odniesienia danych. Ten film zdecydowanie pomoże (https://www.youtube.com/watch?v=-o_VGpJP-Q0&t=21s). W twoim przykładzie atrybut numeru telefonu powinien znajdować się w tej samej tabeli (w bazie danych dokumentów), ponieważ rzadko zmienia się numer telefonu osoby.

Powiązane problemy