Автор работы: Пользователь скрыл имя, 29 Мая 2013 в 17:59, курсовая работа
На курсовое проектирование была выбрана тема каталогизации программного обеспечения общего назначения.
Объектом разработки выступала база данных и клиентское приложения для работы с ней для работы со структурированным каталогом программ. Данный каталог предлагает всем желающим получить информацию об интересующих его программах, а разработчикам добавлять и изменять свои программы в каталоге.
При разработке серверной части проекта была использована СУБД MySQL, которая зарекомендовала себя как СУБД для веб-приложений. Клиентская часть проекта написана на скриптовом языке PHP с использованием процедурного подхода к программированию.
ИД_программы |
ИД_автора |
ИД_категории |
ИД_лицензии |
Размер |
Стоимость |
Версия |
Ссылка |
ID_картинки |
ID_программы |
Файл |
В таблице "ОС" создадим первичный ключ "ID_ОС". Для связывания таблиц "Программы" и "ОС" по связи многие-ко-многим следует создать дополнительную связывающую таблицу "Пр_ОС" и выделить в ней атрибуты "ID_программы" и "ID_ОС".
ИД_программы |
ИД_автора |
ИД_категории |
ИД_лицензии |
Размер |
Стоимость |
Версия |
Ссылка |
ID_программы |
ID_ОС |
ID_ОС |
Название |
Таким образом в результате преобразований ко 2НФ у нас получилась связанная база данных без составных первичных ключей, информация в таблицах которой не имеет повторяющихся записей, а значит база данных приведена ко 2 НФ.
2.4.3 Третья нормальная форма
Таблица находится в ЗНФ, если она
удовлетворяет следующим требов
а) таблицы должны быть приведены ко 2НФ;
б) не должно быть транзитивных зависимостей между не ключевыми полями;
Данные таблицы уже приведены к третьей нормальной форме, так как они соответствуют второй нормальной форме и в них отсутствуют транзитивные зависимости между ключевыми полями, т.о. все требования выполнены, и процесс нормализации на этом заканчивается.
Диаграмма «сущность-связь» имеет следующий вид:
Рисунок 3 – Диаграмма «сущность-связь»
2.5 Физическая организация данных
Таблица 1 – «autors»
Поле |
Тип |
Ограничение целостности |
Комментарии |
id |
int |
PRIMARY_KEY, AUTO_INCREMENT |
Первичный ключ, счетчик |
name |
varchar(100) |
NOT NULL |
Имя автора |
url |
varchar(255) |
NOT NULL |
Сайт автора |
login |
varchar(35) |
Логин входа | |
pass |
char(32) |
Пароль | |
permission |
tinyint(1) |
NOT NULL |
Права |
Таблица 2 – «category»
Поле |
Тип |
Ограничение целостности |
Комментарии |
id |
int |
PRIMARY_KEY, AUTO_INCREMENT |
Первичный ключ, счетчик |
parent |
smallint(6) |
NOT NULL, DEFAULT 0 |
Родитель |
title |
varchar(100) |
NOT NULL |
Название |
Таблица 3 – «licence»
Поле |
Тип |
Ограничение целостности |
Комментарии |
id |
int |
PRIMARY_KEY, AUTO_INCREMENT |
Первичный ключ, счетчик |
title |
varchar(100) |
NOT NULL |
Название |
description |
text |
NOT NULL |
Описание |
Таблица 4 – «os»
Поле |
Тип |
Ограничение целостности |
Комментарии |
id |
int |
PRIMARY_KEY, AUTO_INCREMENT |
Первичный ключ, счетчик |
title |
varchar(100) |
NOT NULL |
Название |
global_parent |
tinyint(1) |
NOT NULL |
Ссылка на родитель |
Таблица 5 – «programs»
Поле |
Тип |
Ограничение целостности |
Комментарии |
id |
int |
PRIMARY_KEY, AUTO_INCREMENT |
Первичный ключ, счетчик |
title |
varchar(100) |
NOT NULL |
Название |
id_autor |
smallint(6) |
FOREIGN KEY |
Связь с полем «id» таблицы «autors» |
id_licence |
tinyint(1) |
FOREIGN KEY |
Связь с полем «id» таблицы «licence» |
id_category |
smallint(6) |
FOREIGN KEY |
Связь с полем «id» таблицы «category» |
language |
set('ru','en') |
NOT NULL |
Язык |
size |
float(10,2) |
NOT NULL |
Размер |
price |
float(10,2) |
NOT NULL |
Цена |
version |
varchar(15) |
NOT NULL |
Версия |
download_url |
varchar(255) |
NOT NULL |
Ссылка |
about |
text |
NOT NULL |
Описание |
time_update |
int(11) |
NOT NULL |
Время обновления |
Таблица 6 – «p_os»
Поле |
Тип |
Ограничение целостности |
Комментарии |
p_id |
int(11) |
FOREIGN KEY |
Связь с полем «id» таблицы «programs» |
o_id |
tinyint(2) |
FOREIGN KEY |
Связь с полем «id» таблицы «os» |
Таблица 7 – «screenshots»
Поле |
Тип |
Ограничение целостности |
Комментарии |
id |
int(11) |
PRIMARY_KEY, AUTO_INCREMENT |
|
p_id |
int(11) |
FOREIGN KEY |
Связь с полем «id» таблицы «programs» |
title |
varchar(100) |
NOT NULL |
Название |
screenshot |
longblob |
Двоичные данные |
Данные упоминаются в таблице в том порядке, в котором они вводятся пользователем. Это так называемый, физический порядок следования записей. Однако, часто требуется представить данные в другом, отличном от физического, порядке. Например, может потребоваться просмотреть данные об авторах книг, упорядоченные по алфавиту. Кроме того, часто необходимо найти в большом объеме информации запись, удовлетворяющую определенному критерию. Простой перебор записей при поиске в большой таблице может потребовать достаточно много времени и поэтому будет неэффективным. Решением этих задач является использование индексов.
Индекс - структура данных, которая помогает СУБД быстрее обнаружить отдельные записи в файле и сократить время выполнения запросов пользователей
Структура индекса связана с определенным ключом поиска и содержит записи, состоящие из ключевого значения и адреса логической записи в файле, содержащей это ключевое значение. Значения в индексном файле упорядочены по полю индексирования, которое обычно строится на базе одного атрибута
Обычно чем больше индексов, тем больше производительность запросов к базе данных. Однако при излишнем увеличении количества индексов падает производительность операций изменения данных (вставка/изменение/удаление), увеличивается размер БД, поэтому к добавлению индексов следует относиться осторожно.
В системном анализе предметной области были рассмотрены цели и задачи выполнение которых должна обеспечивать система. В соответствии с этими задачами, в качестве индексов выберем следующие поля:
`id`, в таблице `autors`
`id`, в таблице `category`
`parent`, в таблице `category`
`id`, в таблице `licence`
`id`, в таблице `os`
`id`, в таблице `programs`
`id`, в таблице screenshots`
2.6 Определение набора учетных записей пользователей
Так как мы разрабатываем клиентское приложение для интернета и с использованием MySQL, то более рациональный подход разграничения прав на интерфейс приложения будет основан на логике приложения. Так как по своей сути веб приложение является единственной запущенной копией клиента, то нужно создать на сервере базы данных пользователя с полными правами на данную базу.
Регулирование полномочий на интерфейс и администраторские функции будет основано на авторизации администраторов и редакторов по средствам ввода своего логина и пароля в самом клиентском приложении. Для этих целей в сущность "Авторы" были добавлены дополнительные поля, содержащие логин и пароль автора и поле-флаг наличия полных администраторских прав на приложение. Права администраторов и редакторов написаны в разделе системного анализа предметной области.
Пользователи, не проходящие проверку на наличие прав на администраторские функции, имеют возможность использования всего интерфейса приложения в режиме «Только для чтения».
3 Разработка клиентской части информационной системы
3.1 Организация взаимодействия клиентской и серверной частей приложения
Взаимодействие между клиентской и серверной частью данного программного комплекса происходить через расширение языка PHP, а именно через библиотеку php_mysql.dll. Данная библиотека обладает всеми необходимыми функциями для работы с выбранной СУБД.
В данное время данная библиотека считается устаревшей и для работы с СУБД MySQL применяется более совершенная реализация php_mysqli.dll, основными преимуществами которой можно выделить объектно-ориентированный подход работы с СУБД.
Библиотека php_mysql.dll обладает следующими необходимыми в работе функциями:
Подключение к БД выполняется следующим образом:
mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_base);
, где $db_host – адрес сервера СУБД, $db_user – логин входа в СУБД, $db_pass – пароль, $db_base – выбранная БД.
После данной процедуры можно работать с сервером БД с помощью функции mysql_query().
В интерфейсе пользователя отражен иерархический список категорий, при выборе любого элемента которого загружается список программ из этой категории. Также список программ отображается постранично, с элементами навигации по всем страницам.
Рисунок 4 – Главное окно приложения
Как видно из рисунка
4, все эти требования учтены, и
в интерфейс добавлены
Рисунок 5 – Навигация по программе
Также в клиентском приложении должен быть список последних обновлений и поступлений. Эта функция реализована посредством формата RSS, который представляет собой структурированный документ XML, используемый для лент новостей, записей в блогах и т.д.
Рисунок 6 – Просмотр RSS ленты браузером Opera
Поиск программного обеспечения можно вести как просмотра каталога, так и через специальное меня поиска, включающее различные параметры.
Рисунок 7 – Поиск информации
Кроме просмотра общего каталога программ в клиентском приложении реализован просмотр полной информации о программе.
Рисунок 8 – Информация о программе
В данном окне отображается информация о программе, автор, ссылка на сайт автора, ссылка на скачивание приложения, скриншоты приложения и ссылка для экспорта этой информации в файл формата PDF (Adobe Reader)
Рисунок 9 – Экспорт информация о программе
На этом описание интерфейса пользователя можно считать законченным.
3.3 Разработка интерфейса редактора
Разработка интерфейса
Администратора/Редактора
Рисунок 10 – Форма авторизации
После прохождения процедуры авторизации открывается окно со списком имеющихся прав и списком программ, логин которого использовался для авторизации.
Рисунок 11 – Форма авторизации
На рисунке 11 представлена форма с администраторскими правами, права редактора будут немного различаться, а именно будет отсутствовать пункт «Список разработчиков», пункт в списке программ «Все» и возможность добавлять программ от лица другого автора. В остальном интерфейсы идентичны и отдельного рассмотрения не подлежат.
Перейдя в пункт «Список разработчиков» можно увидеть полный список авторов программ и администраторов и возможность редактировать их информацию и права.
Рисунок 12 – Список разработчиков
Рисунок 12 – Форма редактирования разработчиков
Во вкладке «Сменить пароль» Имеется возможность сменить информацию о разработчике, от логина которого произведен вход.
Рисунок 13 – Форма редактирования информации
Во вкладке «Добавить программу» открывается форма добавления программы с полями выбора или написания характеристик, а также прикрепления изображений.
Информация о работе ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ КАТАЛОГА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