Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка БД V.3.0 light (docx)

.pdf
Скачиваний:
10
Добавлен:
14.03.2015
Размер:
608.41 Кб
Скачать

Следующий шаг – создание запросов. Создадим в качестве примеров по одному запросу каждого из следующих видов: на выборку, на выборку с группировкой, перекрестный запрос и запрос на обновление. Запросы представим в виде фотографий окна конструктора запросов и SQL-команд.

Запрос на выборку: требуется вывести историю назначений конкретного работника (например, с табельным номером "00003").

Фотографию конструктора запроса на выборку представим на рисунке 4.4.

Рисунок 4.4 - Фотография конструктора запроса на выборку

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

SELECT Назначения.НомНазн, Рабочие.ТабНом, Рабочие.ФамРаб, Рабочие.ИмяРаб, Рабочие.ОтчРаб, Бригады.НаимБриг, Назначения.ДатаНазн, Назначения.ДатаОтм

FROM Рабочие INNER JOIN (Бригады INNER JOIN Назначения

ON Бригады.НомБриг = Назначения.НомБриг)

ON Рабочие.ТабНом = Назначения.ТабНом WHERE (Рабочие.ТабНом)="00003";

Жирным шрифтом в команде запроса выделены зарезервированные слова (команды) языка SQL.

Результаты выполнения запроса на выборку представим в таб-

лице 4.13.

29

Таблица 4.13 - Результаты выполнения запроса на выборку

 

 

 

 

 

Дата

Дата

Таб.

 

 

 

Наим.

отмены

назна-

Фамилия

Имя

Отчество

назна-

чения

 

 

 

бригады

чения

назна-

 

 

 

 

 

чения

 

 

 

 

 

 

 

0000003

00003

Александров

Сергей

Петрович

Бригада № 1

02.05.04

30.07.04

0000011

00003

Александров

Сергей

Петрович

Бригада № 3

05.07.04

 

Запрос на выборку с группировкой: необходимо определить суммарный выпуск и нормативную трудоемкость этого выпуска по каждому виду продукции за определенный период (май 2004 г.).

Фотографию конструктора запроса на выборку с группировкой представим на рисунке 4.5.

Рисунок 4.5 - Фотография конструктора запроса на выборку с группировкой

Текст запроса на выборку с группировкой на SQL представим ниже:

SELECT ВидыПродукции.НомВид, ВидыПродукции.НаимВид, ВидыПродукции.ЕдИзм, Sum(ПозицииОтчетов.КолПрод) AS СумКолПрод, First(ВидыПродукции.НормВрем) AS НормаВремени, Sum([КолПрод]*[НормВрем]) AS ВыработкаИтого

FROM Отчеты INNER JOIN (ВидыПродукции INNER JOIN

ПозицииОтчетов ON ВидыПродукции.НомВид =

ПозицииОтчетов.НомВид) ON Отчеты.НомОтч = ПозицииОтчетов.НомОтч

WHERE (Отчеты.ДатаОтч)>=#5/1/2004# And (Отчеты.ДатаОтч)<=#5/31/2004#

GROUP BY ВидыПродукции.НомВид, ВидыПродукции.НаимВид, ВидыПродукции.ЕдИзм;

30

При создании запроса на выборку с группировкой были использованы агрегатные функции Sum и First. Функция Sum использовалась дважды: для определения суммы по полю [КолПрод] и по вычисляемому полю [КолПрод]*[НормВрем] для каждого подмножества записей (т.е. для каждого вида продукции).

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

Таблица 4.14 - Результаты выполнения запроса на выборку с группировкой

Код

 

Ед.

 

Норма

Выра-

Наименование продукции

Кол-во

времени

ботка,

прод.

 

изм.

 

на ед.

ч.

0001

Чайная пара "Золотая осень"

шт

25

1

25

0002

Кофейный сервиз "Аврора"

набор

6

12

72

0003

Чайная чашка "Космос"

шт

25

1

25

0004

Чайный сервиз "Амбер"

набор

8

30

240

0005

Чайная пара "Шотландка"

шт

20

1,5

30

0006

Ваза "Пингвин"

шт

8

3

24

0007

Ваза "Хризантема"

шт

125

2,5

312,5

0008

Ваза "Карнегия"

шт

5

6

30

Перекрестный запрос: необходимо определить суммарный выпуск продукции каждого вида за июнь 2004 г. по бригадам.

