База данных спортивных сооружений города
БАЛТИЙСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
им. Д. Ф. УСТИНОВА
КУРСОВАЯ РАБОТА
по учебной дисциплине "Базы данных"
на тему "База данных спортивных сооружений города"
студентки Лютоевой Т.И.
группы СИ-387
САНКТ-ПЕТЕРБУРГ
2012 г.
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
на выполнение курсовой работы
по учебной дисциплине “Базы данных”
студентки Лютоевой Т.И. гр. СИ-387
Тема проекта: «База данных спортивных сооружений города»
Исходные данные: предметная область информационной системы, список запросов к информационной системе
Содержание работы (перечень решаемых задач или этапов с указанием сроков их выполнения):
- Анализ предметной области;
- Составление списков необходимых атрибутов;
- Построение набора необходимых отношений и их нормализация;
- Построение схемы (рисунок схемы базы данных);
- Проектирование запросов в базе данных.
Проектная документация (отчетность):
Пояснительная записка.
Плакат: техническим заданием не предусмотрены.
Срок представления проекта: «___»____________ 20___г.
Руководитель
проекта: _____________________
(подпись, дата)
СОДЕРЖАНИЕ
Введение……………………………………………………….
Виды запросов в информационной системе .…………………………....…..5
Основная часть………………………….………….…………….…….
Проектирование БД ……………………….………………….…..…….. …..6
ER-схема, сущности и их атрибуты.….……………...……………….……7-
Проверка таблиц БД на соответствие 3НФ ……………………....……..9-11
Структурная схема базы данных ………..………….…………….……….12
Разработка запросов в БД на языке SQL и их реализация……….……13-21
Заключение ………………………………………..……….……….…..….
Список использованных источников ……………………...…….……..…23
ВВЕДЕНИЕ
Базы данных - совокупность данных,
организованная по определенным правилам,
предусматривающая общие
СУБД – система управления базами данных – совокупность программ, предназначенных для управления БД и возможности получения пользователями необходимой информации из базы. В задачи СУБД входят следующие задачи:
- Формирование и поддержание БД
- Обработка информации
- Прием запросов
- Предоставление информации пользователям
- Обеспечение целостности и реорганизации ценностей БД
- Организация совместной работы пользователей
На сегодняшний день существует множество различных систем управления базами данных. Они все используют разные средства и функции, но преимущественно у всех СУБД в основе лежат одинаковые понятия.
Microsoft Access –реляционная СУБД, в которой предусмотрены все необходимые средства для определения и обработки данных, а также управления ими при работе с большим объемом информации. Большим плюсом является то, что Access может легко импортировать диаграммы и графики из Excel, Word может использовать БД Access в качестве источника данных при создании писем. Также можно использовать возможности Excel для финансовых и любых количественных расчетов. Access - функционально полная система, имеющая мощные средства для работы в этой программе. Ее преимуществом перед другими является простота, наличие всех средств для успешной обработки и управления БД.
Виды запросов в информационной системе:
- Получить перечень спортивных сооружений указанного типа в целом или удовлетворяющих заданным характеристикам (например, стадионы, вмещающие не менее указанного числа зрителей).
- Получить список спортсменов, занимающихся указанным видом спорта в целом либо не ниже определенного разряда.
- Получить список спортсменов, тренирующихся у некого тренера в целом либо не ниже определенного разряда.
- Получить список спортсменов, занимающихся более чем одним видом спорта.
- Получить список тренеров указанного спортсмена.
- Получить перечень соревнований, проведенных в течение заданного периода времени в целом либо указанным организатором.
- Получить список призеров указанного соревнования.
- Получить перечень соревнований, проведенных в указанном спортивном сооружении в целом либо по определенному виду спорта.
- Получить перечень спортивных клубов и число спортсменов этих клубов, участвовавших в спортивных соревнованиях в течение заданного интервала времени.
- Получить список тренеров по определенному виду спорта.
- Получить список спортсменов, не участвовавших ни в каких соревнованиях в течение определенного периода времени.
- Получить список организаторов соревнований и проведенные ими соревнования в течение определенного периода времени.
- Получить перечень спортивных сооружений и даты проведения на них соревнований в течение определенного периода времени.
ОСНОВНАЯ ЧАСТЬ
ПРОЕКТИРОВАНИЕ БД
На первом этапе проектирования базы данных необходимо определить цель создания базы данных, основные ее функции и информацию, которую она должна содержать.
Схема типа «сущность-связь» ER Entity (сущность) Relationship (связь) Сущность – это класс однотипных объектов, информация о которых должна быть учтена в модели.
Семантическое
моделирование представляет собой
моделирование структуры
После анализа предметной области можно выделить следующие сущности и их ключевые атрибуты, таблица 1.
Таблица 1. Выявленные сущности и их ключевые атрибуты
Сущности |
Ключевые атрибуты |
Спортсмены |
ид_Спортсмена |
СпортКлубы |
ид_СпортКлуба |
Соревнования |
ид_Соревнования |
ССооружения |
ид_СС |
ВидыСпорта |
ид_ВидаСпорта |
Организаторы |
ид_Организатора |
Тренеры |
ид_Тренера |
ТипСС |
ид_ТипСС |
Бассейн |
ид_Бассейна |
Корт |
ид_Корта |
Стадион |
ид_Стадиона |
ER – СХЕМА:
Рисунок 1. ER-Схема БД
Далее к ER – схеме прилагаются описания каждой сущности со всеми её атрибутами [1] (в верхней строке расположено название сущности, в остальных – её атрибуты):
СпортКлубы |
ид_СпортКлуба (КлючАтр.) |
Название |
ВидыСпорта |
ид_ВидСпорта (КлючАтр.) |
ВидСпорта |
Спортсмены |
ид_Спортсмена (КлючАтр.) |
ФИО |
ДатаРождения |
ид_ВидСпорта |
ид_Тренера |
ид_СпортКлуба |
Разряд |
Тренеры |
ид_Тренера (КлючАтр.) |
ФИО |
ДатаРождения |
ид_ВидСпорта |
Разряд |
Соревнования |
ид_Соревнования (КлючАтр.) |
Название |
ид_ВидСпорта |
ДатаПроведения |
ид_СС |
Призер |
ид_Участника |
ид_Организатора |
ССооружения |
ид_СС (КлючАтр.) |
Название |
Адрес |
ид_ТипСС |
ид_ТипаТипа |
ТипСС |
ид_ТипСС (КлючАтр.) |
ТипСС |
Бассейн |
ид_Бассейна (КлючАтр.) |
ТипСС |
КолДорожек |
Корт |
ид_Корта (КлючАтр.) |
ТипСС |
ТипПокрытия |
Стадион |
ид_Стадиона (КлючАтр.) |
ТипСС |
Вместимость |
Организаторы |
ид_Организатора (КлючАтр.) |
Организатор |
ПРОВЕРКА ТАБЛИЦ БД НА СООТВЕТСТВИЕ
3 НОРМАЛЬНОЙ ФОРМЕ
Первая нормальная форма (1НФ) – это обычное отношение. Согласно нашему определению отношений, любое отношение автоматически уже находится в 1НФ. Напомним кратко свойства отношений (это и будут свойства 1НФ):
- В отношении нет одинаковых кортежей;
- Кортежи не упорядочены;
- Атрибуты не упорядочены и различаются по наименованию;
- Все значения атрибутов атомарны.
Отношение находится во второй нормальной форме (2НФ) тогда и только тогда, когда отношение находится в 1НФ и нет неключевых атрибутов, зависящих от части сложного ключа. (Неключевой атрибут – это атрибут, не входящий в состав никакого потенциального ключа).
Если потенциальный
ключ отношения является простым, то
отношение автоматически
Отношение находится в третьей нормальной форме (3НФ) тогда и только тогда, когда отношение находится в 2НФ и все неключевые атрибуты взаимно независимы.
СпортКлубы (ид_СпортКлуба, Название)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
ВидыСпорта (ид_ВидСпорта, ВидСпорта)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
Спортсмены (ид_Спортсмена, ФИО, ДатаРождения, ид_ВидСпорта, ид_Тренера, ид_СпортКлуба, Разряд)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
Тренеры (ид_Тренера, ФИО, ДатаРождения, ид_ВидСпорта, Разряд)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
Соревнования (ид_Соревнования, Название, ид_ВидСпорта, ДатаПроведения, ид_СС, Призер, ид_Участника, ид_Организатора)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
ССооружения (ид_СС, Название, Адрес, ид_ТипСС, ид_ТипаТипа)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
ТипСС (ид_ТипСС, ТипСС)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
Бассейн (ид_Бассейна, ТипСС, КолДорожек)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
Корт (ид_Корта, ТипСС, ТипПокрытия)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
Стадион (ид_Стадиона, ТипСС, Вместимость)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
Организаторы (ид_Организатора, Организатор)
1НФ – все значения атомарные;
2НФ – все не ключевые
атрибуты функционально
3НФ – отсутствуют транзитивные зависимости.
Все таблицы находятся в 3НФ, следовательно БД находится в 3НФ. [1]
Рисунок 2. Структурная схема базы данных
РАЗРАБОТКА ЗАПРОСОВ В БД НА ЯЗЫКЕ SQL
Достаточно часто необходимо на основе данных, хранящихся в таблицах, проводить вычисления или просматривать данные из нескольких таблиц. Выбрать нужные данные можно с помощью запросов.
При выполнении созданного запроса-выборки (который отбирает информацию из таблиц и других запросов БД), в отличие от запроса-действия, при выполнении которого вставляются, обновляются или удаляются данные, создает набор записей, содержащий выбранные данные. В большинстве случаев можно работать с этим набором данных точно так же, как с таблицей: можно просматривать и выбирать информацию, печатать и даже обновлять данные. Однако в отличие от реальной таблицы, этот набор записей физически не существует в БД. Access создает набор записей из данных таблиц и других запросов только во время выполнения определенного запроса. Если изменять данные в наборе записей, то Access вносит соответствующие изменения в таблицы, на базе которых построен запрос.
Запросы являются наилучшим способом выделения именно тех данных, которые необходимы для решения определенной задачи. Удобно использовать запросы при создании форм и отчетов.
Любой запрос в Microsoft Access реализуется с помощью языка SQL. Хотя большинство запросов можно создать, пользуясь графическими возможностями QBE (запроса по образцу), но и в этом случае каждый созданный запрос будет храниться в виде инструкции SQL.
РЕАЛИЗАЦИЯ ЗАПРОСОВ В БД НА ЯЗЫКЕ SQL
Ниже представлена реализация запросов в виде словесного описания, листинга и иллюстрации результата запроса. Всего запросов 13. Практически все словесные описания предполагают несколько вариантов каждого из 13 запросов, поэтому, в наименовании запроса, после его номера идет словесное описание варианта:
- Получить перечень спортивных сооружений указанного типа в целом или удовлетворяющих заданным характеристикам (например, стадионы, вмещающие не менее указанного числа зрителей).
Запрос1_Бассейны по Кол-ву дорожек
Листинг 1.1:
SELECT ССооружения.Название, ТипСС.ТипСС, Бассейн.КолДорожек
FROM (ССооружения
INNER JOIN ТипСС ON ССооружения.ид_ТипСС=ТипСС.ид_
GROUP BY ССооружения.Название, ТипСС.ТипСС, Бассейн.КолДорожек
HAVING Бассейн.КолДорожек=[Введите_
ORDER BY ССооружения.Название;
Результат:
Запрос1_ССооруженияУказТипа
Листинг 1.2:
SELECT ССооружения.Название, ТипСС.ТипСС
FROM ССооружения
INNER JOIN ТипСС ON ССооружения.ид_ТипСС=ТипСС.ид_
GROUP BY ССооружения.Название, ТипСС.ТипСС
HAVING ТипСС.ТипСС=[Введите тип СпортСооружения:]
ORDER BY ССооружения.Название;
Результат:
- Получить список спортсменов, занимающихся указанным видом спорта в целом либо не выше определенного разряда.
Запрос2_ВидСпортаСпортсмены
Листинг 2.1:
SELECT Спортсмены.ФИО, ВидыСпорта.ВидСпорта
FROM Спортсмены
INNER JOIN ВидыСпорта ON Спортсмены.ид_ВидСпорта=
GROUP BY Спортсмены.ФИО, ВидыСпорта.ВидСпорта
HAVING ВидыСпорта.ВидСпорта=[
ORDER BY Спортсмены.ФИО;
Результат:
Запрос2_
Листинг 2.2:
SELECT Спортсмены.ФИО, ВидыСпорта.ВидСпорта, Спортсмены.Разряд
FROM Спортсмены
INNER JOIN ВидыСпорта ON Спортсмены.ид_ВидСпорта=
WHERE (ВидыСпорта.ВидСпорта=[
Результат:
- Получить список спортсменов, тренирующихся у некого тренера в целом либо не ниже определенного разряда.
Запрос3_СпортсменыУказТренера
Листинг 3.1:
SELECT Спортсмены.ФИО, Тренеры.ФИО
FROM Спортсмены INNER JOIN Тренеры ON Спортсмены.ид_Тренера=Тренеры.
WHERE Тренеры.ФИО=[
Результат:
Запрос3_
Листинг 3.2:
SELECT Спортсмены.ФИО, Спортсмены.Разряд, Тренеры.ФИО
FROM Спортсмены INNER JOIN Тренеры
ON Спортсмены.ид_Тренера=Тренеры.
WHERE Тренеры.ФИО=[
Результат:
- Получить список спортсменов, занимающихся более чем одним видом спорта.
Запрос4_
Листинг 4.1:
SELECT Спортсмены.ФИО, count(ВидыСпорта.ВидСпорта)
FROM Спортсмены INNER JOIN ВидыСпорта
ON Спортсмены.ид_ВидСпорта=
GROUP BY Спортсмены.ФИО
HAVING count(*)>1;
- Получить список тренеров указанного спортсмена.
Запрос5_ТренерыСпортсмена
Листинг 5.1:
SELECT Спортсмены.ФИО, Тренеры.ФИО
FROM Тренеры INNER JOIN Спортсмены
ON Спортсмены.ид_Тренера=Тренеры.
WHERE Спортсмены.ФИО=[
Результат:
- Получить перечень соревнований, проведенных в течение заданног
о периода времени в целом либо указанным организатором.
Запрос6_СоревнованияПоВремени
Листинг 6.1:
SELECT Соревнования.Название, Соревнования.ДатаПроведения
FROM Соревнования
GROUP BY Соревнования.Название, Соревнования.ДатаПроведения
HAVING ДатаПроведения BETWEEN [ВведитеНачДату] AND [ВведитеКонДату];
Результат:
Запрос6_
Листинг 6.2:
SELECT Организаторы.Организатор, Соревнования.Название
FROM Организаторы INNER JOIN Соревнования
ON Организаторы.ид_Организатора=
WHERE Соревнования.ДатаПроведения BETWEEN [ВведитеНачДату] AND [ВведитеКонДату]
GROUP BY Организаторы.Организатор, Соревнования.Название
HAVING Организаторы.Организатор=[
Результат:
- Получить список призеров указанного соревнования.
Запрос7_ПризерыСоревнования
Листинг 7.1:
SELECT Соревнования.Название, Спортсмены.ФИО
FROM Соревнования INNER JOIN Спортсмены ON Соревнования.ид_Участника=
WHERE Соревнования.Призер="Да"
GROUP BY Соревнования.Название, Спортсмены.ФИО
HAVING Соревнования.Название=[
Результат:
- Получить перечень соревнований, проведенных в указанном спортивном сооружении в целом либо по определенному виду спорта.
Запрос8_1_
Листинг 8.1:
SELECT Соревнования.Название, ССооружения.Название
FROM Соревнования INNER JOIN ССооружения
ON Соревнования.ид_СС=
WHERE ССооружения.Название=[
GROUP BY Соревнования.Название, ССооружения.Название;
Результат:
Запрос8_
Листинг 8.2:
SELECT Соревнования.Название, ССооружения.Название, ВидыСпорта.ВидСпорта
FROM (Соревнования INNER JOIN ВидыСпорта
ON Соревнования.ид_ВидСпорта=
WHERE ВидыСпорта.ВидСпорта=[
GROUP BY Соревнования.Название, ССооружения.Название, ВидыСпорта.ВидСпорта;
Результат:
- Получить перечень спортивных клубов и число спортсменов этих клубов, участвовавших в спортивных соревнованиях в течение заданн
ого интервала времени.
Запрос9_
Листинг 9.1:
SELECT Спортклубы.Название, COUNT(Спортсмены.ФИО)
FROM (СпортКлубы INNER JOIN Спортсмены
ON СпортКлубы.ид_СпортКлуба=
WHERE Соревнования.ДатаПроведения BETWEEN [ВведитеНачПериода:] AND [ВведитеКонПериода:]
GROUP BY Спортклубы.Название;
Результат:
- Получить список тренеров по определенному виду спорта.
Запрос10_ТренерыПоВидуСпорта
Листинг 10.1:
SELECT Тренеры.ФИО, Тренеры.ДатаРождения
FROM Тренеры INNER JOIN ВидыСпорта
ON ВидыСпорта.ид_ВидСпорта=
WHERE ВидыСпорта.ВидСпорта=[
Результат:
- Получить список спортсменов, не участвовавших ни в каких соревнованиях в течени
е определенного периода времен и.
Запрос11_СпортсменыНеУчВСорев
Листинг 11.1:
SELECT Спортсмены.ФИО
FROM Спортсмены INNER JOIN Соревнования
ON Спортсмены.ид_Спортсмена=
WHERE Соревнования.ДатаПроведения NOT BETWEEN [ВведитеНачПериода:] AND [ВведитеКонПериода:]
GROUP BY Спортсмены.ФИО;
Результат:
- Получить список организаторов соревнований и проведенные ими соревнования в течение определенного периода времени.
Запрос12_ОгранизИКол-воСорев
Листинг 12.1:
SELECT DISTINCT Организаторы.Организатор, Соревнования.Название
FROM Организаторы INNER JOIN Соревнования
ON Организаторы.ид_Организатора=
WHERE Соревнования.ДатаПроведения BETWEEN [ВведитеНачДату] AND [ВведитеКонДату]
GROUP BY Организаторы.Организатор, Соревнования.Название;
Результат:
- Получить перечень спортивных сооружений и даты проведения на них соревнований в течение определенного период
а времени.
Запрос13_
Листинг 13.1:
SELECT ССооружения.Название, Соревнования.ДатаПроведения
FROM Соревнования INNER JOIN ССооружения
ON Соревнования.ид_СС=
WHERE Соревнования.ДатаПроведения BETWEEN [ВведитеНачДату] AND [ВведитеКонДату]
GROUP BY ССооружения.Название, Соревнования.ДатаПроведения;
Результат:
ЗАКЛЮЧЕНИЕ
В результате анализа предметной области был составлен список необходимых атрибутов, построен набор необходимых отношений, выполнено их приведение к третьей нормальной форме, а также, построена схема базы данных, спроектированы запросы на языке SQL и, после заполнения спроектированной базы данных проверочными данными, произведена проверка правильности их выполнения.
Техническое задание к курсовой работе по разработке базы данных для информационной системы торговой организации оформлено в соответствии с [ГОСТ 7.32-2001] и выполнено в полном объёме.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Конспект лекций по предмету "Базы данных", преподаватель Толмачев С. Г., БГТУ "Военмех" 2011 г.
- ГОСТ 7.32-2001 Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления.

- База данных спорткомплекса
- База данных справочной системы аэропорта
- База данных "Страна"
- База данных страховая компания
- База данных “Студенты”
- База Данных «Театры»
- База данных "Телефонный справочник"
- База данных склада супермаркета
- База данных "Склад промышленных товаров"
- База данных «Склад промышленных товаров»
- База данных склад сотовых телефонов
- База данных со сведениями о пациентах и медицинских услугах в стационаре
- База данных сотрудника банка по заработной плате
- База данных социального центра