Аргерих Л. О языке РНР. Часть 4. Страница 5


Проектирование модели данных

В качестве хранилища будет использована база данных, поэтому приложе­ние основано на реляционной модели. Структура необходимых нам таблиц следующая:

polls

pollid INTEGER(4) question VARCHAR(80)

poll_options

pollid INTEGER(4) optionid INTEGER(4) optname varchar(SO) votes INTEGER(4)

Эти таблицы будут созданы следующим сценарием:

create table polls(

pollid integers) not null AUTO_INCREMENT, question VARCHAR(80), primary KEY (pollid));

CREATE TABLE poll_0ptions(

pollid INTEGER(4) NOT NULL,

optionid INTEGER(4) NOT NULL AUTO_INCREMENT,

optname VARCHAR(80),

votes INTEGER(4) ,

primary KEY(optionid));

-CREATE TABLE current_poll( pollid INTEGER(4));

Уровень содержимого

Мы построим компонент доступа для базы данных MySQL. Мы не станем по­казывать создание класса, потому что не станем создавать в этой главе рабо­чий пример, а ограничимся эскизом.

В компоненте обработки данных мы должны реализовать все операции в на­шей модели данных (табл. 15.2):

Все эти функции можно инкапсулировать в классе использующем

объект DB для доступа к базе данных. При замене базы данных с MySQL на PostgreSQL мы создадим экземпляр объекта БД PostgreSQL DB, и класс Poll_Data сможет работать без модификации.

Уровень логики

В уровне логики можно выделить два различных логических модуля. Во- первых, это управляющий модуль, в котором можно создавать опросы, до­бавлять и удалять варианты ответов, выбирать текущий опрос и т. д. Его можно реализовать с помощью простых форм HTML, используя уровень представления для показа форм и уровень обработки данных для взаимо­действия с моделью

Во-вторых, нам нужен модуль приложения, в котором пользователь будет видеть действующий опрос, голосовать и видеть результаты опроса. В этом упрощенном приложении мы не рассматриваем многократное голосование одного

Таким образом, мы можем создать класс Poll^Adrrnr с функциями админист­рирования и отображения форм в броузере и класс Poll_Application с функ­циями показа опроса, обработки голосования и отображения результатов.

Уровень представления

В уровне представления мы построим класс HTML для генерации форм, по­каза форм, создания таблиц и т. д. Это будет очень общий класс, который бу­дет сильно увеличиваться в размере по мере создания новых приложений, требующих новых функций представления. Компонент представления дан­ных будет содержать методы для отображения формы опроса, вывода ре­зультатов и создания форм. Этот класс будет клиентом класса HTML: идея состоит в том, что в классе представления данных не будет вообще никакого кода HTML (используются только вызовы класса HTML).