Гостевая или ужасы нашего времени

Архитектура гостевой книги

Гости
- могут регистрироваться
- могут просматривать
Посетители
- просматривать сообщения
- авторизовываться
- восстанавливать пароль
- оставлять сообщения
Администратор
- редактировать сообщения
- удалять сообщения
- может давать ответы на сообщения, одно сообщение = один ответ

Укажите сроки, за какой промежуток времени вы можете это реализовать?


Вариантов решений несколько, но, остановимся на одном, ибо в зависимости от требований данная задача может по времени вырасти как грибы под дождем.
Например, это уже не просто гостевая, а она уже с использованием ООП, да нет же, нам еще требуется впихнуть туда паттерны проектирования.
Ой, совсем забыли, хорошо бы еще AJAX подключить и смайлики добавить.
Точно, нужны еще интерфейсы и абстрактные классы, но и этого нам мало, давайте еще покроем нашу гостевую тестами.
Усложним себе задачу и добавим еще проверки, чтобы если кто редактирует запись, то другой в это время не может ее редактировать и ему вываливается сообщение о том, что файл кем-то редактируется.
Плюс к этому добавим выбор и обоснование базы данных, вдруг в нашей гостевой уже млрд. записей и мы к ней еще допишем какой-нибудь виджет.
Еще давайте добавим использование процедур, триггеров, используем залочивание таблицы при редактировании и добавим применение транзакций и не забудем про memcached... Что-то я разошелся... ;)

На первый взгляд - тривиальная задача, но может превратиться во что-то невероятное.
Порой - не стоит усложнять жизнь ни себе, ни другим. Будьте проще! ;)

А теперь простенькая стуктура БД:

<?
users 
// таблица пользователей
 
id            // уникальный идентификатор
 
FIO            // ФИО пользователя
 
email        // email пользователя
 
date            // дата и время регистрации
 
role            // роль пользователя: гость, посетитель, админ
 
pass            // пароль в зашифрованном виде
 
is_enabled    // прошел проверку или нет
 
message // таблица сообщений
 
id            // уникальный идентификатор
 
users_id        // связь с таблицей пользователей
 
content        // сообщение
 
answer        // ответ на сообщение
 
is_enabled    // на случай, если существует предмодерация
 
date            // дата и время создания сообщения
?>