ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ КАТАЛОГА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Автор работы: Пользователь скрыл имя, 29 Мая 2013 в 17:59, курсовая работа

Описание работы

На курсовое проектирование была выбрана тема каталогизации программного обеспечения общего назначения.
Объектом разработки выступала база данных и клиентское приложения для работы с ней для работы со структурированным каталогом программ. Данный каталог предлагает всем желающим получить информацию об интересующих его программах, а разработчикам добавлять и изменять свои программы в каталоге.
При разработке серверной части проекта была использована СУБД MySQL, которая зарекомендовала себя как СУБД для веб-приложений. Клиентская часть проекта написана на скриптовом языке PHP с использованием процедурного подхода к программированию.

Файлы: 1 файл

Пояснительная записка.doc

— 1.06 Мб (Скачать файл)

 

 

 

 

 

ИД_программы

ИД_автора

ИД_категории

ИД_лицензии

Размер

Стоимость

Версия

Ссылка


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 обладает следующими необходимыми в работе функциями:

    1. mysql_connect - открывает соединение с MySQL-сервером
    2. mysql_select_db - выбирает БД MySQL
    3. mysql_query - отправляет MySQL-запрос серверу
    4. mysql_fetch_assoc - извлекает ряд результата как ассоциативный массив
    5. mysql_num_rows - получает количество рядов в результате
    6. mysql_insert_id - получает id, сгенерированный предыдущей операцией INSERT

 

Подключение к БД выполняется следующим образом:

 

mysql_connect($db_host, $db_user, $db_pass);

mysql_select_db($db_base);

 

, где $db_host – адрес сервера СУБД, $db_user – логин входа в СУБД, $db_pass – пароль, $db_base – выбранная БД.

 

После данной процедуры  можно работать с сервером БД с помощью функции mysql_query().

 

    1. Разработка интерфейса пользователя

 

В интерфейсе пользователя отражен иерархический список категорий, при выборе любого элемента которого загружается список программ из этой категории. Также список программ отображается постранично, с элементами навигации по всем страницам.

 

 

 

Рисунок 4 – Главное окно приложения

 

Как видно из рисунка 4, все эти требования учтены, и  в интерфейс добавлены некоторые  элементы расширения, такие как строка поиска и панель сортировки с выборкой по характеристикам программного обеспечения.

 

 

Рисунок 5 – Навигация по программе

 

Также в клиентском приложении должен быть список последних обновлений и поступлений. Эта функция реализована посредством формата RSS, который представляет собой структурированный документ XML, используемый для лент новостей, записей в блогах и т.д.

 

 

 

Рисунок 6 – Просмотр RSS ленты браузером Opera

 

Поиск программного обеспечения можно  вести как просмотра каталога, так и через специальное меня поиска, включающее различные параметры.

 

 

Рисунок 7 – Поиск информации

 

Кроме просмотра общего каталога программ в клиентском приложении реализован просмотр полной информации о программе.

 

 

 

Рисунок 8 – Информация о программе

 

В данном окне отображается информация о программе, автор, ссылка на сайт автора, ссылка на скачивание приложения, скриншоты приложения и ссылка для экспорта этой информации в файл формата PDF (Adobe Reader)

 

Рисунок 9 – Экспорт информация о программе

 

На этом описание интерфейса пользователя можно считать законченным.

3.3 Разработка интерфейса  редактора

 

 

Разработка интерфейса Администратора/Редактора начинается с разработки процедуры авторизации  по связке «логин-пароль».

 

 

Рисунок 10 – Форма авторизации

 

После прохождения процедуры  авторизации открывается окно со списком имеющихся прав и списком  программ, логин которого использовался для авторизации.

 

 

Рисунок 11 – Форма авторизации

 

На рисунке 11 представлена форма с администраторскими правами, права редактора будут немного  различаться, а именно будет отсутствовать  пункт «Список разработчиков», пункт в списке программ «Все» и возможность добавлять программ от лица другого автора. В остальном интерфейсы идентичны и отдельного рассмотрения не подлежат.

Перейдя в пункт «Список  разработчиков» можно увидеть полный список авторов программ и администраторов и возможность редактировать их информацию и права.

 

 

Рисунок 12 – Список разработчиков

 

 

 

Рисунок 12 – Форма редактирования разработчиков

 

Во вкладке «Сменить пароль» Имеется возможность сменить информацию о разработчике, от логина которого произведен вход.

 

 

Рисунок 13 – Форма редактирования информации

 

Во вкладке «Добавить  программу» открывается форма добавления программы с полями выбора или  написания характеристик, а также  прикрепления изображений.

Информация о работе ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ КАТАЛОГА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