• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

MongoDB - ogólna struktura bazy danych i relacje

Object Storage Arubacloud
+2 głosów
555 wizyt
pytanie zadane 24 września 2022 w SQL, bazy danych przez Bartłomiej Sikora Użytkownik (730 p.)

Witam!

Od niedawna zacząłem poznawać Node.js i przy okazji poznałem MongoDB. Jak dotąd miałem do czynienia wyłącznie z bazami SQL i nie do końca rozumiem zamysł nierelacyjnych baz danych, a przede wszystkim relacji wiele do wielu. 

Rozważmy to na przykładzie teoretycznej aplikacji do fiszek. W bazie danych przechowywał będę talie (zestawy) fiszek. Każdy użytkownik będzie mógł więc rozpocząć naukę z wybranymi zestawami i zapisywać swój postęp nauki. W relacyjnej bazie danych stworzył bym więc następujące tabele:

  • fiszki,
  • talie (w niej informacje o tym, które fiszki znajdują się w której talii / taliach),
  • użytkownicy,
  • postępy (tutaj informacje o tym, które fiszki dany użytkownik już zna, a których nie).

Jak jednak zrobić to w bazie nierelacyjnej. Zapewne stworzę kolekcję z zestawami, a wewnątrz dokumentu danego zestawu znajdą się wszystkie fiszki. (Co z ewentualnymi fiszkami, które znajdowały by się w wielu taliach?). Dodatkowo będzie kolekcja użytkowników.

W jaki sposób mogę zapisać postępy? Jak połączyć te dane? Za pomocą ID?

Czy przy tworzeniu aplikacji należy zastanowić się z jakiego typu bazy danych skorzystać, może MongoDB nie nadaje się do tego typu aplikacji i lepsza będzie baza SQL?

Z góry dziękuję za odpowiedź! 

2 odpowiedzi

+6 głosów
odpowiedź 25 września 2022 przez Comandeer Guru (600,810 p.)
wybrane 5 października 2022 przez Bartłomiej Sikora
 
Najlepsza

Czy przy tworzeniu aplikacji należy zastanowić się z jakiego typu bazy danych skorzystać, może MongoDB nie nadaje się do tego typu aplikacji i lepsza będzie baza SQL?

Zawsze przy tworzeniu aplikacji należy się zastanowić, jakie technologie będą najlepsze do jej stworzenia. I faktycznie, dla danych, w których jest dużo relacji (albo są oparte głównie na relacjach), wybranie czegoś SQL-owego może być lepsze. Zwłaszcza, że takie PostgreSQL ma dość sensowną obsługę dokumentów JSON, więc do pewnego stopnia możemy dostać coś na wzór Mongo.

Natomiast co do wiele do wielu, to są dwie metody. Pierwszą z nich jest faktycznie zamieszczanie bezpośrednio w taliach fiszek. Ale bardzo szybko doprowadzi to do powstania sporej liczby duplikatów. Więc częściej stosuje się rela referencje ;) Każdy obiekt w Mongo ma swoje unikalne ID i to ID można użyć do wskazania na jakiś obiekt w innej kolekcji. Czyli coś zbliżonego po prawdzie do kluczy obcych w SQL-u. Żeby uzyskać coś naprawdę zbliżonego do kluczy obcych, używa się często rozwiązań pokroju Mongoose. Pozwalają one narzucić określoną strukturę na bazę danych.

+1 głos
odpowiedź 26 września 2022 przez tmar1212 Bywalec (2,600 p.)
Generalnie, noSQL uzywasz, jak masz nieustrukturyzowane dane.

https://www.mongodb.com/nosql-explained/when-to-use-nosql
komentarz 2 października 2022 przez Wiciorny Ekspert (269,710 p.)

 bazy danych NoSQL często pozwalają programistom kontrolować strukturę danych, więc - nie. 

Podobne pytania

+1 głos
1 odpowiedź 1,223 wizyt
pytanie zadane 6 grudnia 2018 w PHP przez User007 Bywalec (2,400 p.)
0 głosów
0 odpowiedzi 306 wizyt
pytanie zadane 30 maja 2020 w Java przez MarkoMarecki Nowicjusz (120 p.)
0 głosów
1 odpowiedź 529 wizyt

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...