
Таблица themes нормализована только частично. Она содержит два внешних ключа: id_author и id_forumдля таблиц посетителей и списка форумов, в то же время в ней дублируется имя автора author, присутствующее также в таблице посетителей authors под именем name. Этот случай является примером умышленной денормализации, необходимой для избежания запроса таблицы авторов, что позволяет обеспечить приемлемую скорость работы форума.
Создадим последнюю таблицу posts в которой будут храниться сообщения. В таблице posts создадим следующие поля:
· первичный ключ (id_post);
· тело сообщения (name);
· необязательная ссылка на ресурс, которую автор сообщения может ввести при добавлении сообщения (url);
· путь к файлу, прикрепляемому к сообщению (file);
· имя автора (author);
· внешний ключ к таблице авторов (id_author);
· флаг ('hide'), принимающий значение 'hide', если сообщение скрытое, и 'show', если он отображается (это поле необходимо для модерирования);
· время добавления сообщения (putdate);
· сообщение, ответом на которое является данное сообщение (parent_post): если это первое сообщение в теме, то поле равно 0;
· внешний ключ к теме (id_theme), указывающий, к какой теме относится сообщение.