Rozdział 18.
Na wielu witrynach spotykane są różnego rodzaju ankiety, które pozwalają na zbieranie opinii użytkowników na rozmaite tematy. Możemy poznać zarówno preferencje polityczne gości odwiedzających naszą stronę, jak i dowiedzieć się, jakim dysponują sprzętem komputerowym. Zbudujmy zatem system zbierania opinii umożliwiający obsługę wielu ankiet. Przyjmiemy przy tym założenie, że prawo do głosowania mają jedynie załogowani użytkownicy, a każdy z nich będzie dysponował tylko jednym głosem w jednej ankiecie. Z wynikami będą mogli natomiast zapoznać się wszyscy odwiedzający nasz serwis.
Zacznijmy od przygotowania struktury bazy danych. Wykorzystamy oczywiście system logowania z rozdziału 14. W bazie musi zatem znaleźć się przygotowana wtedy tabela Users. Dodatkowo utworzymy dwie tabele związane bezpośrednio z ankietami. Pierwsza z nich, o nazwie Ankiety, będzie przechowywała nazwy ankiet oraz ich status, składając się z następujących kolumn:
♦ Id — typu INTEGER, będąca kluczem podstawowym; przechowuje unikalny identyfikator każdej ankiety;
♦ Nazwa — typu VARCHAR, przechowująca nazwę (pytanie) ankiety;
♦ Status — typu BOOL, przechowująca status ankiety.
Kolumna Status będzie określała, czy dana ankieta jest aktywna (włączona), czy też nieaktywna (wyłączona). Ankiety nieaktywne nie będą wyświetlane w serwisie. W związku z powyższym instrukcja SQL tworząca tabelę Anki ety przyjmie postać:
CREATE TABLE Ankiety(
Id INTEGER PRIMARY KEY.
Nazwa VARCHAR(50) NOT NULL.
Status BOOLEAN NOT NULL
Druga tabela będzie zawierała opcje wyboru dla wszystkich ankiet. Będzie się ona składała z trzech kolumn: