• 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

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
+2 głosów
98 wizyt
pytanie zadane 24 września w SQL, bazy danych przez Bartłomiej Sikora Użytkownik (570 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

+5 głosów
odpowiedź 25 września przez Comandeer Guru (579,500 p.)
wybrane 5 października 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 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 przez Wiciorny Ekspert (237,570 p.)

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

Podobne pytania

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

89,727 zapytań

138,332 odpowiedzi

309,340 komentarzy

59,649 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 429p. - Argeento
  2. 427p. - nidomika
  3. 396p. - Mikbac
  4. 392p. - ssynowiec
  5. 390p. - Łukasz Eckert
  6. 387p. - TheLukaszNs
  7. 386p. - rucin93
  8. 382p. - Marcin Harasimowicz
  9. 382p. - Michal Drewniak
  10. 378p. - JMazurkiewicz
  11. 373p. - tokox
  12. 367p. - Jarosław Roszyk
  13. 362p. - adrian17
  14. 359p. - overcq
  15. 350p. - Mawrok
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...