Portál AbcLinuxu, 25. dubna 2024 18:28


Dotaz: SQL - navrh db pro anketu

7.10.2005 22:09 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
SQL - navrh db pro anketu
Přečteno: 152×
Odpovědět | Admin
Zdravim

Doufam ze nevadi ze mam dotaz trochu od sousedu. Potrebuju poradit s navrhem SQL tabulky.

v soucasne dobe mam tuto tabulku:

time - cas vytvoreni
voteid - md5 identifikator hlasovani
owner - md5 id zadavatele hlasovani
question - otazka
answer1 - odpoved1
answer2 - odpoved2
answer3 - odpoved3
count1 - pocet hlasu1
count2 - pocet hlasu2
count3 - pocet hlasu3

Tohle mi funguje jak ma. Jenze mam problem ze k tomu potrebuju dodelat omezeni hlasovani na konkretni dvojici md5 id uzivatele + jeho heslo. Hlasovat muze samozrejme jen jednou. Chtel bych tam mit i zapsano jak kdo hlasoval.

Rad bych to vsechno nechal jen v jedne tabulce v jednom radku. Jedine co me napadlo je pridat dalsi sloubec a v nem mit data ve tvaru:

31486-1;44793-2;79814-2;14566-3;

31486 je zkracene md5 uzivatele, kteryho mnam v jine tabulce. Jenze me nenapada jak bych to v PHP parsoval, byla by to asi dost oskliva prasecinka.

Samozrejme me napada zpusob jak to udelat kdyz bych mel mit pro kazde hlasovani extra tabulku, ale opravdu se tomu neda vyhnout?

Diky vsem kdo poradi.

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Heron avatar 7.10.2005 22:27 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: SQL - navrh db pro anketu
Odpovědět | | Sbalit | Link | Blokovat | Admin
omezeni hlasovani na konkretni dvojici md5 id uzivatele + jeho heslo.

Proč heslo?

Rad bych to vsechno nechal jen v jedne tabulce v jednom radku.

Proboha jen to ne. Pak by to bylo všechno jiné, jen ne databáze

Samozrejme me napada zpusob jak to udelat kdyz bych mel mit pro kazde hlasovani extra tabulku, ale opravdu se tomu neda vyhnout?

Proč tak složitě? Co takhle si udělat jednu tabulku a do té vkládat tyto dva údaje: iduzivatele(tvoje md5uzivatele), idotazky(zřejmě to tvoje voteid). A při každém hlasování se mkrneš jesti ten uživatel hlasoval v této anketě. Hotovo.

Heron
Josef Kufner avatar 7.10.2005 22:30 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: SQL - navrh db pro anketu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tohle by chtělo rozdělit na zhruba 3 tabulky: Anketa, otazky, hlasy a určitě ještě něco.
Hello world ! Segmentation fault (core dumped)
7.10.2005 22:38 johniez | skóre: 17 | blog: xyz | Praha
Rozbalit Rozbalit vše Re: SQL - navrh db pro anketu
Přesně tak..
7.10.2005 23:01 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: SQL - navrh db pro anketu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jedine co me napadlo je pridat dalsi sloubec a v nem mit data ve tvaru: 31486-1;44793-2;79814-2;14566-3;

Vytváření takových "kompozitních" sloupců má jediný pozitivní efekt: když si to zkusíte, pochopíte nejlépe, jaká to byla chyba, a víckrát už něco takového neuděláte… :-)

Takže bych zvolil spíš něco jako

  create table POLL_USERS(
    ID integer not null primary key,
    NAME varchar(32),
    ...
  );

  create table POLLS(
    ID integer not null primary key,
    QUESTION varchar(256),
    ...
  );

  create table POLL_OPTIONS(
    POLL integer not null references POLLS(ID),
    ORD smallint not null,
    ANSWER varchar(256),
    ...
    primary key(POLL,ORD)
  );

  create table POLL_VOTES(
    PUSER integer not null references POLL_USERS(ID),
    POLL integer not null,
    ORD smallint not null,
    primary key (PUSER,POLL),
    foreign key (POLL,ORD) refereces POLL_OPTIONS(POLL,ORD)
  );
7.10.2005 23:33 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: SQL - navrh db pro anketu
Zdravim

.. vsak proto jsem tayk psal ze je to jediny napad a pekna prasecinka, ne ze bych to tak chtel udelat.

Asi teda vymyslim tu sadu vicero tabulek jak navrhujete.

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
14.2.2009 12:40 tomík
Rozbalit Rozbalit vše Re: SQL - navrh db pro anketu

Omlouvám se za vyhrabání starého vlákna, ale jak by se pak udělal samotný výpis dat? (SQL příkaz)

Děkuju moc :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.