Anketa pro www stránky krok za krokem – návrh databáze
Existence anket se na různých internetových stránkách již stala samozřejmostí. Slouží k vyjádření názoru čtenáře na daný web či na aktuální událost apod. Dnes otevírám další seriál článků, ve kterém se budeme věnovat postupné tvorbě skriptů pro vytvoření a použití ankety na vašem vlastním webu.
Návrh databáze
Nejdůležitějším krokem celé ankety a vlastně jakékoliv aplikace, která pracuje s databází, je návrh datové struktury. Při špatném návrhu datové struktury se dříve či později dostaneme do stavu, kdy se vlastní rozšiřování aplikace stává natolik složitým (a tím pádem i finančně náročným), že je mnohdy lepší začít úplně od začátku.
V tomto prvním díle seriálu o tvorbě webové ankety nás čeká návrh datové struktury. Postupně krok za krokem vás provedu vývojem ankety a předložím vám dva možné návrhy databáze a zdůvodním, proč jsem si zvolil ten, který jsem zvolil.
Dejme tomu, že máme vytvořit systém pro realizaci anket na webu a máme na něj následující požadavky:
- Na anketní otázku jsou možné tři odpovědi
- Na webu bude aktivní právě jedna anketa, přičemž se aktivuje ihned po zadání
- Výsledky anket budou zobrazeny sloupcovými grafy (pro jednoduchost jedné barvy)
Na základě tohoto zadání navrhneme strukturu databáze:
Název položky | Datový typ | Popis a význam |
idanketa | integer | Slouží, k jednoznačné identifikaci ankety |
otazka | string | Prostor pro otázku |
odpoved1 | string | Tyto položky slouží pro zápis možných odpovědí |
odpoved2 | ||
odpoved3 | ||
pocet_odpoved1 | integer | Tyto položky slouží pro zápis počtu hlasů jednotlivým otázkám |
pocet_odpoved2 | ||
pocet_odpoved3 |
V této naprosto jednoduché databázové tabulce sice jasně vidíte celou anketu, otázky i stav hlasování, ale při požadavku na rozšíření třeba počtu otázek budete postaveni před problém. Budete totiž muset provést několik kroků za účelem rozšíření anketního systému třeba na požadované čtyři otázky:
- Do databáze doplnit položky pro odpovědi a počet_odpovědí
- Upravit ASP skripty, které zajišťují hlasování a zpracovávají výsledky hlasování.
Takovéto úpravy vás čekají pokaždé, když budete chtít změnit počet otázek. Pevně věřím, že jsem vás od takového přístupu odradil a přijměte řešení, které je mnohem pružnější a umožňuje použít libovolný počet otázek a případné další rozšiřování nad rámec původního zadání je poměrně snadné a rychlé.
Mé řešení anketního systému spočívá v tom, že používám několik vzájemně propojených tabulek, ze kterých následně získávám informace pro vlastní zpracování ankety:
Anketa | ||
Název položky | Datový typ | Popis |
idanketa | integer | Slouží, k jednoznačné idetifikaci ankety |
datum_start | Date | Určuje datum, kdy má být anketa spuštěna |
datum_konec | Date | Určuje datum, kdy má být anketa ukončena |
otazka | String | Vlastní otázka ankety |
Možná vás zarazí, proč jsou v tabulce uvedeny položky datum_start a datum_konec. Je to pro usnadnění správy anket, kdy máte vlastně možnost nadefinovat si několik anket dopředu a zadat datum, kdy se mají zobrazovat a vše ostatní již necháte na skriptech, které toto ošetří. Pokud v této tabulce postrádáte informace o tom, jaké jsou možné odpovědi a kolik jich bylo, nelekejte se, nezapomněl jsem na ně. Úmyslně jsem je umístil do jiné tabulky. Proč? To hned uvidíte:
Anketa_Odpovedi | ||
Název položky | Datový typ | Popis |
idodpovedi | integer | Slouží k jednznačné idetifikaci odpovědi |
idanketa | integer | Slouží k propojení otázky s anketou |
odpoved | string | text odpovědi |
pocet | integer | pocet hlasů k odpovědi |
V tabulce Anketa_Odpovedi si nadefinujeme tolik odpovědí, kolik uznáme za vhodné a pomocí položky idankteta (modře označené pole v tabulce) svážeme s příslušnou anketou.
Výhodou tohoto řešení je to, že pro jednu anketní otázku můžeme mít dvě a více odpovědí a pro přidání další odpovědi nemusíte upravovat skripty.
Proč píšu, že jedna anketa může mít dvě a více odpovědí? Jak jistě sami uznáte, anketa, kde je méně než dvě možné odpovědi na otázku nedává příliš smysl. Je samozřejmě možné mít jednu nebo dokonce žádnou odpověď na anketní otázku (skripty to bez problémů zvládnou), ale takováto anketa samozřejmě nemá žádný smysl.
Nastává otázka, jakou databázi pro naši anketu použít. Pokud bude vaše aplikace nasazena na Internetu, vřele doporučuji SQL Server (6.5, 7.0 či třeba i 2000). V žádném případě pro použití na Internetu nedoporučuji databázi Access, neboť přístup do databáze je pomalý a může vést až k zahlcení serveru požadavky a dokonce i jeho pádu. Podrobnější popis této problematiky najdete v článku ASP a jak pomocí něj přistupovat k databázím.
Na závěr tohoto článku ještě uvedu SQL příkazy, pomocí kterých snadno vygenerujete tabulky, které budeme dále používat.
|
|
Protože pravděpodobně většina z vás nemá možnost používat SQL server uvádím i strukturu databáze pro Access.
To je pro dnešek vše. V příštích dílech seriálu nás čeká několik dalších kroků, které budeme potřebovat ke zprovoznění ankety a jejímu dalšímu vylepšení. Jedná se o vytvoření stránku pro zadávání a případné mazání jednotlivých anket a anketních otázek, načtení ankety z databáze a provedení jejího zobrazení, zajištění vlastního hlasování a znemožnění vícenásobného hlasování (pomocí cookies) a nakonec zobrazení archívu všech proběhlých anket.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Jak se chránit před podvody na internetu – část 2
14. října 2024 -
inPage AI: Jak na generování obsahu
18. července 2024 -
Nové AI modely od Open AI a Google
22. května 2024 -
Členská sekce: 4 důvody proč ji mít na svém webu
12. března 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024