Фотографию конструктора перекрестного запроса представим на рисунке 4.6.

Рисунок 4.6 - Фотография конструктора перекрестного запроса

Представим текст перекрестного запроса на SQL:

31

TRANSFORM Sum(ПозицииОтчетов.КолПрод) AS [СумКолПрод]

SELECT

ВидыПродукции.НомВид, ВидыПродукции.НаимВид,

 

ВидыПродукции.ЕдИзм,

 

Sum(ПозицииОтчетов.КолПрод) AS [Итого]

FROM

Бригады INNER JOIN (Отчеты INNER JOIN

 

(ВидыПродукции INNER JOIN ПозицииОтчетов ON

 

ВидыПродукции.НомВид = ПозицииОтчетов.НомВид)

 

ON Отчеты.НомОтч = ПозицииОтчетов.НомОтч)

WHERE

ON Бригады.НомБриг = Отчеты.НомБриг

Отчеты.ДатаОтч>=#6/1/2004#

GROUP BY

And Отчеты.ДатаОтч<=#6/30/2004#

ВидыПродукции.НомВид, ВидыПродукции.НаимВид,

PIVOT

ВидыПродукции.ЕдИзм

Бригады.НаимБриг;

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

Таблица 4.15 - Результаты выполнения перекрестного запроса

Код

Наименование продукции

Ед.

Бригада

Бригада

Итого

прод.

изм.

№ 1

№ 2

 

 

0001

Чайная пара "Золотая осень"

шт

20

100

120

0002

Кофейный сервиз "Аврора"

набор

25

30

55

0003

Чайная чашка "Космос"

шт

175

30

205

0004

Чайный сервиз "Амбер"

набор

17

10

27

0005

Чайная пара "Шотландка"

шт

25

 

25

0007

Ваза "Хризантема"

шт

25

 

25

0008

Ваза "Карнегия"

шт

 

40

40

0009

Статуэтка "Медведь"

шт

 

70

70

0010

Статуэтка "Пингвин"

шт

 

50

50

Запрос на обновление: необходимо, чтобы в таблице видов продукции для всех видов, измеряющихся в штуках, после сокращенного наименования единицы измерения "шт" стояла точка, т.е. "шт."

Фотографию конструктора запроса на обновление представим на рисунке 4.7.

Представим текст запроса на обновление на SQL:

UPDATE ВидыПродукции SET ВидыПродукции.ЕдИзм = "шт." WHERE (ВидыПродукции.ЕдИзм)="шт";

32

Рисунок 4.7 - Фотография конструктора запроса на обновление

На основе разработанных запросов необходимо создать один или несколько отчетов. Внесем небольшие изменения в запрос на выборку с группировкой и построим на его основе отчет о производстве продукции: добавим в запрос поля [НомГр] и [НаимГр] из таблицы "ТоварныеГруппы"; заменим ранее указанные явно даты начала и окончания периода на параметры [ДатаНачалаПериода] и [ДатаОкончанияПериода]. Внесенные изменения позволят организовать в отчете группировку по товарным группам и выбрать период, за который будет сформирован отчет, непосредственно перед его выполнением.

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

Макет отчета о производстве продукции представим в виде таблице 4.16.

Отчет рекомендуется создавать при помощи мастера, а впоследствии редактировать в режиме конструктора. Документ, который будет получен в результате выполнения отчета, должен быть качественно оформлен и все недочеты, возникшие при формировании отчета при помощи мастера должны быть исправлены.

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

33

одного запроса каждого из базовых типов (на выборку, на выборку с группировкой, перекрестного).

Таблица 4.16 - Отчет о производстве продукции за период с 01.06.2004 по 30.06.2004

Код товарной группы:

01

 

 

 

 

 

Наименование товарной группы:

Посуда

 

 

 

 

 

 

 

 

 

 

Код

Наименование продукции

Ед.

 

Кол-

Норма

Трудоемкость

продукции

изм.

 

во

времени

выпуска, ч.

 

 

001

Чайная пара "Золотая осень"

шт.

 

120

 

1

120,0

002

Кофейный сервиз "Аврора"

набор

 

55

 

12

660,0

003

Чайная чашка "Космос"

шт.

 

205

 

1

205,0

004

Чайный сервиз "Амбер"

набор

 

27

 

30

810,0

005

Чайная пара "Шотландка"

шт.

 

25

 

1,5

37,5

