Таблица
«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 Отчет для вычисления стоимости
проданных билетов
Создание форм