prośba o pomoc w modelowaniu (dłuższe)
geos - 02-08-2006 00:48
prośba o pomoc w modelowaniu (dłuższe)
witam,
proszę o pomoc w koncepcyjnym modelu poniższego scenariusza. dopiero zaczynam przygodę z bazami danych i pełne ogarnięcie zależności sprawia mi trudność.
jest sobie strona www, na której użytkownicy mogą rozwiązywać testy. każdy test składa się z pytań i odpowiedzi. odpowiedzi są punktowane.
na przykład: pytanie 3. w tęczy kolor pomarańczowy leży najbliżej koloru: [ ] czerwonego (1 pkt) [ ] żółtego (1 pkt) [ ] niebieskiego (0.25 pkt)
punkty za odpowiedzi w testach mogą być zmieniane przez administratora raz na miesiąc. administrator może również dodawać nowe testy oraz usuwać istniejące. liczba punktów za cały test jest funkcją punktów za poszczególne pytania (administrator może zmieniać tę funkcję).
wynik każdego testu jest zapisywany na koncie uzytkownika. administrator ma dostęp do tych wyników wraz z aktualnymi w chwili rozwiązywania punktami za poszczególne odpowiedzi. może więc być sytuacja, że w rozwiązując konkretny test identycznie użytkownik uzyska inną liczbę punktów za pytanie ze względu na zmianę przypisania punktów do poszczególnych odpowiedzi lub funkcji zliczającej punkty za cały test.
i tu mam problem. czy moglibyście mi podpowiedzieć jak dobrze modelować taką sytuację, w której należy: a) pamiętać wartości pytań/odpowiedzi/punktów w chwili rozwiązywania testu b) można łatwo wprowadzać zmiany w punktowaniu w obrębie jednego testu c) można udostępniać nowe testy/blokować stare, ale informacja o starych (tj. pytania, odpowiedzi i punkty) nie może "zniknąć" z historii konta użytkownika
na razie wymyśliłem, że jako TEST będę traktował parametryzowany punktami zbiór ustalonych pytań i odpowiedzi. to znaczy, jeśli zmienią się tylko punkty za odpowiedzi/funkcja zliczająca to będzie to ten sam test. jeśli natomiast zmianie ulegnie pytanie lub liczba odpowiedzi do niego to będzie to już inny rodzaj testu.
będę wdzięczny za pomoc jak i czy możliwe jest modelowanie powyższego scenariusza. w jaki sposób projektuje się bazy danych, w których trzeba przechowywać informację o starych i aktualnych parametrach? jako analogia przychodzi mi do głowy informacja o zmiennym oprocentowaniu lokaty w banku, ale może źle podchodzę do problemu? może należy go rozbić na inne zagadnienia? może znacie jakiś diagram ER, w którym uwzględniona jest podobna funkcjonalność? dopiero zaczynam przygodę z bazami danych i każda uwaga pomocna w zrozumieniu zależności w powyższym scenariuszu, jego rozwiązania i implementacji w bazie postgresql będzie dla mnie cenna.
dziękuję i pozdrawiam, geos
Sławomir Szyszło - 02-08-2006 00:48
Dnia Mon, 31 Jul 2006 20:51:44 +0200, geos <geos@nowhere.org.invalid> wklepał(-a):
>witam, > >proszę o pomoc w koncepcyjnym modelu poniższego scenariusza. dopiero >zaczynam przygodę z bazami danych i pełne ogarnięcie zależności sprawia >mi trudność. > >jest sobie strona www, na której użytkownicy mogą rozwiązywać testy. >każdy test składa się z pytań i odpowiedzi. odpowiedzi są punktowane. > >na przykład: >pytanie 3. w tęczy kolor pomarańczowy leży najbliżej koloru: >[ ] czerwonego (1 pkt) >[ ] żółtego (1 pkt) >[ ] niebieskiego (0.25 pkt) > >punkty za odpowiedzi w testach mogą być zmieniane przez administratora >raz na miesiąc. administrator może również dodawać nowe testy oraz >usuwać istniejące. liczba punktów za cały test jest funkcją punktów za >poszczególne pytania (administrator może zmieniać tę funkcję).
Wprowadź daty obowiązywania testu (zestawu pytań, odpowiedzi i punktacji) oraz status Aktywne/Wygasłe (ewentualnie jeszcze status "prototyp" - dla testów "w produkcji"). Przy wyszukiwaniu testu szukasz takich, gdzie data bieżąca jest w zakresie <data_od, data_do> testu i status jest Aktywny. Daty testów aktywnych muszą być oczywiście rozłączne - aplikacja musi tego pilnować. Testów aktywnych nie można modyfikować, można tylko utworzyć kopię.
Przy wynikach testu dla danego użytkownika trzymasz tylko ID zestawu testowego i nic ponadto - historię zmian masz zachowaną, więc nie musisz przy każdym wyniku trzymać informacji jaka była punktacja. -- Sławomir Szyszło mailto:slaszysz@poczta.onet.pl Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/ Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
geos - 02-08-2006 00:49
Sławomir Szyszło wrote: > Wprowadź daty obowiązywania testu (zestawu pytań, odpowiedzi i punktacji) oraz > status Aktywne/Wygasłe (ewentualnie jeszcze status "prototyp" - dla testów "w > produkcji"). Przy wyszukiwaniu testu szukasz takich, gdzie data bieżąca jest w > zakresie <data_od, data_do> testu i status jest Aktywny. Daty testów aktywnych > muszą być oczywiście rozłączne - aplikacja musi tego pilnować. > Testów aktywnych nie można modyfikować, można tylko utworzyć kopię. > > Przy wynikach testu dla danego użytkownika trzymasz tylko ID zestawu testowego i > nic ponadto - historię zmian masz zachowaną, więc nie musisz przy każdym wyniku > trzymać informacji jaka była punktacja.
dziękuję za odpowiedź. przemyślę i odezwę się jeszcze.
pozdrawiam, geos
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?=
Import za =?ISO-8859-2?Q?pomoc=B1_EMS_Data_Import_for_?==?ISO-8859-2?Q?MySQL_-_polskie_litery=2E?=
=?iso-8859-2?q?Przentacja,_probelm=2E_Prosz=EA_o_pomoc=2E?=
=?iso-8859-2?q?Panie_i_Panowie-prosz=EA_o_pomoc_ze_skanerem=2E_ARCUS_II=2ECUDA?=
=?iso-8859-2?q?[apache]_restart_za_pomoc=B1_cron'a_i_too_many_open_files? =
[MSSQL] Wykonanie DTS za =?ISO-8859-2?Q?pomoc=B1_triggera?=
[Oracle] =?ISO-8859-2?Q?Pro=B6ba_o_pomoc_przy_zapytaniu?=
=?ISO-8859-2?Q?pro=B6ba_o_pomoc_w_wyborze_sprz=EAtu?=
[MySQL] Proszę o pomoc w utworzeniu zapytania do dwóch tabel.
[MySQL] group by i dodatkowe warunki. Pomoc przy zapytaniu.
zanotowane.pldoc.pisz.plpdf.pisz.plautwywalczyl.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|