Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ ПОСТАВЛЕННОЙ ЗАДАЧИ



КУРСОВОЙ ПРОЕКТ

по МДК 02.02 Технология разработки и защиты баз данных

на тему «Информационная система спортивных организаций города»

Выполнил:

Евдокимов Руслан Александрович

Группа: 313 Пр

Подпись: ____________________

 

Руководитель курсового проекта:

Кудрявцева Татьяна Владимировна

Дата: ________________________

Оценка: ______________________

Подпись: _____________________

 

Смоленск, 2016

ОГЛАВЛЕНИЕ (проставить страницы!!!!!!!!!!!!!! )

ВВЕДЕНИЕ………………………………………………………………..……………4

1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ ПОСТАВЛЕННОЙ ЗАДАЧИ

1.1 Общая характеристика предметной области и анализ объекта исследования

1.2 Исследование потоков данных -этапы

1.3 Перечень задач, подлежащих решению

1.4 Средства решения поставленной задачи sql b delpi описать отдельно

2 РАЗРАБОТКА И РЕАЛИЗАЦИЯ ПРОЕКТА БАЗЫ ДАННЫХ

2.1 Инфологическое моделирование системы

2.2 Проектирование логической структуры реляционной базы данных

2.3 Нормализация проекта базы данных.

2.4 Реализация проекта базы данных в среде СУБД (п 2.4.1 и 2.4.3)

2.4.1 Конструирование таблиц базы данных.

2.4.2 Определение свойств таблицы и её полей.

2.4.3 Создание схемы данных. Ограничение целостности в БД

2.4.4 Разработка форм, запросов, отчетов.

2.4.5 Разработка пользовательского интерфейса

2.5 Реализация защиты базы данных

3 РАЗРАБОТКА И РЕАЛИЗАЦИЯ ПРОГРАММНОЙ ЧАСТИ ПРОЕКТА

1.

2.

3.

3.1 Эргономические требования к оформлению интерфейса программного продукта

( для тех, у кого SQL

3. Разработка SQL – запросов

3.1 Общая характеристика языка SQL

3.2 Обзор основных операторов языка SQL

3.3 Создание SQL – запросов

3.3.1. Запросы на выборку данных

3.3.2. Запросы с вычислениями

3.3.3. Многотабличные запросы

3.3.4. Сложные запросы

3.4 Триггеры и хранимые процедуры

 

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ А (схема данных)

ПРИЛОЖЕНИЕ Б (листинг, код запросов)

ПРИЛОЖЕНИЕ В (внешний вид экранных форм)

 

 

Вариант 10. Информационная система спортивных организаций города.

Спортивная инфраструктура города представлена спортивными сооружениями различного типа: спортивные залы, манежи. Стадионы, корты и итд. Каждая из категорий спортивных сооружений обладает атрибутами, специфичными только для неё: стадион характеризуется вместимостью, корт – типом покрытия.

 

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

 

Организаторы соревнований проводят состязание по отдельным видам спорта на спортивных сооружениях города. По результатам участия спортсменов в соревнованиях производится награждение


ВВЕДЕНИЕ

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

База данных (БД) - поименованная целостная совокупность данных, которая отображает состояние объектов и их отношений в данной предметной области.

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

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

В процессе функционирования баз данных для систематизации, хранения и представления информации используются специальные сервисные программные средства - системы управления базами данных (СУБД). Системы управления базами данных играют центральную роль в их функционировании как хранилища специально организованных и логически связанных информационных элементов.

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

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

Система управления базами данных (СУБД) - комплекс языковых, программных и технических средств, предназначенных для организации взаимодействия пользователя и БД. Эти системы не привязываются к решению конкретных проблем. В них автоматизированы стандартные процедуры, необходимые для работы с базами данных, а т.к. время не стоит на месте, то в каждой новой версии или новом варианте СУБД реализовано все большее количество подобных процедур.

Решение задач посредством СУБД приводит к созданию информационных систем (ИС).

По сферам применения различают два основных класса ИС: информационно-поисковые системы (ИПС) и системы обработки данных (СОД).

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

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

Чтобы разобраться в задаче, необходимо структурировать информацию:

· определить предметную область, в рамках которой, вероятнее всего, лежит наша задача;

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

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

При проектировании ИС взгляды отдельных пользователей на предметную область называют локальными пользовательскими представлениями (ЛПП). Сведение этих взглядов в единую систему, выявление пересекающихся эпизодов и определение той части, которая необходима для решения поставленной задачи, разработчик ни в коей мере не может перекладывать на плечи пользователя. Этот этап является одним из основных при построении ИС. Его реализация невозможна без изучения таких процессов, которые протекают в изучаемой предметной области.

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

База данных была спроектирована в системе управления базами данных Microsoft Access, а графический интерфейс пользователя - с помощью языка Java. В качестве предметной области разрабатываемой базы данных выбрано автомобилестроительное предприятие.

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


Исследование потоков данных

В приложении базы данных потоки данных можно разделить на 2 типа.

Первый тип - данные, которые были введены непосредственно в БД. Можно сказать, что такие данные не изменяются в процессе пользования проектом. Это, например, данные, используемые SQL-запросами, формы поиска и т.д.

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

Второй тип потоков данных - данные, непосредственно введенные в базу данных в процессе ее редактирования.

В проекте используется такой тип потока данных в виде функций добавления, редактирования и удаления записей. Эти функции доступны непосредственно из вкладки приложения, содержащей таблицу, соответствующую таблице базы данных. Поток изменяет данные в БД.

1.3 Перечень задач, подлежащих решению

Создание SQL запросов.

1.4 Средства решения поставленной задачи sql описать отдельно.

С помощью программы Microsoft Access


 

 

Вторая нормальная форма.


Для того, чтобы база данных была нормализована согласно второй нормальной форме, она должна быть нормализована согласно первой нормальной форме. Вторая нормальная форма связана с избыточностью данных.

Избыточность данных.


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

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


Дублирование данных среди записей в поле store.
Таблица выше может принадлежать компании, которая продает автомобили и имеет несколько магазинов в Нидерландах.
Если посмотрите на эту таблицу, то вы увидите множественные примеры дублирования данных среди записей. Поле brand могло бы быть выделено в отдельную таблицу. Также, как и поле type (модель), которое также могло бы быть выделено в отдельную таблицу, которая бы имела связь многие-к-одному с таблицей brand потому, что у бренда могут быть разные модели.

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

В примере выше таблица car имеет внешний ключ – ссылку на таблицы type и store. Столбец brand исчез потому, что на бренд есть неявная ссылка через таблицу type. Когда есть ссылка на type, есть ссылка и на brand, т.к. type принадлежит brand.

Избыточность данных была существенным образом устранена из нашей модели базы данных. Если вы достаточно придирчивы, то вы, возможно, еще не удовлетворены этим решением. А как насчет поля country_of_origin в таблице brand? Пока дубликатов нет потому, что есть только четыре бренда из разных стран. Внимательный разработчик базы данных должен выделить названия стран в отдельную таблицу country.
И даже сейчас вы не должны быть удовлетворены результатом потому, что вы также могли бы выделить поле color в отдельную таблицу.
Насколько строго вы подходите к созданию ваших таблиц – решать вам и зависит от конкретной ситуации. Если вы планируете хранить огромное количество единиц автомобилей в системе и вы хотите иметь возможность производить поиск по цвету (color), то было бы мудрым решением выделить цвета в отдельную таблицу так, чтобы они не дублировались.

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

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


В этой таблице не все поля зависят исключительно от первичного ключа.

Существует отдельная связь между полем postal_code и полями города (city) и провинции (province). В Нидерландах оба значение: город и провинция – определяются почтовым кодом, индексом. Таким образом, нет необходимости хранить город и провинцию в клиентской таблице. Если вы знаете почтовый код, то вы уже знаете город и провинцию.
Такая транзитивной зависимости следует избегать, если вы хотите, чтобы ваша модель базы данных была в третьей нормальной форме.
В данном случае устранение транзитивной зависимости из таблицы может быть достигнуто путем удаления полей города и провинции из таблицы и хранение их в отдельной таблице, содержащей почтовый код (первичный ключ), имя провинции и имя города. Получение комбинации почтовый код-город-провинция для целой страны может быть весьма нетривиальным занятием. Вот почему такие таблицы зачастую продаются.

Другим примером для применения третьей нормальной формы может служить (слишком) простой пример таблицы заказов интернет-магазина ниже.

НДС (value added tax) – это процент, который добавляется к цене продукта (19% в данной таблице). Это означает, что значение total_ex_vat может быть вычислено из значения total_inc_vat и vice versa. Вы должны хранить в таблице одно из этих значений, но не оба сразу. Вы должны возложить задачу вычисления total_inc_vat из total_ex_vat или наоборот на программу, которая использует базу данных.
Третья нормальная форма гласит, что вы не должны хранить данные в таблице, которые могут быть получены из других (не ключевых) полей таблицы. Особенно в примере с таблицей клиентов следование третьей нормальной форме требует либо большого объема работы, либо приобретения коммерческой версии данных для такой таблицы.

Третья нормальная форма не всегда используется при проектировании баз данных. Когда разрабатываете базу данных вы всегда должны сравнивать преимущества от более высокой нормальной формы в сравнении с объемом работ, которые требуются для применения третьей нормальной формы и поддержания данных в таком состоянии. В случае с клиентской таблицей лично я бы предпочел не нормализовать таблицу до третьей нормальной формы. В последнем примере с НДС я бы использовал третью нормальную форму. Хранение данных, воспроизводимых из существующих, обычно плохая идея.

 

 

Определение полей таблицы

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

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

Ввод наименований полей

Наименования полей таблицы вводятся на вкладке Fields (Поля) в строке ввода столбца Name (Имя). При задании наименований полей вы можете использовать буквы, цифры и знак подчеркивания. Ваши попытки ввести специальные символы Visual FoxPro проигнорирует.

Длина наименования поля ограничивается 128-ю символами. Вряд ли вы воспользуетесь возможностью задавать такие длинные имена. Обычно для имен полей используют краткие названия, которые более наглядны и легко читаемы.

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

Типы полей

Поля таблицы предназначены для хранения в них данных. Это могут быть числа, текстовая информация, даты, графические файлы и т. д. Для определения типа данных, размещаемых в поле, используются тип поля, его ширина и количество знаков после запятой. Для их ввода предназначены столбцы Туре (Тип), Width (Ширина) и Decimal (Десятичные) вкладки Fields(Поля) конструктора таблицы.

В Visual FoxPro допустимыми являются типы полей, перечисленные в табл. 4.6.

Таблица 4.6, Типы полей Visual FoxPro

Тип Наименование Отображаемые данные
Текстовый Character, Character(binary) Текстовые поля могут содержать буквы, цифры и специальные символы. Максимальная ширина поля составляет 254 символа. тип Character (binary) используется в том случае, если не требуется учитывать кодовую страницу отображаемых данных
Числовой Integer, Numeric, Float, Double Integer отображает целые числа от-2 147 483 647 до +2 147 483 646. Числовые поля типа Numeric и Float отображают данные с фиксированной точкой в диапазоне от-0.9999999999x1 (Г19 до +0.9999999999х10+2°. Тип данных Double используется для хранения данных с высокой точностью в диапазоне от±4.9406564854 1247x1 (Г324 до±1.797693 13486232x1 (Г308
Денежный Currency В поле денежного типа могут содержаться числа от -922 337 203 685 477.5807 до922 337 203 685 477.5807
Дата Date В поле типа Date может содержаться любая дата от 01. 01. 0001 до 31. 12.9999
Дата и время DateTime В поле типа DateTime может содержаться любая дата от 01.01.0001 до 31.12.9999 и время от 00: 00: 00 а.m.. до 11: 59: 59 р.m.
Логический Logical Содержит логическое значение True (Т.)(Истина) или False (.F.) (Ложь)
Текстовое поле произвольной длины Memo, Memo(binary) Memo-поле содержит символьные данные большого объема
Двоичное поле произвольной длины General Поле данного типа предназначено для хранения в таблицах изображений и других двоичных данных

Задание свойств полей

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

Область Display (Отображение) содержит поля, позволяющие задать форматы ввода и отображения данных (табл. 4.7).

Таблица 4.7. Назначение полей области Display вкладки Fields

Поле Назначение
Format (Формат) Задает формат отображения данных в формах, отчетах и окне Browse
Input mask (Маска ввода) Задает формат ввода данных
Caption (Надпись) Определяет заголовок поля

Область Map field type to classes (Используемые типы полей для классов)предназначена для указания библиотеки и имени класса, который будет использоваться для создания объектов при размещении данного поля таблицы в форме (табл. 4.8).

Таблица 4.8. Назначение полей области Map field type to classes вкладки Fields

Поле Назначение
Display library (Показывать библиотеку) Задает местоположение и имя файла библиотеки классов
Display class (Показывать класс) Задает имя класса из выбранной библиотеки

Область Field validation (Проверка правильности ввода) позволяет задать параметры, описанные в табл. 4.9.

Таблица 4.9. Назначение полей области Field validation вкладки Fields

Поле Назначение
Rule (Условие) Условие правильности ввода данных
Message (Сообщение) Сообщение, выводимое при неправильном вводе данных в поле
Default Value (Значение по умолчанию) Значение, вводимое в поле по умолчанию

В текстовом поле Field comment (Комментарий) можно ввести краткое описание поля, которое может потребоваться при последующих модификациях структуры таблицы и сопровождении проекта.

Свойство NULL

Для каждого поля вы можете определить признак, разрешающий при вводе данных оставлять это поле пустым. Для этого используется свойство NULL в описании поля таблицы. 'Более подробно определение свойств полей будет рассмотрено в главе 14.

Создание схемы данных.

СОЗДАНИЕ СХЕМЫ ДАННЫХ

Создание схемы данных начинается с выполнения команды Схема данных (Relationships) в группе Отношения (Relationships) на вкладке ленты Работа с базами данных (Database Tools). В результате выполнения этой команды открывается окно схемы данных и диалоговое окно Добавление таблицы (Show Table), в котором осуществляется выбор таблиц, включаемых в схему (см. рис. 3.48). Диалоговое окно Добавление таблицы откроется автоматически, если в базе данных еще не определена ни одна связь. Если окно не открылось, на ленте Работа со связями | Конструктор (Relationship Tools | Design) в группе Связи (Relationships) нажмите кнопку Отобразить таблицу (Show Table).


Создание запросов

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

В данной курсовой работе созданы 2 запроса на выборку.

Запрос 1 дает сведения о цене товаров, он изображён на рисунке 6. Он позволяет упростить поиск товара по его коду.

Рисунок 6 - Запрос по цене товара

В запросе 2 отражены сведения о покупателях, можно увидеть на рисунке 7.

Запрос позволяет узнать информацию о покупателях, его адрес, телефон, а также код.

Рисунок 7 - Запрос " Сведения о покупателе"

Создание отчетов

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

Отчет " Сведения о покупателях" содержит информацию о покупателях: код, наименование, адрес, город, страну и телефон.

 

Таблица: Сведения о покупке

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

Таблица: Товары

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

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

Формы созданы с помощью мастера создания форм.

Форма " Заказы" содержит сведения о коде товара, покупателя, количестве заказанных товаров и цене товара, она изображена на рисунке 8 и на рисунке 9.

Рисунок 8 - Форма " Заказы"


Рисунок 9 - Форма " Заказы"

 


 

3.Разработка SQL – запросов

3.1 Общая характеристика языка SQL

Язык запросов SQL основан на операциях реляционной алгебры и, таким образом ориентирован на работу с множествами (отношениями), а не с отдельными записями. Как и в реляционной алгебре, операндами языка являются отношения (таблицы), результатами выполнения операции также являются отношения (таблицы). Таким образом, язык SQL предназначен для выполнения операций над таблицами, причем как над таблицами в целом (создание, удаление, изменение структуры), так и над данными таблиц (выборка, изменение, добавление и удаление). Отметим, что в явном виде язык SQL не является универсальным языком программирования в обычном понимании. В нем отсутствуют операторы условного перехода, организации циклов, позволяющие управлять ходом выполнения программы. Поэтому язык SQLотносится к классу непроцедурных языков программирования. Это именно язык запросов к базе данных, который служит исключительно для организации базы данных и работы с ней. Как уже отмечалось выше, для разработки прикладных программ необходимо использовать другие базовые средства программирования, в который операторы языка SQL будут встраиваться. Языку SQL посвящено большое количество литературы, в том числе и учебников. Подробное изучение языка SQL не входит в задачи настоящего курса, это может занимать отдельный курс. Заметим, что этому языку посвящено большое количество литературы, в том числе и учебников. В связи с этим, здесь будут изложены только общие сведения о языке, как фундаментальном инструменте работы с базами данных.

3.2 Обзор основных операторов языка SQL

Операторы SQL делятся на:

операторы определения данных (Data Definition Language, DDL):

CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),

ALTER изменяет объект,

DROP удаляет объект;

операторы манипуляции данными (Data Manipulation Language, DML):

SELECT выбирает данные, удовлетворяющие заданным условиям,

INSERT добавляет новые данные,

UPDATE изменяет существующие данные,

DELETE удаляет данные;

операторы определения доступа к данным (Data Control Language, DCL):

GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,

REVOKE отзывает ранее выданные разрешения,

DENY задает запрет, имеющий приоритет над разрешением;

операторы управления транзакциями (Transaction Control Language, TCL):

COMMIT применяет транзакцию,

ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,

SAVEPOINT делит транзакцию на более мелкие участки.

Создание SQL – запросов и запросы на выборку данных.

3.3 Создание SQL – запросов

Пусть у нас имеется некая база данных bd.mdb имеющая три таблицы products, ed_izmer, storage.


И мне необходимо составить запрос к базе на выборку всех продуктов из таблицы storage с подстановкой наименования продукта, единицы измерения, количества, цены и суммы.
Открываем базу в MS Access 2003 – 2007, переходим на вкладку Создание-> Конструктор запросов


и видим следующее окно.


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


Теперь создаем связи между таблицами, делается это перетаскивание соответствующего пункта из одной таблицы на соответствующий пункт другой таблицы. В нашем случае мы перетаскиваем поле id из ed_izmer на поле id_ed_izmer таблицы storage. Аналогично поле id из products на поле id_product таблицы storage.


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


 

Устанавливаем нужный вариант объединения и жмем OK. Делаем аналогичную операцию с другой связью.

 


Теперь переходим к нижней части конструктора запросов


И заполняем, как показано на рисунке


В первый столбец вводим имя таблицы -> products, поле product_name.
Во второй имя таблицы -> ed_izmer, поле ed_name.
В третий имя таблицы -> storage, поле quantity.
В четвертый имя таблицы -> storage, поле price.
В пятый столбец вводим формулу для вычисления суммы.
Формулы вводятся следующим образом: в начале идет имя поля (придумываем сами), затем двоеточие, а затем формула в виде [имя таблицы1].[имя поля]знак операции[имя таблицы2].[имя поля].

В нашем случае вводим следующую формулу:

сумма: [storage].[quantity]*[storage].[price]

на этом запрос готов жмем на крестик и сохраняем запрос.


Жмем на созданном запросе и проверяем работоспособность.


Если все работает, переходим в режим SQL, для этого нажимаем правой кнопкой мыши на вкладке Запрос1 и выбираем Режим SQL.


Копируем полученный запрос и вставляем его в поле SQL -> TStrings компонента ADOQuery в Delphi. Или используем программно:

ADOQuery.Active: =false;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT products.product_name, ed_izmer.ed_name, storage.quantity, storage.price, [storage].[quantity]*[storage].[price] AS сумма
FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product) ON ed_izmer.id=storage.id_ed_izmer; ');
ADOQuery.Active: =True;

Если запрос очень длинный то его можно разбить, например, так:

ADOQuery.SQL.Add('SELECT products.product_name, '+
' ed_izmer.ed_name, storage.quantity, storage.price, '+
' [storage].[quantity]*[storage].[price] AS сумма'+
' FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product)'+
' ON ed_izmer.id=storage.id_ed_izmer; ');
Либо использовать ADOQuery.SQL.Add('части запроса') несколько раз.

Можно делать и обратное преобразование запроса SQL. Берем готовый SQL запрос, копируем его в конструктор запросов MS Access в режиме SQL, затем переключаемся в режим конструктора и изучаем какие таблицы, поля, связи, выражения входят в запрос. Если надо, то вносим изменения.

Ну и на последок немножко о синтаксисе запроса:

Слово select в запросе означает создание выборки. Эта команда имеет вот такой синтаксис:
select [список полей] from [список таблиц и их соединения]
Поля в списке полей перечисляются через запятую.
Синтаксис описания поля такой:
[Имя таблицы].[Имя поля] AS [Имя поля в выборке]
После последнего поля из списка запятая не ставиться.

 

3.3.1. Запросы на выборку данных

Запрос на выборку

В окне «Запрос: запрос на выборку» с помощью инструментов формируем query:

1. Выбрать таблицу – источник, из которой производится выборка записей.

2. Переместить имена полей с источника в Бланк запроса. Например, из таблицы Группы студентов отбуксировать поле Название в первое поле Бланка запросов, из таблицы Студенты отбуксировать поле Фамилии во второе поле Бланка запросов, а из таблицы Успеваемость отбуксировать поле Оценка в третье поле и из таблицы Дисциплины отбуксировать поле Название в четвертое поле Бланка запросов.

3. Задать принцип сортировки. Курсор мыши переместить в строку Сортировка для любого поля, появится кнопка открытия списка режимов сортировки: по возрастанию и по убыванию. Например, установить в поле Фамилия режим сортировки – по возрастанию.

4. В строке вывод на экран автоматически устанавливается флажок просмотра найденной информации в поле.

5. В строке " Условия" отбора и строке " Или" необходимо ввести условия ограниченного поиска – критерии поиска. Например, в поле Оценка ввести - " отл/A", т.е. отображать все фамилии студентов, которые получили оценки отл/A.

6. После завершения формирования запроса закрыть окно Запрос на выборку. Откроется окно диалога Сохранить – ответить Да (ввести имя созданного запроса, например, Образец запроса в режиме Конструктор) и щелкнуть ОК и вернуться в окно базы данных.


Рис. 3.

Чтобы открыть query из окна базы данных, необходимо выделить имя запроса и щелкнуть кнопку Открыть, на экране появится окно запрос на выборку с требуемым именем.


Рис. 4.

Чтобы внести изменения в query его необходимо выбрать щелчком мыши в окне базы данных, выполнить щелчок по кнопке Конструктор, внести изменения. Сохранить запрос, повторить его выполнение.

Параметрические запросы

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

Последовательность создания параметрического запроса:

1. Создать query в режиме конструктора или открыть существующий запрос в режиме конструктора, например «Образец запроса в режиме Конструктор».

2. В Бланк запроса в строке Условия отбора ввести условие отбора в виде приглашения в квадратных скобках, например [Введите фамилию].

3. Закрыть окно Запрос на выборку, на вопрос о сохранении изменения ответить – Да. Вернуться в окно базы данных, где созданный query будет выделен.

4. Выполнить query, щелкнув по кнопке: Открыть. В появившемся на экране окне диалога «Введите значение параметра» надо ввести, например фамилию студента, информацию об успеваемости которого необходимо получить, выполнить щелчок по кнопке ОК.

 

3.3.3. Многотабличные запросы

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


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-06-05; Просмотров: 2185; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.133 с.)
Главная | Случайная страница | Обратная связь