Mam zamiar stworzyć system zarządzania studentami za pomocą MongoDB. Będę miał jeden stół dla studentów i drugi dla zapisów obecności. Czy mogę mieć klucz w tabeli obecności, aby dotrzeć do tabeli uczniów, jak pokazano poniżej? W jaki sposób?Czy można utworzyć relacyjną bazę danych przy użyciu MongoDB?
Odpowiedz
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.
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") }
]
}
Dziękuję, zacząłem czytać Schema Design. –
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.
- 1. Jak mogę utworzyć bazę danych przy użyciu pymssql
- 2. Czy mysql może utworzyć rozproszoną bazę danych?
- 3. Jak programowo utworzyć bazę danych sqlite?
- 4. Czy można mieć zdalną bazę danych sqlite?
- 5. Jak wyczyścić bazę danych, upuszczając wszystkie rekordy przy użyciu sqlalchemy?
- 6. MongoDB: Jak często należy otwierać i zamykać bazę danych? Czemu?
- 7. Jak utworzyć nową bazę danych dla istniejącej aplikacji przy użyciu Django South i ustawić wartości domyślne?
- 8. SQL Kiedy utworzyć nową bazę danych?
- 9. Jak utworzyć własną bazę danych w Redis?
- 10. Jak utworzyć bazę danych ELMAH SQL Server?
- 11. Laravel utworzyć bazę danych podczas testowania
- 12. Jak utworzyć kolekcję baz danych mongodb bez dodawania żadnych danych?
- 13. Wyszukiwanie fasetowe przy użyciu MongoDB
- 14. Czy można emulować funkcję przy użyciu własnego typu danych?
- 15. Git: Eksportuj bazę danych MySQL przy zatwierdzaniu?
- 16. Jak utworzyć bazę danych localhost za pomocą mysql?
- 17. Zapytanie MongoDB przy użyciu "ObjectId"
- 18. Jak skonfigurować bazę danych MongoDB na Heroku z MongoLab?
- 19. Czy można załadować bazę danych w pamięci RAM?
- 20. Podłączanie do mongodb przy użyciu sterownika PDO
- 21. jak do pchania danych csv do MongoDB przy użyciu Pythona
- 22. Nie można połączyć się z mongodb przy użyciu komputera ip
- 23. Jak utworzyć nową bazę danych za pomocą SQLAlchemy?
- 24. Jak utworzyć bazę danych SQL z Linq2Sql Model
- 25. Konwertuj regularną bazę danych Postgres na przestrzenną bazę danych
- 26. zapytanie oparte na pasujących elementach na liście DBRef dla mongodb przy użyciu wiosennych danych-mongodb
- 27. Jak upuścić bazę danych MongoDB za pomocą PyMongo?
- 28. Jak utworzyć użytkownika w MongoDB
- 29. Upuszczanie kolekcji MongoDB przy użyciu regex
- 30. Czy można utworzyć przezroczyste płótno?
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ę. –
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). –
@MikeChristensen W tej chwili ta rada nie jest już ważna. Prawdopodobnie zmienili swoją stronę internetową. – Kunok