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

Ocena bazy danych do aplikacji

Object Storage Arubacloud
0 głosów
676 wizyt
pytanie zadane 5 września 2019 w SQL, bazy danych przez michh123 Bywalec (2,790 p.)

Witam.

Tworzę aplikację do składowania własnych fiszek. Musiałem więc zaprojektować bazę danych i chciałem to zrobić jak najlepiej. Moja wiedza dot. projektowania baz sięga do 3NF więc nie za bardzo mogę stwierdzić czy jest ok. Prosiłbym o ocenę bazy i wskazówki w jaki sposób mogę ją jeszcze bardziej zoptymalizować.

Zdjęcie struktury poniżej



Z góry dziękuję za pomoc!

1
komentarz 5 września 2019 przez Tomek Sochacki Ekspert (227,510 p.)
a tak z ciekawości, jeśli to fiszki na własny użytek to pewnie będzie to mikro baza rzędu max kilka-kilkanaście tysięcy rekordów... nie myślałeś aby przy tak małej bazie zrobić nierelacyjną, np. mongo, które jest bardzo szybkie i wydaje mi się, że tutaj byłoby spoko?
komentarz 5 września 2019 przez michh123 Bywalec (2,790 p.)
Pomysł genialny, tylko że chciałbym głębiej wejść w tematykę relacyjnych baz i MySQL - stąd powyższe pytanie i dbałość o optymalizację i dobre praktyki dla relacyjnej bazy :)
komentarz 6 września 2019 przez adrian17 Ekspert (344,860 p.)
Przeciwnie, to wygląda jak mocno relacyjne dane o niewielkiej ilości -> brzmi jak prosty jednoplikowy sqlite; tak na przykład robi raczej najpopularniejsza aplikacja do fiszek, Anki.
komentarz 7 września 2019 przez Tomek Sochacki Ekspert (227,510 p.)
ja bym tu dyskutował... mam okazję pracować z bazami relacyjnymi i nierelacyjnymi, np. mongo i z doświadczenia powiem, że z mongo jest znacznie mniej problemów... nie dość, że jest o niebo szybsza od relacyjnych to jest łatwiejsza w utrzymaniu, szybciej się podnosi po awariach itp. (przeżyłem już pady mysql i mongo i uwierz mi, przy mongo jest dużo mniej stresu).

Kiedyś też bylem zwolennikiem głównie MySQL ale to były czasy gdy raczkowałem z programowaniem i bardziej się tym bawiłem niż robiłem coś na serio. Dzisiaj raczej mało prawdopodobne, abyś przekonał mnie do wyższości np. MySQL nad mongo :) Do tego dochodzi znacznie łatwiejsze skalowanie bazy nierelacyjnej, i dużo szybsze niż przy relacyjkach.

Aczkolwiek... są jeszcze bazy grafowe jak ktoś chciałby sie pobawić :) Osobiście nie pracowałem z nimi, słyszałem, że u mnie w firmie zespoły od machine learning miały z nimi jakąś styczność ale nie znam szczegółów, Arek - słyszałeś coś może tak z praktycznego punktu widzenia o takich bazach?
komentarz 7 września 2019 przez Tomek Sochacki Ekspert (227,510 p.)
i kolejna rzecz, w nierelacyjnych bardzo łatwo dodawać nowe pola bez konieczności ingerowania z istniejące dokumenty - a relacje osobiście wolę robić na poziomie aplikacji back-endu, gdyż daje to większą swobodę w migracji baz danych co też już przeżywałem i właśnie minimum relacji w bazie, transakcji itp. daje tutaj duże korzyści.

1 odpowiedź

+1 głos
odpowiedź 6 września 2019 przez rafal.budzis Szeryf (85,260 p.)
Płeć zrobiłbym Enumem szkoda tworzyć osobną tabelkę. Tym bardziej że używasz danych tylko w jednej tabeli.

Zastanawiam się czy jest potrzebna tabelka łącznikowa users_flashcards Nie wystarczy aby flashcards posiadało ID usera? Jak rozumiem tylko jedna osoba może mieć przypisanego flashcarda?

Zupełnie nie rozumiem idei tabelek words, transtations, parts_of mógłbyś opisać po co one są i do czego służą?
komentarz 7 września 2019 przez michh123 Bywalec (2,790 p.)

Dziękuję za odpowiedź!

Teoretycznie dana fiszka może być dla więcej niż jednego użytkownika jeśli dla wszystkich użytkowników jest taka sama, ale.. praktycznie chyba nigdy nie zdarzy się sytuacja, w której kilku użytkowników ma dokładnie takie samo przykładowe zdanie czy wymowę (które są pisane przez użytkownika w jego sposób), już nie mówiąc o dacie utworzenia czy modyfikacji, więc tak - jedna fiszka jest dla jednego użytkownika :)

tabelka words przechowuje słówka, tranlations przechowuje tłumaczenia, a parts_of_speech części mowy (np. czy dane słowo jest czasownikiem, rzeczownikiem, itd..). Generalnie mój zamysł był taki, że skoro praktycznie rzecz biorąc jedna fiszka może służyć tylko jednemu userowi to słowa i tłumaczenia na różnych fiszkach będą się powtarzać (np. w bazie będą istniały 3 różne fiszki, ale wszystkie będą zawierać to samo słówko). Tak samo z tłumaczeniami. Natomiast części mowy są potrzebne do działania algorytmu, który będzie automatycznie wstawiał rodzajniki. Np.: użytkownik stworzy fiszkę (angielską) ze spółgłoską na początku, oznaczy ją jako rzeczownik - przed słowem automatycznie zostanie dodany rodzajnik "a", stworzy analogicznie drugą fiszkę, która będzie zawierać samogłoskę na początku - dodany zostanie rodzajnik "an", oznaczy inną fiszkę jako czasownik - zostanie mu dodane "(to)" na początku. Tylko teraz zastanawiam się czy nie powinienem połączyć parts_of_speech z flashcards, a nie z words 

Jak widziałbyś takie rozwiązanie?

Podobne pytania

0 głosów
0 odpowiedzi 112 wizyt
pytanie zadane 19 grudnia 2016 w C i C++ przez gruda2 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 4,334 wizyt
pytanie zadane 25 marca 2017 w SQL, bazy danych przez balti Obywatel (1,040 p.)
0 głosów
0 odpowiedzi 84 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...