ВВЕДЕНИЕ
Цельюкурсового проектирования является развитие навыков работы по проектированиюинформационных систем и закрепление знаний, полученных за время изучения дисциплины«Организация баз данных и баз знаний».
Курсовойпроект предусматривает создание многотабличной базы данных и набора функций ипроцедур, обеспечивающих интерфейс пользователя.
Выполнениекурсового проекта предусматривает:
— составление схемы концептуальной модели данных,
— разработку структуры реляционной базы данных,
— разработку интерфейса пользователя,
— программирование задачи,
— составление контрольного примера,
— оформление пояснительной записки.
Заданиена курсовое проектирование выдается в начале 8 семестра. Вариант заданиявыбирается по номеру студента и согласовывается с руководителем. Завершениекурсового проектирование и его защита предусмотрена на 11-12 неделях.
1 АНАЛИЗПРЕДМЕТНОЙ ОБЛАСТИ
Проведем полныйанализ предметной области «Спортивная программа». Эта область может бытьописана следующими основными объектами и действиями, представляющими интерес с точкизрения различных групп пользователей.
Выделим этиобъекты:
— Спортсмен
— Команда
— Тренер
— Награда
— Вид спорта
— Соревнование
— Телепередача
— Сюжеты
— Гость программы
Эти объекты имеютследующие информационные характеристики (атрибуты):
- Объект «СПОРТСМЕН»(Ид_Спортсмен, ФИО, Страна, Адрес, Пол, СпортРазряд);
- Объект «КОМАНДА»(Ид_Команда, Название, Страна);
- Объект«ТРЕНЕР» (Ид_Тренер, ФИО, Адрес, Категория);
- Объект «НАГРАДА»(Ид_Награда, ВидНаграды, ДатаВручения, Примечание);
- Объект «ВИД_СПОРТА»(Ид_Спорта, Название, Описание);
- Объект «СОРЕВНОВАНИЕ»(Ид_Соревнования, Название, Описание, МасштабСоревнования, ДатаПроведения,МестоПроведения, ВремяПроведения, Победитель);
- Объект«ТЕЛЕПЕРЕДАЧА» (Ид_передачи, ДатаЭфира, Ведущий);
- Объект«СЮЖЕТЫ» (Ид_сюжета, Тематика, Автор, ДатаСоздания, Длительность);
- Объект«ГОСТЬ_ПРОГРАММЫ» (Ид_гостя, ФИО, Адрес, РодЗанятий, КраткаяБиография)
ЭТАПЫПРОЕКТИРОВАНИЯ БД
Первичныеключи
Первичный ключ – это атрибут или группаатрибутов, которые однозначно идентифицируют екземпляр объекта.
Обозначимпервичные ключи для перечисленнях ранее объектов:
— Спортсмен — Ид_Спортсмен*;
— Тренер — Ид_Тренер*;
— Команда — Ид_Команда*;
— Награда — Ид_Награда*;
— Вид спорта — Ид_Спорта*;
— Соревнование — Ид_Соревнования*;
— Телепередача –Ид_Передачи*;
— Сюжеты –Ид_сюжета*;
— Гость программы– Ид_гостя*.
Анализаномалий
Избыточность данных ведетне только к потере места в памяти, но и может нарушить целостность данных.Существует три типа аномалий:
1. Аномалия обновления– это противоречивость данных, вызванная их избыточностью и частичнымобновлением.
2. Аномалия удаления– это непреднамеренная потеря данных, вызванная удалением временных данных.
3. Аномалия ввода– это невозможность ввести одни данные из-за отсутствия других.
Чтобы избежать этиханомалий, необходимо выполнить нормализацию отношений.
Нормализацияотношений
Впроцессенормализации атрибуты группируются в таблицы, представляющие объекты и ихвзаимосвязи. Теориянормализации основана на том, что определенный набор таблиц обладает лучшимисвойствами при включении, обновлении, и удалении данных, чем все другие наборытаблиц, с помощью которых могут быть представлены те же самые данные.
Чтобы избежать аномалий,разобьем таблицу «СОРЕВНОВАНИЕ» на три: «СОРЕВНОВАНИЕ», «КомандаСоревнование», «ВидСоревнования».
Руководствуясь таким жепринципом, выделим таблицу «НаградаСпортсмена», «СюжетПередача» и«ГостьПередача».
Кроме того,добавим еще две таблицы: «User» – для хранения информации о пользователяхи их паролях; и«Log» – хранит информацию о действиях,выполненных пользователями в системе.
Описаниеконцептуальной модели данных
Концептуальнаямодель данных (КМД)–это модель используемой на предприятии информации, которая не зависит от любыхфизических аспектов представления этой информации (тип СУБД, используемые ЯП,тип вычислительной платформы).
На этапесоздания КМД определяются типы сущностей, типы связейЮ атрибутов, домены;создается модель «Сущность-связь» (Entity-Relationship), котораяв основе сожержит следующие базове понятия:
Сущность – с ее помощью моделируетсякласс однотипних объектов. Имеет имя, уникальное в пределах модели.Предполагается, что существует много экземпляров данной сущности.
Атрибут – характеристика,определяющая свойства сущности.
Связь – определяет, как сущностивзаимодействуют друг с другом. Может быть установлена между сущностью и другимисущностями, или между сущностью и ей же самой (рекурсивная связь).
Видысвязей:
1. «1:1»(один к одному) – определяет такой вид связи между сущностями А и В, корда каждому экземплярусущности А соответствует один и только один экземпляр сущности В, и, на оборот.
2. «1: М» (один ко многим) – экземпляру сущности Асоответствует 0, 1 или несколько экземпляров сущности В, и, наоборот.
3. «М: М» (многиеко многим) – одномуэкземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В,и, наоборот.
Между двумясущностями может быть установлено любое количество связей с разными смысловыминагрузками.
Любая связьможет быть обязательной, если в данной связи должен участвовать каждыйэкземпляр сущности, или необязательной. Связь может быть обязательной с однойстороны и необязательной с другой.
КМД дляпредметной области «Спортивная программа» показана на рис.1
/>
Рис.1 – КМДдля предметной области «Спортивная программа»
Двойнаястрелка означает «многие», одинарная стрелка означает «один» во взаимосвязимежду объектами.
Ключевыеатрибуты обозначены *.
Описаниереляционной модели данных
Реляционнаямодель данных (РМД) представляет БД в виде множества взаимосвязанных отношений,в том числе и иерархических.
Одно отношение вкаждой связи выступает как родительское, а другое — как подчиненное.
Для поддержаниясвязи в отношении должны быть включены специальные атрибуты. В родительскомотношении это первичный ключ, а в подчиненном – набор атрибутов,соответствующий внешнему ключу.
Правилаперехода от КМД к РМД:
1. Каждыйобъект с атрибутами преобразуется в таблицу и ключевой атрибут становитсяключом таблицы.
2. Дляотображения связи «1:1» в одну из таблиц включают первичный ключ второйтаблицы.
3. Связь«1: М» отображается так: в таблицу, находящуюся сос тороны многих, добавляютпервичный ключ таблицы, находящейся со стороны одного.
4. Дляотображения связи «М: М» создается дополнительная таблица, в которую включаютпервичный ключ и первой и второй таблицы, а также дополнительные атрибуты.
РМД дляпредметной области «Спортивная программа» строится на основе модели,изображенной на рис.2, где учтены правила пре хода и нормализация отношений.
/>
Рис. 2 –Модель, на основе которой строится РМД для предметной области «Спортивнаяпрограмма»
РМДпредставляет информацию в виде таблиц.
Строкатаблицы называется картежом.
Не всякаятаблица является отношением. Для этого должны выполняться условия:
— все записидолжны иметь одинаковую структуру;
— названиястолбцов должны быть уникальными;
— значения водном столбце должны принадлежать одному домену.
Физически впамяти компьютера хранится схема БД, изображенная в приложении 1.
Типы данныхдля полей всех таблиц:
2. СПОСОБЫРЕАЛИЗАЦИИ ЗАПРОСОВ И ОТЧЕТОВ
Посредствомязыка SQL необходимо реализовать 10 группзапросов:
1. Выбориз нескольких таблиц с сортировкой.
2. Заданиеусловия отбора с использованием предиката LIKE.
3. Заданиеусловия отбора с использованием предиката BETEWEEN.
4. Агрегатнаяфункция без группировки.
5. Агрегатнаяфункция с группировкой.
6. Использованиепредиката ALL или ANY.
7. Коррелированныйподзапрос.
8. Запросна отрицание. Запрос реализовать в трех вариантах: с использованием LEFT JOIN, предикатаIN и предиката EXISTS.
9. Операцияобъединения UNION с включением комментария в каждую строку.
10. Обновлениеданных, условие отбора формируется с использованием подзапроса из другойтаблицы.
Реализациязапросов группы 1)
Запрос1. Спортсмены являющиесягражданами заданной страны
SELECTID_Sportsmen, FIO
FROMSportsmen
WHERE((Sportsmen.Strana)=[Введите страну]);
Запрос2. Сколькосеребряных медалей получили команды
SELECTcount(*) AS [количество серебра]
FROMKomanda
WHEREID_Komanda in (Select ID_Komanda from Nagrada where VidNagradi='Медальсеребряная');
Реализациязапросов группы 2)
/>Запрос 3. Вывести список спортсменов, имякоторых начинается с буквы «К»
SELECT FIO
FROM Sportsmen
WHERE FIO LIKE 'K*';
Запрос4. Вывестисписок команд из Украины
SELECT Komanda.Nazvanie, Komanda.Strana, Komanda.Gorod, Komanda.ID_Sport
FROM Komanda
WHERE (((Komanda.Strana) Like 'У*'));
Реализациязапросов группы 3)
Запрос 5.Вывести списокволейбольных команд
SELECTKomanda.Nazvanie, Komanda.Strana, Komanda.Gorod
FROMKomanda
WHERE(((Komanda.ID_Sport) Between 3 And 3));
Запрос 6. Вывести список сюжетов со 2го по 5й
SELECTID_Sujet, Tema, Avtor
FROMSujet
WHERE(((ID_sujet) Between 2 And 5));
Реализациязапросов группы 4)
Запрос 7.Какиесоревнования не проводились в заданный день
SELECTNazvanie
FROMVidSporta
WHEREID_Sport in
(SelectID_Sport
fromSorevnovania
wheremonth([DataProveden])month(Date));
Запрос8. Спортсмены изкоманды по заданному виду спорта
SELECT Komanda.Nazvanie AS Komanda, Sportsmen.FIO AS Sportsmen
FROM(VidSporta INNER JOIN Komanda ON VidSporta.ID_Sport=Komanda.ID_Sport) INNERJOIN Sportsmen ON Komanda.ID_Komanda=Sportsmen.ID_Komanda
WHERE(((VidSporta.Nazvanie)=[Введитевидспорта]));
Реализациязапросов группы 5)
Запрос 9.Вывести количествоигроков, занимающихся каждым видом спорта
SELECTVidSporta.ID_Sport, VidSporta.Nazvanie, Count(Sportsmen.ID_Sportsmen) AS[Kol_vo igrokov]
FROMVidSporta INNER JOIN Sportsmen ON VidSporta.ID_Sport=Sportsmen.ID_Sport
GROUPBY VidSporta.ID_Sport, VidSporta.Nazvanie;
Запрос10. Сколькоспортсменов тренирует каждый тренер
SELECTTrener.ID_Trener, Trener.FIO, Count(Sportsmen.ID_Sportsmen) AS [Kol_vosportsmenov]
FROMTrener INNER JOIN Sportsmen ON Trener.ID_Trener=Sportsmen.ID_Trener
GROUPBY Trener.ID_Trener, Trener.FIO;
Реализациязапросов группы 6)
Запрос 11.Вывести таблицу«Соревнования», сортируя по полю «Дата проведения » по возрастанию
SELECTALL*
FROMSorevnovania
ORDERBY DataProveden;
Запрос12. Вывеститаблицу «Спортсмен-награда» с сортировкой по убыванию по полю «Ид_спортсмен»
SELECTALL *
FROMSportsNagrada
ORDERBY ID_Sportsmen DESC;
Реализациязапросов группы 7)
Запрос13. Количествозолотых медалей, выигранных командой
SELECTcount(*) AS [количество золотых медалей]
FROMKomanda
WHEREID_Komanda in (Select ID_Komanda from Nagrada where VidNagradi='Медальзолотая');
Запрос14. Спортсмены,которые получили введенную награду
SELECTFIO, Pol, SportRazr
FROMSportsmen
WHEREID_Komanda in
(SelectID_Komanda
fromKomanda
whereID_Komanda in
(SelectID_Komanda
fromNagrada
where(((Nagrada.VidNagradi)=[Введитевиднаграды])) ))
orID_Sportsmen in
(SelectID_Sportsmen
fromSportsNagrada
whereID_Nagrada in
(SelectID_Nagrada
fromNagrada
where(((Nagrada.VidNagradi)=[Введитевиднаграды])) ));
Реализациязапросов группы 8)
Запрос15. Количество кубков,выигранных командой
SELECTCount(*) AS[количество кубков]
FROMKomanda
WHERE(((Komanda.ID_Komanda) In (Select ID_Komanda from Nagrada where VidNagradi='Кубок')));
Запрос16. Спортсмены,которые выступают не за свою страну
SELECTSportsmen.ID_Sportsmen, Sportsmen.FIO, Sportsmen.Strana
FROMKomanda INNER JOIN Sportsmen ON Komanda.ID_Komanda=Sportsmen.ID_Komanda
WHERE(((Sportsmen.Strana)Komanda.Strana));
Реализациязапросов группы 10)
Запрос17. Датапроведения последнего соревнования заданного масштаба
SELECTMasshtabSorevn, DataProveden, MestoProveden
FROMSorevnovania
WHERE((MasshtabSorevn)=[Введите масштаб соревнования])
ORDERBY 2;
SELECTLast(Zapros11_1.DataProveden) AS [Последнее соревнование было]
FROMZapros11_1;
Запрос18. У какойкоманды больше всего наград
SELECTNagrada.ID_Komanda, Count(Nagrada.VidNagradi) AS [Count-VidNagradi]
FROMNagrada
GROUPBY Nagrada.ID_Komanda
ORDERBY 2;
SELECTLast(Zapros12_1.ID_Komanda) AS [Большевсегонаградукоманды№]
FROMZapros12_1;
На основе запросов из пунктов 5, 7 и 9 необходимо реализоватьотчеты.
Отчет 1. Награды команд
Вготовом виде:
Отчет 2.Составыкоманд
Вготовом виде:
Отчет 3.Какихспортсменов тренирует каждый тренер
3 ГРУППЫ ПОЛЬЗОВАТЕЛЕЙ
Сразработанной базой данных может работать 3 группы пользователей:
1.Администратор – разрешенывсе действия, в том числе ввод и редактирование таблиц.
2.Менеджер – можетработать со всеми данными, но не может добавлять записи в таблицы.
3.Пользователь – может только просматривать запроси и отчеты
Подробнеео группах пользователей и их правах можно узнать из диаграммы прецедентов вприложении 1.
4 ИНТЕРФЕЙСБАЗЫ ДАННЫХ
Интерфейсреализован в среде Microsoft Access.Программа имеет многооконный интерфейс. Для каждого окна реализована форма.
Первоначальнозагружается форма, которая запрашивает имя и пароль пользователя:
В БД естьтаблица, в которой хранятся группы пользователей и пароли для входа в систему:
После входа всистему загружается главная форма. Она связана с конкретными таблицами. Правапользователей разделены за счет видимости некоторых кнопок, выполняющих те илииные действия.
Болемподробно интерфейс программы для каждого пользователя рассмотрен в следующемразделе.
5 РУКОВОДСТВОПОЛЬЗОВАТЕЛЯ
Чтобывойти в систему в режиме администратора необходимо ввести имя «admin» и пароль «as», в режиме менеджера – «user1», «men», в режиме пользователя– «user2», «us».
Далеепри нажатии на кнопкупроверяется, правильные ли имя и пароль введены. Если имя и пароль введены верно, то определяется статус пользователя. Затемоткрывается главная форма.
6 ОПИСАНИЕКОНТРОЛЬНОГО ПРИМЕРА
Для проверкиправильности работы программы нужно внести данные в таблицы, а затем поочередновыполнить все запросы и все отчеты. Нужно проверить, что результаты запросов иотчетов соответствуют введенным данным.
Для таблицсозданы формы для удобства добавления нового элемента
7 СООБЩЕНИЯПРОГРАММЫ, ПРИЧИНЫ, ИХ ВЫЗЫВАЮЩИЕ, И РЕАКЦИЯ ПОЛЬЗОВАТЕЛЯ НА СООБЩЕНИЯ
Могутвозникать следующие сообщения системы: «Неверное имя!»
Причина –неверно указано имя пользователя, такого имени нет в таблице пользователей.Нужно внести правильное имя.
«Неверныйпароль!»
Причина – имяпользователя указано правильно, но неверно указан пароль пользователя. Нужновнести правильный пароль.
СПИСОКЛИТЕРАТУРЫ
1. Методические указания к курсовомупроектированию по дисциплине “Организация баз данных и баз знаний” ля студентовспециальности 7.080403/ Сост. С.Л. Зиноватная. – Одесса; ОНПУ, 2007. – ХХ с.
2. Конспект лекций по дисциплине “Организация баз данных и баззнаний”.
3. Основы современных баз данных. – Кузнецов С.Д. — Центринформационных технологий.