ďťż
 
Ankieta w MySQL - jak zorganizowac tabele? ďťż
 
Ankieta w MySQL - jak zorganizowac tabele?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Ankieta w MySQL - jak zorganizowac tabele?



Przemek - 11-03-2007 00:02
Ankieta w MySQL - jak zorganizowac tabele?
  Witam

Ankieta ma wygladac nastepujaco:

Temat1:
Pytanie 1 (Odp1, Odp2....)
Pytanie 2 (Odp1, Odp2....)
.........................................
Temat2:
Pytanie 1 (Odp1, Odp2....)
Pytanie 2 (Odp1, Odp2....)
.........................................
TematN:
Pytanie 1 (Odp1, Odp2....)
Pytanie 2 (Odp1, Odp2....)
.........................................

Cala ankieta wyswietla sie na jednej stronie WWW, ale jest podzielona na
rozne dajmy na to Tematy(1-N).
Tematy ankiet sie nie powtarzaja, lecz zawarte w nich pytania moga cie
powtarzac w roznych Tematach, ale nie musza.
Liczba Pytan w poszczegolnych Tematach, moze byc rozna.
Liczba odpowiedzi na pozczegolne Pytania tez moze byc rozna i same
odpowiedzi moga sie roznic od siebie (np od 2 do 6).
Chcialbym, zeby to wszystko znajdowalo sie w bazie danych MySQL,
tak aby mozna bylo usuwac cale Tematy, badz tylko Pytania (i odpowiedzi) lub
je dodawac.
Jak to zorganizowac, zeby bylo dobrze?

Myslalem o czyms takim:

Zrobic oddzielne (nie polaczone ze soba) tabele dla kazdego tematu (nazwa
tabeli to Temat).
Same nazwy tematow, mozna przechowywac w innej tabeli.
W srodku np:

Temat1
Nazwa pytania | Odp1 | Odp2 | Odp3 | Odp4
-----------------------------------------------------------------
Pytanie1 Opcja1 Opcja2 Null
- przypadek pytania, w ktorym sa tylko 2 odpowiedzi
Pytanie2 Opcja1 Opcja2 Null Null
Pytanie3 Opcja1 Opcja2 Opcja3 Opcja4

itd. dla kolejny Tematow

Natomiast tabela wynikow, wygladalaby nasepujaco:

TematWynik1
Nazwa pytania | Odp1 | Odp2 | Odp3 | Odp4
-----------------------------------------------------------------
Pytanie1 1 0 Null
Null
Pytanie2 1 0 Null
Null
Pytanie3 0 2 0
0
1- jedna osoba dala taka odp
2- dwie osoby tak odpwoeidzialy
(cos w rodzaju licznika)

Nie chodzi mi o napisanie kodu, lecz zaproponowanie struktury tabel w MySQL.
Moze ktos robil cos podobnego i mi podpowie, bede wdzeczny.
Moj pomysl moze i zadziala, tylko jak np jedno pytanie bedzie mialo 16
odpowiedzi,
to bede mial duzo pustych pol. Poza tym liczbe kolum podaje sie chyba z gory
podczas projektowania bazy,
dlatego z gory musialbym ograniczyc ilosc odpwoiedzi.

Pozdrawiam





Piotr 'piter' Hlawski - 11-03-2007 00:02

  Taka prosta propozycja:

ankiety:
id integer PK
name varchar(100) NOT NULL

tematy:
id PK
ankieta_id integer FK references ankieta(id)
description varchar(150) NOT NULL

pytania:
id integer PK
content text

odpowiedzi:
id integer PK
pytanie_id integer FK references pytania(id)
content text

tematy_pytania
temat_id integer PK FK references tematy(id)
pytanie_id integer PK FK referenced pytania(id)

Pewnie dojdą do tego jakieś pola typu status (aktywna, nie aktywna), jakieś
daty. Do tego by trzeba dodać tablice na zbieranie wyników itd. Ale kawy na
ławę nie wyłożę, bo to nieedukacyjne :)