Итого по товарной группе:

 

 

 

 

 

1832,5

Код товарной группы:

02

 

 

 

 

 

Наименование товарной группы:

Вазы

 

 

 

 

 

 

 

 

 

Код

Наименование продукции

Ед.

 

Кол-

 

Норма

Трудоемкость

продукции

изм.

 

во

 

времени

выпуска, ч.

 

 

 

007

Ваза "Хризантема"

шт.

 

25

 

2,5

62,5

008

Ваза "Карнегия"

шт.

 

40

 

6

240,0

Итого по товарной группе:

 

 

 

 

 

302,5

Код товарной группы:

03

 

 

 

 

 

Наименование товарной группы:

Сувениры

 

 

 

 

 

 

 

 

 

009

Статуэтка "Медведь"

шт.

 

70

 

0,5

35,0

010

Статуэтка "Пингвин"

шт.

 

50

 

2

100,0

Итого по товарной группе:

 

 

 

 

 

135,0

 

 

 

 

 

ИТОГО ПО ВСЕМ ТОВАРНЫМ ГРУППАМ:

 

 

 

2270,0

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

34

5.АНАЛИЗ НАИБОЛЕЕ ТИПИЧНЫХ ОШИБОК, ДОПУСКАЕМЫХ ПРИ ПРОЕКТИРОВАНИИ СТРУКТУР ПРЕДМЕТНЫХ ОБЛАСТЕЙ

Рассмотренный пример проектирования и создания базы данных является образцом при выполнении контрольной работы, хотя это и не означает его прямое копирование. Проектирование и создание базы данных – процесс творческий. Единственного правильного решения этой задачи не существует. Это связано с тем, что разные люди по разному воспринимают одни и те же объекты, у них могут быть разные цели создания базы данных и разная подготовка. Наиболее остро это чувствуется при проектировании запросов, форм, отчетов и их оформлении. Но при множестве правильных решений существует еще большее множество неправильных, особенно при проектировании структуры предметной области.

Перечислим и проанализируем наиболее типичные ошибки, которые допускаются студентами при проектировании структур предметных областей.

На схему предметной области помещается прямоугольник, соответствующий всей предметной области. Возьмем, например, вариант 2 “Лодочная станция”. На схеме структуры предметной области никак не может быть прямоугольника “Лодочная станция”, т.к. лодочная станция в данном случае – это вся предметная область со всеми входящими в нее типами объектов и взаимосвязями между ними.

На схему предметной области помещаются типы объектов, которым может соответствовать всего один и только один объект. Например, в варианте 1 “Фруктовый сад” все собранные фрукты сдаются на склад и склад всего один. Следовательно, выделять склад в качестве типа объектов на схеме предметной области излишне, т.к. этот единственный склад не связан никакими отношениями с другими типами объектов и не оказывает никакого влияния на структуру предметной области.

Студенты путают типы объектов и свойства (атрибуты). В виде прямоугольников на схеме изображаются только типы объектов, но не свойства. Например, в варианте 27 “Фильмотека” характеристиками типа объектов “Фильм” являются жанр, режиссер, актеры, год создания, продолжительность, полученные премии. Некоторые из этих характеристик являются самостоятельными типами объектов (жанр, режиссер, актеры, премии), другие (год создания, продолжительность) таковыми не являются. Тип объектов выделяется в

35

том случае, когда его образует совокупность свойств, обладающая целостностью, причем это может быть как несколько, так и всего одно свойство. Жанры, режиссеры, актеры и премии могут существовать независимо от фильмов, и следовательно, обладают целостностью. А вот продолжительность и год создания отдельно от фильмов существовать не могут. Правильно определенные типы объектов, связи между ними, а также реквизиты типов объектов в дальнейшем позволят обеспечить отсутствие избыточности и противоречивости данных в базе.

На схему структуры предметной области помещаются типы объектов, между которыми существует связь “один к одному”. Два типа объектов, между которыми существует связь “один к одному”, на схеме должны объединяться в один тип объектов. Например, в варианте 6 “Расчеты с клиентами в гостинице” сделано допущение: “…оплата за проживание производится авансом единовременно”, т.е. между “Проживанием” и “Оплатой” имеет место связь “один к одному”. Следовательно, типы объектов “Проживание” и “Оплата” будут объединены в один тип объектов – “Проживание”. Оплата же может или вообще не фиксироваться (без оплаты клиента просто не поселят), или фиксироваться как отдельный реквизит типа объектов “Проживание”. Во втором случае реквизит “Оплата” может быть логическим (“Да” – оплата произведена, “Нет” – оплата не произведена) или числовым (указывается сумма оплаты – более гибкое, но менее удачное решение с точки зрения сделанных допущений). Каждое из предложенных решений имеет право на существование, т.к. во-первых, в той или иной степени соответствует допущениям, которые были сделаны при описании предметной области, и, во-вторых, не усложняет ее структуру без достаточных на то оснований.

