Базы данных "Выставочный комплекс" Visual FoxPro
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
Использование баз данных и
информационных систем становится неотъемлемой
составляющей деловой деятельности современного
человека и функционирования многих преуспевающих
организаций. В связи с этим большую актуальность
приобретает освоение принципов построения
и эффективного применения соответствующих
технологий и программных продуктов: систем
управления базами данных, систем автоматизации
проектирования, средств администрирования
и защиты баз данных и других.
СУБД реляционного типа являются наиболее
распространенным на всех классах ЭВМ,
а на ПК занимают доминирующее положение.
СУБД позволяет структурировать, систематизировать
и организовать данные для их компьютерного
хранения и обработки.
Реляционная
модель обладает следующими преимуществами:
- структурная независимость
- концептуальная простота
- простота проектирования,
реализации, управления и использования
- нерегламентированные запросы
- мощная система управления
базой данных.
В настоящее время невозможно представить
себе деятельность любого современного
предприятия без использования профессиональных
СУБД.
Постановка задачи
Разработать базу данных в СУБД Visual FoxPro для автоматизации процесса «Выставочный комплекс».
Выделить классы объектов предметной области " Выставочный комплекс" на основании следующего перечня реквизитов:
- Код выставочного комплекса;
- Наименование выставочного комплекса;
Код фирмы-организатора;
Наименование фирмы-организатора;
Код категории льготности билета;
Наименование категории льготности билета (не льготный, льготный пенсионера, льготный учащегося);
Цена экземпляра билета в конкретной категории;
Номер билета;
- Дата продажи;
- Регистрационный номер продажи;
- Скидка.
Количество выставочных комплексов – 4-6; количество фирм-организаторов– 4-6; количество проданных билетов – 30-40.
Разработать следующие основные запросы к БД:
– все билеты, бывшие на данной выставке,
– список всех выставок и проданных билетов,
– список выставок, которые организованы заданными фирмами и проданные билеты.
Разработать следующие дополнительные типы запросов к БД:
Простые запросы к отдельным таблицам (справочникам или процессу) – более
4 запросов.
Многотабличные и вычисляемые запросы более – 2-4 запросов.
В конкретном многотабличном запросе вычислить стоимость проданных в заданный выставочный комплекс билетов по заданной категории льготности.
Разработать форму отчетной сводки для вычисления стоимости проданных в пределах каждого выставочного комплекса билетов по конкретной категории льготности билета и по отчету в целом.
КОНЦЕПТУАЛЬНОЕ ПРОЕКТИРОВАНИЕ
1. 1. Перечень сущностей
Сущность — это абстрактный
объект определенного вида. Набор однородных
сущностей образует множество сущностей.
В курсовой
«Выставочный комплекс» главной таблицей
является «Билет». В соответствии с предметной
областью были созданы таблицы:
- «Фирмы-организаторы» - хранится информация о фирмах;
- «Выставочные комплексы» - хранится информация о выставках;
- «Льготы» - хранится информация о категориях льготности;
- «Билет» - объединяет информацию о фирмах, выставках и льготах, так же имеет свои данные.
1.2. Перечень атрибутов
Множеству сущностей отвечает набор атрибутов , являющихся свойствами сущностей множества.
В результате исследования предметной области были получены следующие атрибуты:
- Таблица «Фирмы-организаторы» содержит:
- Код_фирм – индивидуальный номер фирмы;
- Наим_фирм – наименование фирмы.
- Таблица «Выставочные комплексы» содержит:
- Код_выст – индивидуальный номер выставочного комплекса;
- Наим_выст – наименование выставочного комплекса.
- Таблица «Льготы» содержит:
- Код_льгот – индивидуальный номер категории льготности;
- Наим_льгот – наименование категории льготности;
- Скидка – процент, на который снижается цена билета.
- Таблица «Билет» содержит:
- Номп_билет – номер проданного билета;
- Регист_номп – индивидуальный номер билета;
- Код_фирм – номер фирмы;
- Код_выст – номер выставочного комплекса;
- Код_льгот – категория льготности;
- Дата – дата продажи билета;
- Цена – цена проданного билета с учетом выбранной категории льготности.
1.3. Диаграмма сущностей и связей
Связи — это соединения между двумя или большим числом множеств сущностей.
Диаграмма сущностей и связей или ER-диаграмма — это графическое представление множеств сущностей, их атрибутов и связей. Элементы названных видов описываются вершинами графа, и для задания принадлежности элемента к определенному виду используется специальная геометрическая фигура:
- Прямоугольник — для множеств сущностей;
- Овал — для атрибутов;
- Ромб — для связей.
Рис1. ER-модель "Выставочный комплекс"
В базе данных определены следующие отношения между таблицами:
|
|
|
|
|
|
|
|
|
|
|
|
Таб1. Отношения между таблицами
Логическое проектирование
1.Ключи и ER-моделирование
Ключ — атрибут или подмножество атрибутов, уникальным образом определяющие некоторую сущность в составе множества сущностей.
Никакие две сущности в пределах множества сущностей не могут обладать одинаковыми комбинациями значений атрибутов, составляющих ключ.
Использование ключей и индексов позволяет:
- однозначно идентифицировать записи;
- избегать дублирования значений в ключевых полях;
- выполнять сортировку таблиц;
- ускорять операции поиска в таблицах;
- устанавливать связи между отдельными таблицами БД.
Используемая нами система обозначений предусматривает, что атрибуты множеств сущностей, объявленные как ключевые, на ER-диаграмме выделяются подчеркиванием.
Первичные ключи:
- Таблица «Фирмы – организаторы» - код_фирмы;
- Таблица «Выставочные комплексы» - код_выставки;
- Таблица «Льготы» - код_льгот;
- Таблица «Билеты» - код_фирм + код_выставки + код_льготности.
Рис2. ER-диаграмма с обозначениями первичных ключей
ДАТАЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ БД
2.1. Составление структур базы данных
На основании ER-диаграммы составим структуры базы данных. Поскольку на диаграмме изображены четыре объектных множества, то, следовательно, в базу данных будет входить четыре реляционных таблицы. Перечислим и дадим следующие названия полям таблиц в соответствии с диаграммой:
- Поля таблицы «Firmy»:
Значение поля |
Имя поля |
Тип |
Длина |
Код фирмы |
Kod_firmy |
Character |
3 |
Наименование фирмы |
Naim_firmy |
Character |
20 |
- Поля таблицы «Vystavka»:
Значение поля |
Имя поля |
Тип |
Длина |
Код выставки |
Kod_vyst |
Character |
4 |
Наименование выставка |
Naim_vyst |
Character |
20 |
- Поля таблицы «Ligoty»:
Значение поля |
Имя поля |
Тип |
Длина |
Код льготности |
Kod_ligot |
Character |
2 |
Наименование льгот |
Naim_ligot |
Character |
25 |
Скидка |
Skidka |
Numeric |
3 |
- Поля таблицы «Bilet»:
Значение поля |
Имя поля |
Тип |
Длина |
Номер билета |
Nomp_bilet |
Character |
3 |
Регистрационный номер |
Regist_nomp |
Character |
5 |
Код фирмы |
Kod_firmy |
Character |
3 |
Код выставки |
Kod_vyst |
Character |
4 |
Код льготной категории |
Kod_ligot |
Character |
2 |
Дата продажи |
Data |
Date |
8 |
Цена с учетом скидки |
Cena_l |
Numeric |
3.2 |
РЕАЛИЗАЦИЯ БАЗЫ ДАННЫХ В СУБД VISUAL FOXPRO
3.1.Создание проекта и структур таблиц
База данных создается с помощью Диспетчера проектов Visual FoxPro. Сначала создадим новый проект. Назовем его «Vystavochnyj kompleks» и разместим в папке «Курсовая».
Рис3. Окно диспетчера проектов – Создание проекта
Все компоненты, которые мы сможем создать, можно связать с проектом, при этом они будут храниться в «родном» каталоге проекта.
Создаем базу данных. Щелкнув правой кнопкой мыши на подраздел «Базы данных» раздела «Данные». Необходимо ввести имя будущей базы данных «Vystavochnyj kompleks_kurs». Новую базу данных сохраняем в папке проекта.
Рис4. Окно диспетчера проектов – Создание БД
Добавляем новые компоненты в базу данных – таблицы. Создаем таблицу «Firmy» с ее структурой в соответствии с заданием. Структура таблицы представляет собой список полей и их характеристику: тип данных, размер, длину символьного представления (для типа Character) и др. В зоне «Caption» указываем заголовок столбца для каждого поля, который будет высвечиваться при отображении таблицы. Зона Input mask для указания маски отображения поля.
Таблица «Firmy»
Рис5. Структура таблицы "Firmy" - поле kod_firmy
Рис6. Структура таблицы "Firmy" - поле naim_firmy
Таблица «Vystavka»
Рис7. Структура таблицы "Vustavka" - поле kod_vyst
Рис8. Структура таблицы "Vystavka" - поле kod_vyst
Таблица «Ligoty»
Рис9. Структура таблицы "Ligoty" - поле kod_ligot
Рис10. Структура таблицы "Ligoty" - поле naim_ligot
Рис. 3.1. Структура таблицы "Ligoty" - поле skidka
Таблица «Bilet»
Рис12. Структура таблицы "Bilet" - поле nomp_bilet
Рис13. Структура таблицы "Bilet" - поле regist_nomp
Рис14. Структура таблицы "Bilet" - поле kod_firmy
Рис15. Структура таблицы "Bilet" - поле kod_vyst
Рис16. Структура таблицы "Bilet" - поле kod_ligot
Рис17. Структура таблицы "Bilet" - поле data
Рис18. Структура таблицы "Bilet" - поле cena_l
После завершения ввода можно просмотреть полученную структуру пустой таблицы, выбрав в меню команду Browse.
Рис19. Окно диспетчера проектов – Созданные таблицы
Рис20. Пустая структура таблицы «Firmy»
Заполнить таблицу можно при помощи команды Table в строке меню. В выплывающем меню выбираем Append New Record. Вводим информацию в таблицу.
Рис21. Заполненная структура таблицы «Firmy».
Рис22. Заполненная структура таблицы «Vystavka».
Рис23. Заполненная структура таблицы «Ligoty».
Рис24. Заполненная структура таблицы «Bilet».
2. Выполнение индексации, связей между таблицами и целостность данных
Среди требований, предъявляемых к СУБД, основное место занимает возможность быстрого поиска необходимой информации. Прекрасным средством, позволяющим решить эту проблему, является использование индексов.
Для создания индекса таблицы используется вкладка Indexes окна конструктора таблицы Table Designer. Вводит в поле Name имя индекса нашей таблицы, в Type выбираем тип индексирования. Значение индекса или индексного выражения вводится в поле Expression.
Рис25. Индексирование в таблице «Firmy»
В таблице «Firmy» тип индекса kod_fim_i – Primary, так как kod_firmy является первичным ключом.
Рис26. Индексирование в таблице «Vystavka»
Рис27. Индексирование в таблице «Ligoty»
Рис28. Индексирование в таблице «Bilet»
После индексирования таблиц создается отношение между нами. Такие таблицы называются связанными. Из двух связанных таблиц одна является главной, а другая — подчиненной. Главную таблицу называют родительской, а подчиненную — дочерней.
Рис29. Отображение связи между таблицами
Целостность данных является одним из самых важных требований, предъявляемых к базам данных.
Рис30. Диалоговое окно Referential Integrity Builder для определения условия целостности данных
Мы задаем опции так, что, если пользователь изменит, удалит или добавит данные в родительской таблице, то все аналогичные операции автоматически произойдут и в дочерней таблице. Если же пользователь попытается провести эти операции в дочерней таблице, то программа выдаст сообщение о том, что триггер (программа запуска отслеживаемых связей) нарушен. Все это происходит как раз за счет налаженных связей между родительскими и дочерними таблицами.
Запросы на языке QBE
1.Запросы из постановки задачи
Запрос 1
Все проданные билеты, на данную выставку.
SELECT Bilet.nomp_bilet, Bilet.kod_vyst;
FROM ;
"vystavochnyj kompleks_kurs!bilet";
WHERE Bilet.kod_vyst = ( "В001" )
Рис31. Запрос 1
Запрос 2
Список всех выставок, наименование и проданные билеты на них.
SELECT Bilet.nomp_bilet, Bilet.kod_vyst, Vystavka.naim_vyst;
FROM ;
"vystavochnyj kompleks_kurs!vystavka" ;
INNER JOIN "vystavochnyj kompleks_kurs!bilet" ;
ON Vystavka.kod_vyst = Bilet.kod_vyst
Рис32. Запрос 2
Рис32.1 Запрос 2
Запрос 3
Список выставок, которые организованы заданными фирмами и проданные билеты.
SELECT Bilet.nomp_bilet, Bilet.kod_firmy, Bilet.kod_vyst,;
Vystavka.naim_vyst;
FROM ;
"vystavochnyj kompleks_kurs!vystavka" ;
INNER JOIN "vystavochnyj kompleks_kurs!bilet" ;
ON Vystavka.kod_vyst = Bilet.kod_vyst;
WHERE Bilet.kod_firmy = ( "Ф01" )
Рис34. Запрос 3
Рис34.1 Запрос 3
2.Простые запросы
Запрос 1
Вывод наименований категорий льготности, кроме категорий: «Не льготный» и «Детский».
SELECT *;
FROM ;
"vystavochnyj kompleks_kurs!ligoty";
WHERE Ligoty.naim_ligot NOT IN ("НЕ ЛЬГОТНЫЙ", "ЛЬГОТНЫЙ ДЕТСКИ")
Рис35. Простой запрос 1
Рис35.1 Простой запрос 1
Запрос 2
Вывод проданных билетов «02.15.13» с номером билета, кодом выставки и фирмы.
SELECT Bilet.data, Bilet.nomp_bilet, Bilet.kod_firmy, Bilet.kod_vyst;
FROM ;
"vystavochnyj kompleks_kurs!bilet";
WHERE Bilet.data = CTOD("02/15/13")
Рис36. Простой запрос 2
Рис36.1 Простой запрос 2
Запрос 3
Список категорий льготности и их наименования с ценой больше «50».
SELECT *;
FROM ;
"vystavochnyj kompleks_kurs!ligoty";
WHERE Ligoty.cena > ( 50 )
Рис37. Простой запрос 3
Рис37.1 Простой запрос 3
Запрос 4
Номера билетов с кодом выставки «В102» и с кодом фирмы «Ф01».
SELECT Bilet.nomp_bilet, Bilet.kod_firmy, Bilet.kod_vyst;
FROM ;
"vystavochnyj kompleks_kurs!bilet";
WHERE Bilet.kod_firmy = ( "Ф01" );
AND Bilet.kod_vyst = ( "В102" )
Рис38. Простой запрос 4
Рис38.1 Простой запрос 4
Рис38.2 Простой запрос 4
Запрос 5
Вывод всех выставочных комплексов, имеющих в наименовании сочетания букв «КО» и их коды.
SELECT *;
FROM ;
"vystavochnyj kompleks_kurs!vystavka";
WHERE Vystavka.naim_vyst LIKE ( "%КО%" )
Рис39. Простой запрос 5
Рис39.1 Простой запрос 5
Запрос 6
В таблице «Bilet» вывести все данные, кроме фирм-организаторов «Ф01».
SELECT *;
FROM ;
"vystavochnyj kompleks_kurs!bilet";
WHERE Bilet.kod_firmy <> ( "Ф01" )
Рис40. Простой запрос 6
Рис40. 1 Простой запрос 6
Запрос 7
Вывести из таблицы «Bilet» код фирмы и код выставки с ценой проданного билета 80 рублей.
SELECT Bilet.kod_firmy, Bilet.kod_vyst, Bilet.cena_l;
FROM ;
"vystavochnyj kompleks_kurs!bilet";
WHERE Bilet.cena_l = ( 80.00 )
Рис41. Простой запрос 7
Рис41.1 Простой запрос 7
3.Многостраничные и вычисляемые запросы
Запрос 1
Посчитать количество проданных билетов и общую сумму от продаж билетов.
SELECT SUM(Bilet.cena_l) AS общ_сумм,;
COUNT(Bilet.nomp_bilet) AS кол_прод_бил;
FROM ;
"vystavochnyj kompleks_kurs!bilet"
Рис42. Вычисляемый запрос 1
Запрос 2
Вывести проданные билеты в промежутке «15.01.13 – 28.02.13», указав код льготности и наименование.
SELECT Bilet.data, Bilet.kod_ligot, Ligoty.naim_ligot;
FROM ;
"vystavochnyj kompleks_kurs!bilet" ;
INNER JOIN "vystavochnyj kompleks_kurs!ligoty" ;
ON Bilet.kod_ligot = Ligoty.kod_ligot;
WHERE Bilet.data BETWEEN CTOD("02/15/13") AND CTOD("02/28/13")
Рис43. Многостраничный запрос 2
Рис43.1 Многостраничный запрос 2
Запрос 3
Определить количество проданных билетов с кодом фирмы «Ф02».
SELECT COUNT(Bilet.kod_vyst) AS кол_прод_бил_ф02;
FROM ;
"vystavochnyj kompleks_kurs!bilet";
WHERE Bilet.kod_firmy = ( "Ф02" )
Рис44. Вычисляемый запрос 3
Рис44.1 Вычисляемый запрос 3
Создание отчетов
Отчет представляет собой форматированное представление данных, выводимое на экран, принтер или в файл. Отчет, создаваемый в Visual FoxPro, может быть представлен в табличном виде или в свободной форме. Табличный отчет — это напечатанная таблица, в которой строка представляет собой запись, а каждый из элементов строки содержит поле исходной таблицы или вычисляемое поле. Данные в таблице упорядочены. Табличные отчеты используются для печати данных, представленных в виде списка.
В отчете «Фирмы-организаторы» на базе таблицы «Firmy» указаны все коды фирм, которые сопоставлены с их наименованиями.
Рис45. Вид отчета в конструкторе
Рис46. Отчет по фирмам-орагнизаторам
В отчеты помимо исходных данных таблиц были внесены изменения, которые отразились в ведомостях – подсчет данных (кодов).
Рис47. Вид отчета в конструкторе
Вся рабочая область конструктора отчетов по умолчанию разделена на три полосы, ограничиваемые разделительными строками (см. Рис47). Наименование полосы отображается на разделительной строке, находящейся непосредственно под этой полосой. При использовании в отчете группирования данных, добавлении в него титульной страницы и итоговых данных появляются дополнительные полосы. Каждая полоса может содержать элементы управления отчета, такие как текст, табличные и вычисляемые поля, линии, прямоугольники, рисунки.
Рис48. Отчет по выставочным комплексам
В отчете по категориям льготности помимо количества были добавлены строки максимальной и минимальной скидки.
Рис49. Вид отчета в конструкторе
Рис50. Отчет по категориям льготности.
В отчете по продажам билетов были добавлены строки суммы и средней цены билетов.
Рис51. Вид отчета в конструкторе
Лист будущего отчеты был отражен в альбомном виде для того, чтобы все колонки смогли поместиться в отчете и не находили на друг друга.
Рис52. Отчет по продажам билетов
Рис52.1 Отчет по продажам билетов
Рис52.2 Отчет по продажам билетов
Разработать форму отчетной сводки для вычисления стоимости проданных билетов в пределах каждого выставочного комплекса билетов по конкретной категории льготности билета.
Рис53. Вид отчета в конструкторе
Рис54. Отчет для вычисления стоимости проданных билетов
Рис54.1 Отчет для вычисления стоимости проданных билетов
Рис54.2 Отчет для вычисления стоимости проданных билетов
Создание форм

- Базы Данных "Гостиница"
- Базы данных для гостиницы
- Базы данных для информационной системе
- Базы данных для кинотеатров
- Базы данных для станции технического обслуживания
- «Базы данных»: Домашний архив
- Базы данных и лингвистические информационные ресурсы
- Базы данных (БД) и системы управления базами данных (СУБД)
- Базы данных - библиотека
- Базы данных в Excel
- Базы данных в Microsoft Access
- Базы Данных в VS 2010
- Базы данных в интернете
- Базы данных в СУБД ACCESS