Структура web-приложения
ОТЧЕТ
по курсовой работе
по курсу «ПвБД»
Хранилище фотоальбомов
Выполнил: студент группы A-91 Орищенко Тимофей Проверил: доцент каф. МОП ЭВМ Хашковский В.В. Оценка ______________________ «____» __________ 2015 г. |
Оглавление
Введение. 5
Постановка задачи.. 6
Описание инструментов. 7
СУБД.. 7
Язык программирования.. 7
Структура базы данных. 9
Диаграмма. 9
Описание таблиц.. 10
users. 10
friends. 10
dialogs. 10
messages. 11
categories. 11
albums. 11
photos. 11
marks. 12
comments. 12
Структура web-приложения.. 13
Определение основных страниц.. 13
Определение реализации страниц.. 13
Контроллеры... 13
Модели.. 14
Виды... 15
Описание страниц.. 16
Пользователи.. 16
Просмотр списка пользователей.. 17
Просмотр профиля пользователя.. 18
Вход пользователя в систему. 20
Выход пользователя из системы... 22
Регистрация нового пользователя.. 23
Редактирование профиля.. 25
Удаление профиля.. 26
Восстановление пароля.. 26
Категории.. 28
Просмотр категорий пользователя.. 29
Добавление новой категории.. 30
Редактирование категории.. 31
Удаление категории.. 31
Альбомы... 33
Вывод списка альбомов. 34
Отображение списка альбомов в категории.. 35
Отображение альбомов конкретного пользователя.. 36
Добавление альбома. 36
Изменение альбома. 38
Удаление альбома. 39
Фотографии.. 40
Вывод списка фотографий.. 41
Вывод списка фотографий в альбоме. 42
Вывод списка фотографий пользователя.. 44
Просмотр фотографии.. 45
Добавление фотографии.. 46
Редактирование фотографии.. 48
Удаление фотографии.. 49
Поиск фотографии.. 50
Комментарии.. 52
Добавление комментариев. 53
Просмотр комментариев. 54
Оценки.. 56
Оценивание фотографии.. 57
Просмотр средней оценки.. 57
Друзья.. 58
Просмотр друзей пользователя.. 61
Добавление в друзья.. 62
Запросы в мои друзья.. 63
Принятие заявки.. 63
Отклонение заявки.. 64
Просмотр отправленных мной заявок.. 64
Удаление пользователя из списка друзей.. 65
Сообщения.. 66
Отправка сообщения.. 68
Просмотр списка диалогов. 69
Просмотр диалога. 69
Заключение. 71
Введение
Само понятие «программирование в базах данных» подразумевает написание хорошо структурированных и оптимизированных запросов к серверу базы данных для получения какого-либо результата, согласно цели запроса. Но, естественно, почти никто (кроме администраторов) не работает с базой данных через прямое написание запросов. Вся работа осуществляется через определенное приложение, которое предоставляет доступ к необходимым данным из базы. В подавляющем большинстве случаев любая информационная система – это простая база данных с разработанным для взаимодействия с ней интерфейсом. В данной курсовой работе я описал создание приложения для работы с фотоальбомами.
Постановка задачи
В рамках данной курсовой работы необходимо разработать Web-приложение для взаимодействия с сервером базы данных в рамках создания системы «Хранилище фотоальбомов»
Задание:
Создание приложения с использованием любого изученного языка программирования.
1. Реализация полноценного приложения на основе БД с пользовательским интерфейсом
2. Создание соединения с БД и модулей
3. Создание классов
4. Использование валидации
5. Создание аутентификации
Описание инструментов
СУБД
В качестве системы управления базами данных я выбрал свободно распространяемую СУБД 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 |
id | Уникальный номер пользователя на сайте | INT | нет | |
name | Имя пользователя в системе | VARCHAR(30) | нет | |
Адрес электронной почты пользователя | VARCHAR(254) | нет | ||
password | Пароль от аккаунта. Хранится в зашифрованном виде | VARCHAR(32) | нет | |
birthday | Дата рождения пользователя | DATE | нет | |
reg_date | Дата регистрации пользователя | DATE | нет | |
active | Флаг активности пользователя | TINYINT | нет | |
admin | Флаг администратора | TINYINT | нет |
Friends
Таблица содержит информацию о дружественных связях между пользователями.
Поле | Описание | Тип данных | Default | NULL |
id | Уникальный идентификатор отношения | INT | нет | |
friend1 | Идентификатор пользователя, который предложил | INT | нет | |
friend2 | Идентификатор пользователя, которому предложили | INT | нет | |
confirmed | Флаг принятия приглашения | TINYINT | нет | |
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 | нет |
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 | нет |
Структура web-приложения