Неправильно определяются типы отношений между типами объектов.

Чтобы определить тип отношения между парой типов объектов рекомендуется использовать правила математической логики (формулы 2.1-2.3) и алгоритм, представленный на рисунке 2.1.

На схеме структуры предметной области изображаются косвенные связи типа “один ко многим”.

При помощи стрелок на схеме должны отображаются только прямые связи типа “один ко многим”.

36

Между любой парой типов объектов, выделенных в составе предметной области, существуют какие-то отношения. Некоторые из этих отношений являются прямыми, некоторые – косвенными.

Обозначим буквами A, B и C типы объектов. Если A относится к B как один ко многим, B относится к C как один ко многим, то A относится к C как один ко многим, причем о т- ношение A к C является косвенным и на схеме структуры предметной области отображаться при помощи стрелки не будет, т.к. оно уже выражено при помощи отношений A к B

и B к C.

Более подробно алгоритм исключения косвенных зависимостей типа “один ко многим” рассматривался в разделе 2 методической разработки (см. рисунок 2.2 и комментарии к нему).

Варианты контрольных заданий, включенные в методические указания, сформулированы таким образом, чтобы структура предметной области была как можно более однозначной. Для этого в каждом случае были перечислены все функции управления, которые необходимо реализовать (цели создания базы данных), сделаны необходимые допущения, описаны значимые особенности предметной области. Чуть большая свобода выполняющим контрольное задание предоставлена при выборе реквизитов, перечень которых должен быть определен для каждого типа объектов исходя из здравого смысла. Такими реквизитами могут быть даты, цены, места расположения, размеры, вес, цвет и т.п. характеристики.

6.КОНТРОЛЬНЫЕ ВОПРОСЫ ПО СТРУКТУРИРОВАНИЮ ПРЕДМЕТНЫХ ОБЛАСТЕЙ И

СОЗДАНИЮ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ

Прежде чем приступить к выполнению контрольного задания по лабораторной работе, рекомендуется проверить знание:

теоретических основ структурирования предметных областей;

практических аспектов создания реляционных баз данных.

Для этих целей предназначены следующие контрольные вопросы, на которые необходимо найти ответы:

1.Что такое “база данных”?

2.Что такое “предметная область”?

37

3.Приведите примеры предметных областей.

4.Объясните содержание понятий “объект”, “свойство объекта”, “тип объектов”.

5.Какие свойства позволяют отнести объект к определенному типу?

6.Какие свойства позволяют выделить объект из множества ему подобных (множества объектов одного и того же типа)?

7.Какие свойства объектов: естественные или назначенные обычно выбираются в качестве ключевых?

8.Перечислите типы отношений между типами объектов.

9.Какие правила математической логики используются при определении типа отношения между парой типов объектов?

10.Какой тип отношения имеет место между типами объектов A и B, если одному объекту типа A может соответствовать множество объектов типа B, а одному объекту типа B только один объект типа A?

11.Какой тип отношения имеет место между типами объектов A и B, если одному объекту типа A может соответствовать множество объектов типа B, а одному объекту типа B – множество объектов типа A?

12.Какой тип отношения имеет место между типами объектов A и B, если одному объекту типа A может соответствовать только один объект типа B, а одному объекту типа B – множество объектов типа A?

13.Какие отношения между типами объектов считаются существенными?

14.Что собой представляет модель “сущность-связь”?

15.Перечислите разновидности модели “сущность-связь”.

16.Кем впервые были сформулированы принципы, лежащие в основе модели “сущность-связь”?

17.Что представляет собой UML?

18.Что на схеме структуры предметной области изображается при помощи прямоугольников?

19.Какие связи на схеме структуры предметной области изображаются при помощи стрелок в упрощенной версии модели “сущность-связь”?

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

21.Как расшифровывается аббревиатура “СУБД”? Что это такое? Приведите примеры известных Вам СУБД.

38