
- •Хранилище фотоальбомов
- •Введение
- •Постановка задачи
- •Описание инструментов субд
- •Язык программирования
- •Структура базы данных Диаграмма
- •Описание таблиц
- •Структура web-приложения Определение основных страниц
- •Определение реализации страниц
- •Контроллеры
- •Просмотр списка пользователей
- •Просмотр профиля пользователя
- •Вход пользователя в систему
- •Выход пользователя из системы
- •Регистрация нового пользователя
- •Редактирование профиля
- •Удаление профиля
- •Восстановление пароля
- •Категории
- •Просмотр категорий пользователя
- •Добавление новой категории
- •Редактирование категории
- •Удаление категории
- •Альбомы
- •Вывод списка альбомов
- •Отображение списка альбомов в категории
- •Отображение альбомов конкретного пользователя
- •Добавление альбома
- •Изменение альбома
- •Удаление альбома
- •Фотографии
- •Вывод списка фотографий
- •Вывод списка фотографий в альбоме
- •Вывод списка фотографий пользователя
- •Просмотр фотографии
- •Добавление фотографии
- •Редактирование фотографии
- •Удаление фотографии
- •Поиск фотографии
- •Комментарии
- •Добавление комментариев
- •Просмотр комментариев
- •Оценивание фотографии
- •Просмотр средней оценки
- •Просмотр друзей пользователя
- •Добавление в друзья
- •Запросы в мои друзья
- •Принятие заявки
- •Отклонение заявки
- •Просмотр отправленных мной заявок
- •Удаление пользователя из списка друзей
- •Сообщения
- •Отправка сообщения
- •Просмотр списка диалогов
- •Просмотр диалога
- •Заключение
Описание инструментов субд
В качестве системы управления базами данных я выбрал свободно распространяемую СУБД MySQL версии 5.5. Она отвечает требованиям по таким критериям как
надежность
безопасность
скорость работы.
СУБД MySQL реализует язык SQL, совместимый со стандартом SQL:2008, который на сегодняшний день является крайним, что говорит об относительной «свежести» данного продукта.
Язык программирования
Для написания web-приложений используется множество языков, например: PHP, Perl, технология ASP, и т.д. Из всего множества этих языков я выбрал язык PHP версии 5.3, который является наиболее подходящим инструментом для реализации необходимого web-приложения, так как имеет понятный Си-подобный синтаксис, реализует парадигму ООП на достаточном уровне и обладает чрезвычайной гибкостью.
Как известно, писать что-либо свое необходимо лишь тогда, когда задача, решаемая программистом уникальна. В противном случае полезно использовать уже готовые инструменты. В данном случае для реализации своего приложения я использовал функционал PHP фреймворка CodeIgniter версии 2.1. Данный фреймворк реализует шаблон MVC, который подразумевает разделение логики и представления web-приложения.
Ход выполнения приложения CodeIgniter:
Фреймворк CodeIgniter имеет следующую файловую структуру:
application
----controllers
----models
----views
----...
system
----...
Для разработчиков важны лишь папки controllers, models и views, в которых расположены соответственно контроллеры, модели и представления.
Структура базы данных Диаграмма
Описание таблиц
users
Таблица users содержит в себе информацию о зарегистрированных в системе пользователях. Таблица имеет следующую структуру:
Поле |
Описание |
Тип данных |
Default |
NULL |
|
Уникальный номер пользователя на сайте |
INT |
|
нет |
name |
Имя пользователя в системе |
VARCHAR(30) |
|
нет |
Адрес электронной почты пользователя |
VARCHAR(254) |
|
нет |
|
password |
Пароль от аккаунта. Хранится в зашифрованном виде |
VARCHAR(32) |
|
нет |
birthday |
Дата рождения пользователя |
DATE |
|
нет |
reg_date |
Дата регистрации пользователя |
DATE |
|
нет |
active |
Флаг активности пользователя |
TINYINT |
1 |
нет |
admin |
Флаг администратора |
TINYINT |
0 |
нет |
friends
Таблица содержит информацию о дружественных связях между пользователями.
Поле |
Описание |
Тип данных |
Default |
NULL |
id |
Уникальный идентификатор отношения |
INT |
|
нет |
friend1 |
Идентификатор пользователя, который предложил |
INT |
|
нет |
friend2 |
Идентификатор пользователя, которому предложили |
INT |
|
нет |
confirmed |
Флаг принятия приглашения |
TINYINT |
0 |
нет |
date |
Дата создания связи |
DATE |
|
нет |
dialogs
Таблица содержит информацию о созданных между пользователями диалогах при общении через личные сообщения.
Поле |
Описание |
Тип данных |
Default |
NULL |
id |
Уникальный идентификатор |
INT |
|
нет |
user_1 |
Идентификатор пользователя, инициировавшего диалог |
INT |
|
нет |
user_2 |
Идентификатор пользователя, с которым инициировался диалог |
INT |
|
нет |
messages
Таблица содержит личные сообщения между пользователями в пределах существующего диалога.
Поле |
Описание |
Тип данных |
Default |
NULL |
id |
Уникальный идентификатор сообщения |
INT |
|
нет |
dialog_id |
Идентификатор диалога |
INT |
|
да |
from_id |
Идентификатор отправителя |
INT |
|
нет |
to_id |
Идентификатор получателя |
INT |
|
нет |
text |
Текст сообщения |
TEXT |
|
нет |
date |
Дата отправления сообщения |
DATETIME |
|
нет |
read |
Флаг прочтения сообщения получателем |
TINYINT |
0 |
нет |
categories
Таблица для хранения созданных пользователем категорий альбомов.
Поле |
Описание |
Тип данных |
Default |
NULL |
id |
Уникальный идентификатор категории |
INT |
|
нет |
user_id |
Идентификатор пользователя-владельца. Берется из таблицы Users |
INT |
|
нет |
title |
Заголовок категории |
NVARCHAR(200) |
|
нет |
date |
Дата создания категории |
DATETIME |
|
нет |
albums
Таблица содержит информацию о созданных пользователем альбомах в определенной категории.
Поле |
Описание |
Тип данных |
Default |
NULL |
|
id |
Уникальный идентификатор альбома |
INT |
|
нет |
|
user_id |
Идентификатор пользователя-владельца. Берется из таблицы users |
INT |
|
нет |
|
category_id |
Идентификатор категории, которой принадлежит альбом |
INT |
|
нет |
|
title |
Название альбома |
NVARCHAR(100) |
|
нет |
|
description |
Описание альбома |
TEXT |
|
да |
|
date |
Дата создания альбома |
DATE |
|
нет |
photos
Таблица для хранения информации о загруженных пользователем фотографиях.
Поле |
Описание |
Тип данных |
Default |
NULL |
id |
Уникальный номер фотографии |
INT |
|
нет |
user_id |
Номер пользователя, загрузившего файл. Берется из таблицы users |
INT |
|
нет |
album_id |
Номер альбома, в котором будет размещена фотография. |
INT |
|
нет |
title |
Название фотографии |
NVARCHAR(50) |
|
нет |
file_name |
Имя файла, с которым фотография хранится на диске. |
NVARCHAR(50) |
|
нет |
size |
Размер физического файла фотографии в килобайтах |
INT |
|
нет |
width |
Ширина изображения в пикселах |
INT |
|
нет |
height |
Высота изображения в пикселах |
INT |
|
нет |
date |
Дата загрузки фотографии |
DATE |
|
нет |
marks
Таблица содержит информацию о поставленных пользователем оценках фотографии.
Поле |
Описание |
Тип данных |
Default |
NULL |
id |
Идентификатор оценки |
INT |
|
нет |
photo_id |
Идентификатор оцениваемой фотографии |
INT |
|
нет |
user_id |
Идентификатор автора оценки |
INT |
|
нет |
mark |
Оценка |
TINYINT |
|
нет |
comments
Таблица, содержащая информацию о комментариях пользователей к фотографиям.
Поле |
Описание |
Тип данных |
Default |
NULL |
id |
Уникальный идентификатор комментария |
INT |
|
нет |
user_id |
Идентификатор пользователя – автора комментария. Если гость, то NULL |
INT |
|
да |
photo_id |
Идентификатор комментируемой фотографии |
INT |
|
нет |
text |
Текст комментария |
TEXT |
|
нет |
guest_email |
Если комментарий оставил гость, то заносим сюда E-mail |
NVARCHAR(254) |
|
да |
date |
Дата оставления комментария |
DATETIME |
|
нет |