Базы данных "Выставочный комплекс" Visual FoxPro

СОДЕРЖАНИЕ

 

 

 

 

 

 

 

 

ВВЕДЕНИЕ

 

Использование баз данных и информационных систем становится неотъемлемой составляющей деловой деятельности современного человека и функционирования многих преуспевающих организаций. В связи с этим большую актуальность приобретает освоение принципов построения и эффективного применения соответствующих технологий и программных продуктов: систем управления базами данных, систем автоматизации проектирования, средств администрирования и защиты баз данных и других. 
 
         СУБД реляционного типа являются наиболее распространенным на всех классах ЭВМ, а на ПК занимают доминирующее положение. СУБД позволяет структурировать, систематизировать и организовать данные для их компьютерного хранения и обработки.  
 
        Реляционная модель обладает следующими преимуществами: 
 
- структурная независимость 
 
- концептуальная простота 
 
- простота проектирования, реализации, управления и использования 
 
- нерегламентированные запросы 
 
- мощная система управления базой данных. 
 
         В настоящее время невозможно представить себе деятельность любого современного предприятия без использования профессиональных СУБД. 
 
        

 

 

 

Постановка задачи

 

Разработать базу данных в СУБД Visual FoxPro для автоматизации процесса «Выставочный комплекс».

Выделить классы объектов предметной области " Выставочный комплекс" на основании следующего перечня реквизитов:

  1. Код выставочного комплекса;
  2. Наименование выставочного комплекса;
  1. Код фирмы-организатора;

  1. Наименование фирмы-организатора;

  1. Код категории льготности билета;

  1. Наименование категории льготности билета (не льготный, льготный пенсионера, льготный учащегося);

  1. Цена экземпляра билета в конкретной категории;

  1. Номер билета;

  1. Дата продажи;
  2. Регистрационный номер продажи;
  3. Скидка.

 

Количество выставочных комплексов – 4-6; количество фирм-организаторов– 4-6;  количество проданных билетов – 30-40.

 

Разработать следующие основные запросы к БД:

– все билеты, бывшие на данной выставке,

– список всех выставок и проданных билетов,

– список выставок, которые организованы заданными фирмами и проданные билеты.

 

Разработать следующие дополнительные типы запросов к БД:

Простые запросы к отдельным таблицам (справочникам или процессу) – более

4 запросов.

Многотабличные и вычисляемые  запросы  более – 2-4 запросов.

В конкретном многотабличном  запросе вычислить стоимость проданных в заданный выставочный комплекс билетов по заданной категории льготности.

 

 

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

  1. КОНЦЕПТУАЛЬНОЕ ПРОЕКТИРОВАНИЕ

 
1. 1. Перечень сущностей

 
    Сущность — это абстрактный объект определенного вида. Набор однородных сущностей образует множество сущностей.

 

    В курсовой  «Выставочный комплекс» главной таблицей является «Билет». В соответствии с предметной областью были созданы таблицы: 

  • «Фирмы-организаторы» - хранится информация о фирмах;
  • «Выставочные комплексы» - хранится информация о выставках;
  • «Льготы» - хранится информация о категориях льготности;
  • «Билет» - объединяет информацию о фирмах, выставках и льготах, так же имеет свои данные.

 

 

 

 

 

 

 

 

 

 

 

 

 

1.2. Перечень атрибутов

 

Множеству сущностей отвечает набор атрибутов , являющихся свойствами сущностей множества.

