Wpis z mikrobloga

#bazydanych #programowanie #podstawy

Załóżmy mam formularz:

-imię

-nazwisko

-wiek

-odpowiedź 1

-odpowiedź 2

-odpowiedź 3

-odpowiedź 4.



Jak to zrobić w bazie?

a) tabela Formularz i wszystkie te pola wypisane po kolei

b) tabela Formularz z danymi personalnymi, tabela Odpowiedzi z numeracją i relacja many-to-many (czyli tabela idFormidOdp).

Który sposób jest lepszy, szybszy, polecany w przypadku większych baz danych?
  • 34
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@echelon_: jaka najwieksza baze robiles? 100 rekordow? Jesli ma 4 pytania i one sie nie zmienia (a raczej nie zmieniasz pytan kiedy ktos udzieli odpowiedzi) to jest to najlepszy sposob. Nagle okazuje sie ze nie trzeba kupowac drugiego serwera. Tak samo warto trzymac przy userze kolumne z iloscia wiadomosci zamiast przy kazdym requescie n---------c counta w 10 milionowej tabeli.

@razvizion: dorosniesz, zrozumiesz. I dalej uwazaj zasade 3 jednosci
  • Odpowiedz
@echelon_: @kmicolo może mieć rację (aż sam nie wierzę ,że to mówię)..w specyficznych przypadkach ,gdy zazwyczaj Select polega na pobraniu kompletu danych trzymanie wszystkiego w jednym wierszu może mieć sens...niemniej jednak rzadko się to zdarza :)

BTW: kilkadziesiąt tysiecy rekordów to bardzo mało
  • Odpowiedz
@Windmark: kilkadziesiat tysiecy? Nie przejmuj sie wydajnoscia :) wydajnoscia przejmuj sie od milionow. Mozesz nawet zrobic tabele z id usera, id pytania, odpowiedz a i tak nie poczujesz.
  • Odpowiedz
@echelon_: @Vetinari: @fotexxx: a co myślicie o utworzeniu pola "odpowiedzi" i serializowanie wszystkich odpowiedzi do tego pola?

@kmicolo: Pytania się nie zmienią, chyba że ustawę zmienią. Właśnie się boję o obciążenie serwera, bo i tak generowanie pdfów go zarzyna...
  • Odpowiedz
@kmicolo: Jeśli robisz selecty w takich przypadkach jak tutaj, do np spamlisty to wydajnością nie trzeba się przejmować i przy milionach. Jeśli ma się pewność, że nie będzie się robiło selectów co chwilę z milionowej bazy można brnąć w joiny.
  • Odpowiedz
@kmicolo: Do tej pory największa baza przy której pracowałem to kilkadziesiąt tabel gdzie niektóre to kilkaset tysięcy wpisów tak więc całkiem mało.

Nawet przy takiej bazie nie pokusił bym się o płaską strukturę danych ponieważ ta jest za mało elastyczna i kończy się to tak (autentyk), że apka ma w jednej tabeli 2000 kolumn i wywala się baza bo się rozmiar kończy na ilość kolumn.

a co myślicie o utworzeniu
  • Odpowiedz
@echelon_: i tu dochodzimy do sedna:) Nie ma skutecznej metody na wydajna baze ,bo wszystko zależy od tego. Jaka duża jest baza. Z jaka częstotliwością zachodzą odczyty i zapisy i w jaki sposób mamy zamiar pobierać z niej dane i na nich operować. Liczba rekordów w bazie to często najmniejszy problem :)
  • Odpowiedz