Загальна структура ================== Грунтуючись на аналізі вимог, ми вирішили використовувати для зберігання даних нашого додатку наступні таблиці: * `tbl_user` зберігає інформацію користувача, включаючи імʼя користувача та пароль; * `tbl_post` зберігає інформацію про записи блогу: - `title`: необхідно, заголовок запису; - `content`: необхідно, вміст запису у [форматі Markdown](http://daringfireball.net/projects/markdown/syntax); - `status`: необхідно, статус запису. Може приймати значення: * 1: запис знаходиться у чорновому варіанті та прихований від читачів; * 2: запис опубліковано; * 3: запис із закінченим терміном дії: не публікується в загальному списку, але все ще доступний окремо. - `tags`: опціонально. Список розділених комою тегів, які відносять запис до тієї чи іншої категорії; * `tbl_comment` зберігає інформацію про коментарі. Кожен коментар асоціюється із деяким записом і містить наступні поля: - `author`: необхідно, імʼя автора; - `email`: необхідно, email автора; - `url`: опціонально, адреса веб-сайту автора; - `content`: необхідно, текст коментаря у текстовому форматі; - `status`: необхідно, статус коментаря, який показує, затверджений коментар (значення 2) чи ні (значення 1); * `tbl_tag` зберігає інформацію про теги записів та їх кількості. Використовується для побудови хмари тегів. Таблиця містить наступні поля: - `name`: необхідно, унікальне імʼя тега; - `frequency`: необхідно, кількість використань тега у записах. * `tbl_lookup` зберігає інформацію про текстові синоніми цілочисельних даних (кодів). Коди використовуються при розробці, синоніми безпосередньо відображаються користувачам. Наприклад, ми використовуємо ціле число 1 для позначення чорнового статусу запису і рядок `Чернетка`, яку ми відображаємо користувачам. Таблиця містить наступні поля: - `name`: текстове представлення даних, що відображається користувачеві; - `code`: цілочисельне представлення даних; - `type`: тип даних; - `position`: порядковий номер для даних одного типу. Наступна діаграма сутність-звʼязок (ER) показує структуру таблиць і звʼязків між ними. ![Діаграма сутність-звʼязок БД системи управління блогом](schema.png) > Info|Інформація: Ми називаємо всі таблиці та їх поля у нижньому регістрі, так як різні СУБД сприймають регістр по-різному. > > Також ми використовуємо префікс `tbl_`. Зроблено це із двох причин. > По-перше, префікс дозволяє зберігати дані декількох додатків в одній БД, що часто доводиться робити в умовах віртуального хостингу. > По-друге, використання префіксів зменшує ймовірність збігу імен таблиць із зарезервованими ключовими словами СУБД. SQL, відповідний ER-діаграмі вище, ви можете знайти у [демо-блозі](http://www.yiiframework.com/demos/blog/). У встановленій копії фреймворку вони знаходяться у файлі `/wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql`. Ми розділили розробку нашого додатку на кілька основних етапів: * Етап 1: створення прототипу системи керування блогом. Він повинен містити більшу частину необхідної функціональності; * Етап 2: управління записами: створення, видалення, відображення записів списком, відображення окремого запису; * Етап 3: управління коментарями: створення, оновлення, видалення, відображення списком і ствердження коментарів до записів; * Етап 4: реалізація портлетів: меню користувача, форми входу, хмари тегів і недавніх коментарів; * Етап 5: фінальна оптимізація і розгортання.