В результате исследования предметной области были получены следующие атрибуты:

 

  1. Таблица «Фирмы-организаторы» содержит:
    • Код_фирм – индивидуальный номер фирмы;
    • Наим_фирм – наименование фирмы.

 

  1. Таблица «Выставочные комплексы» содержит:
    • Код_выст – индивидуальный номер выставочного комплекса;
    • Наим_выст – наименование выставочного комплекса.

 

  1. Таблица «Льготы» содержит:
    • Код_льгот – индивидуальный номер категории льготности;
    • Наим_льгот – наименование категории льготности;
    • Скидка – процент, на который снижается цена билета.
  1. Таблица «Билет» содержит:
    • Номп_билет – номер проданного билета;
    • Регист_номп – индивидуальный номер билета;
    • Код_фирм –  номер фирмы;
    • Код_выст – номер выставочного комплекса;
    • Код_льгот – категория льготности;
    • Дата – дата продажи билета;
    • Цена – цена проданного билета с учетом выбранной категории льготности.

 

 

 

 

1.3. Диаграмма сущностей и связей

 

Связи — это соединения между двумя или большим числом множеств сущностей.

 

Диаграмма сущностей и связей или ER-диаграмма — это графическое представление множеств сущностей, их атрибутов и связей. Элементы названных видов описываются вершинами графа, и для задания принадлежности элемента к определенному виду используется специальная геометрическая фигура:

  • Прямоугольник — для множеств сущностей;
  • Овал — для атрибутов;
  • Ромб — для связей.

 

Рис1. ER-модель "Выставочный комплекс"

В базе данных определены следующие отношения между таблицами:

 

 
Таблица «Фирмы - организаторы»

 
Таблица «Выставочные комплексы»

 
Тип отношений:

 
Один ко многим

 
Таблица «Выставочные комплексы»

 
Таблица «Билеты»

 
Тип отношений:

 
Один ко многим

 
Таблица «Льготы»

 
Таблица «Билеты»

 
Тип отношений:

 
Один ко многим


 

Таб1. Отношения между таблицами

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Логическое проектирование

 

1.Ключи и ER-моделирование

 

Ключ — атрибут или подмножество атрибутов, уникальным образом определяющие некоторую сущность в составе множества сущностей.

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

Использование ключей и индексов позволяет:

 

      • однозначно идентифицировать записи;
      • избегать дублирования значений в ключевых полях;
      • выполнять сортировку таблиц;
      • ускорять операции поиска в таблицах;
      • устанавливать связи между отдельными таблицами БД.

Используемая нами система обозначений предусматривает, что атрибуты множеств сущностей, объявленные как ключевые, на ER-диаграмме выделяются подчеркиванием.

 

Первичные ключи:

  1. Таблица «Фирмы – организаторы» - код_фирмы;
  2. Таблица «Выставочные комплексы» - код_выставки;
  3. Таблица «Льготы» - код_льгот;
  4. Таблица «Билеты» - код_фирм + код_выставки + код_льготности. 

Рис2. ER-диаграмма с обозначениями первичных ключей

 

 

 

 

 

 

 

 

 

 

  1. ДАТАЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ БД

 

2.1. Составление структур базы данных

 

На основании ER-диаграммы составим структуры базы данных. Поскольку на диаграмме изображены четыре объектных множества, то, следовательно, в базу данных будет входить четыре реляционных таблицы.  Перечислим и дадим следующие названия полям таблиц в соответствии с диаграммой:

 

    1. Поля таблицы «Firmy»:

 

Значение поля

Имя поля

Тип

Длина

Код фирмы

Kod_firmy

Character

3

Наименование фирмы

Naim_firmy

Character

20


 

 

    1. Поля таблицы «Vystavka»:

 

Значение поля

Имя поля

Тип

Длина

Код выставки

Kod_vyst

Character

4

Наименование выставка

Naim_vyst

Character

20


 

    1. Поля таблицы «Ligoty»:

 

Значение поля

Имя поля

Тип

Длина

Код льготности

Kod_ligot

Character

2

Наименование льгот

Naim_ligot

Character

25

Скидка

Skidka

Numeric

3


 

    1. Поля таблицы «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


 

  1. РЕАЛИЗАЦИЯ БАЗЫ ДАННЫХ В СУБД 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 Отчет для вычисления стоимости проданных билетов

 

 

 

 

 

 

Создание форм