Myślę, że powinieneś trochę doczytać ogólnie o relacyjnych bazach danych,
postaciach normalnych itd.

--
..:: Piter // phlawski$gmail,com // gg: 4534287 ::.
Jeśli powiesz "Chuck Norris" w Mongolii, ludzie zaczną cię kopać z półobrotu
w twarz w jego imieniu. Zaraz po ich kopach, zostaniesz kopnięty w twarz z
półobrotu przez samego Norrisa.




Przemek - 11-03-2007 00:02

 
Użytkownik "Piotr 'piter' Hlawski" <phlawski@cut_this_crap.gmail.com>
napisał w wiadomości news:1226415.mrJnKqYOWd@zatoichi.homeunix.org...
> Taka prosta propozycja:
>
> ankiety:
> id integer PK
> name varchar(100) NOT NULL
>
> tematy:
> id PK
> ankieta_id integer FK references ankieta(id)
> description varchar(150) NOT NULL
>
> pytania:
> id integer PK
> content text
>
> odpowiedzi:
> id integer PK
> pytanie_id integer FK references pytania(id)
> content text
>
> tematy_pytania
> temat_id integer PK FK references tematy(id)
> pytanie_id integer PK FK referenced pytania(id)
>
> Pewnie dojdą do tego jakieś pola typu status (aktywna, nie aktywna),
> jakieś
> daty. Do tego by trzeba dodać tablice na zbieranie wyników itd. Ale kawy
> na
> ławę nie wyłożę, bo to nieedukacyjne :)
>
> Myślę, że powinieneś trochę doczytać ogólnie o relacyjnych bazach danych,
> postaciach normalnych itd.
>
>
> --
> .:: Piter // phlawski$gmail,com // gg: 4534287 ::.
> Jeśli powiesz "Chuck Norris" w Mongolii, ludzie zaczną cię kopać z
> półobrotu
> w twarz w jego imieniu. Zaraz po ich kopach, zostaniesz kopnięty w twarz z
> półobrotu przez samego Norrisa.
>

Dzieki;)

Napewno doczytam, a jak cos to jeszcze pomecze grupowiczow;>
W wiekszosci ksiazek opisywany jest problem bazy danych np w jakims sklepie,
albo cos podobnego.
Jest sklep, baza w ktorej mozna identyfikowac klientow oraz produkty, ktore
oni zamowili + data, cena.
Sprawa sie komplikuje, gdy dany klient moze wybierac tylko w okreslonych
produktach.
Natomiast jeszcze inny klient moze wybierac w jeszcze innych produkach.
Liczba produktow jest nieograniczona, no i trzeba je jakos podpisac pod
danego klienta.
Podobnie jest z tymi pytaniami w ankiecie.

Pozdrawiam




Piotr 'piter' Hlawski - 12-03-2007 00:01

  Przemek wrote:

[...]
>
> Napewno doczytam, a jak cos to jeszcze pomecze grupowiczow;>
> W wiekszosci ksiazek opisywany jest problem bazy danych np w jakims
> sklepie, albo cos podobnego.
> Jest sklep, baza w ktorej mozna identyfikowac klientow oraz produkty,
> ktore oni zamowili + data, cena.
> Sprawa sie komplikuje, gdy dany klient moze wybierac tylko w okreslonych
> produktach.
> Natomiast jeszcze inny klient moze wybierac w jeszcze innych produkach.
> Liczba produktow jest nieograniczona, no i trzeba je jakos podpisac pod
> danego klienta.
> Podobnie jest z tymi pytaniami w ankiecie.

Widzisz, od tego są te relacyjne bazy danych (od tego one są;).
Nie ma znaczenia na czym ci wytłumaczą, czy to będzie sklep czy magazyn czy
co innego. Typy relacji pozostają te same, 3 postać normalna pozostaje na
tej samej zasadzie - doczytaj.

--
..:: Piter // phlawski$gmail,com // gg: 4534287 ::.
Chuck Norris umarł dziesięć lat temu, ale Ponury Żniwiarz nie miał odwagi mu
tego powiedzieć.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lisinski.htw.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com