0 follower

Общая структура

Основываясь на анализе требований, мы установили, что наше приложение требует наличия четырех таблиц БД для хранения данных: User, Post, Comment и Tag:

  • User хранит пользовательскую информацию, включая имя пользователя и пароль;
  • Post хранит информацию о записях:
    • title: необходимо, заголовок поста;
    • content: необходимо, содержимое поста, использующее формат Markdown;
    • status: необходимо, статус поста, может принимать значения:
      • draft: запись находится в черновом варианте и невидима для публики;
      • published: запись опубликована;
      • archived: запись с истекшим сроком действия, архивная, невидима публике.
    • tags: опционально, список разделенных запятой тэгов, относящих запись к той или иной категории;
  • Comment хранит информацию о комментариях. Каждый комментарий ассоциируется с некоторой записью и содержит следующие поля:
    • name: необходимо, имя автора;
    • email: необходимо, email автора;
    • website: опционально, адрес веб-сайта автора;
    • content: необходимо, текст комментария. Используется формат Markdown;
    • status: необходимо, статус комментария, показывающий, утвержден ли комментарий (значение 1) или нет (значение 0);
  • Tag хранит информацию о тегах записей. Каждая запись может иметь несколько тэгов. Каждый тег может быть присвоен нескольким записям. Таблица Tag используется портлетом «облако тегов», которому нужно посчитать частоту использования каждого тега.

Следующая диаграмма сущность-отношение (ER) показывает структуру таблиц и отношений между ними. Обратите внимание, что отношение между сущностями Post и Tag — многие-ко-многим (реализуется как два отношения один-ко-многим через промежуточную таблицу PostTag).

Диаграмма сущность-отношение БД системы управления блогом

Диаграмма сущность-отношение БД системы управления блогом

SQL, соответствующий ER-диаграмме выше, вы можете найти в демо-блоге. В установленной копии фреймворка они находятся в файле /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql.

Мы разделили разработку нашего приложения на несколько основных этапов:

  • Этап 1: создание прототипа системы управления блогом. Он должен содержать большую часть требуемой функциональности;
  • Этап 2: управления постами: создание, удаление, отображение записей списком, отображение отдельной записи;
  • Этап 3: управление комментариями: создание, обновление, удаление, показ списком и утверждение комментариев к постам;
  • Этап 4: реализация портлетов: меню пользователя, формы входа, облака тегов и недавних комментариев;
  • Этап 5: финальная оптимизация и развертывание.