jak z toho ven

Petr Vileta petr na practisoft.cz
Čtvrtek Červen 26 02:17:21 CEST 2003


Omlouvam se za %SUBJ, ale nic vhodnejsiho me nenapada. Predesilam, ze uz
jsem to "nejak" vyresil, ale s resenim nejsem spokojeny a rad bych znal
nazory dalsich lidi.

Aplikace pro vyherni souteze na internetu - zadani:
1) Soutezici se zaregistruje na webu a uvede o sobe nejake udaje.
2) Soutezici nesmi mit moznost se zaregistrovat vicekrat.
3) Soutezicimu je prideleno identifikacni cislo, ktere MUSI byt 6 mistne
(kvuli lepsi zapamatovatelnosti)
4) Delka trvani soutezi neni nijak omezena.

Moje uvahy:
A) Pro zajisteni bodu 2 je nejvhodnejsi pouzit rodne cislo, protoze je
stejne nutne overeni totoznosti pri vyplaceni pripadne vyhry. Je mi znamo,
ze existuji duplicitni rodna cisla, ale tito lide asi nebudou soutezit na
netu (pry se jedna o velmi stare obcany, jinde udajne problem duplicit neni)
B) Pokud pristoupim na uvahu B), pak rodne cislo musi byt unikatnim klicem,
ale protoze soutezici bude mit prideleno identifikacni cislo (aby se RC
zbytecne neposilalo po netu), nemelo by RC byt primarnim klicem, protoze se
podle nejs stejne nebude hledat, pouze zajisti neduplicitu, tedy bod 2)
zadani.
C) Az se soutez spusti, bude se hlasit stovky lidi denne, jenze postupne to
spadne na jednotky prihlasenych, protoze vetsina zajemcu uz bude prihlasena.
Zde oddeluji proces registrace souteziciho od procesu vlastniho soutezeni,
ten je znacne jednoduchy.
D) Ciselna rada identifikacnich cisel je omezena na 999999.
E) Casem take cast soutezicich odpadne, ale jini se budou nove hlasit. Jenze
podle D) by uz nemusela byt volna cisla, takze je nutne davat delsi dobu
nevyuzivana cisla do karanteny (oznacit jako neplatne a od kdy) a po case je
opet pouzit pro novou osobu.
F) Jako primarni klic je tedy nutne pouzit 6 mistne identifikacni cislo
souteziciho.
G) Prideleni tohoto cisla je znacne slozite. Je nutne pokusit se nejprve
pridelit dalsi v poradi ( max()+1 ) a pokud vyjde vice nez 999999, pak se
pokusit nalezt prvni nepouzivane, ktere uz ma karantenni dobu uplynulou a
teprve pokud se nezdari ani toto, ohlasit neco jako "Sorry, dalsi uz
neberem".

Jelikoz to mam napsane pro MySQL, tak jsem se opet nevyhnul zamykani tabulky
a tentokrat to i me pripada jako velmi nevhodne reseni. Zajima me, jak by to
resil nekdo jiny. Premluvit zadavatele, ze ID ma byt 13 mistne nelze, on si
ho neni schopen zapamatovat, takze toho nebude schopen nikdo :-) Jak
zajistit, aby se uzivatel neprihlasil vicekrat me taky nenapada jinak, nez
podle RC.
Jeste jednou zduraznuji, ze to uz mam hotove, abych nebyl podeziran, ze se
tady zeptam a pak na tom budu vydelavat penize.
--
Petr

--
Petr




Další informace o konferenci Databases