МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Тамбовский государственный технический университет» (ФГБОУ ВО «ТГТУ») УЧЕБНОЕ ПОСОБИЕ Основы проектирования баз данных. Практические работы. для специальности СПО 09.02.04 Информационные системы (по отраслям) Составитель: Преподаватель Мосягина Надежда Геннадьевна Тамбов 2020 7 семестр Номер раздела Тема практического занятия Форма проведения занятия / Форма текущего контроля 1 2 3 Раздел 1. Практическое занятие 1 (ПР1) Практикум/Устный Тема 2 Построение ERмодели ответ предметной области. Раздел 1. Практическое занятие 2 (ПР2) Практикум/Устный Тема 5 Нормализация отношений ответ Раздел 1. Практическое занятие 3 (ПР3) Практикум/Устный Тема 6 Использование операций ответ реляционной алгебры Раздел 2. Практическое занятие 4 (ПР4) Практикум/Устный Тема 3 Создание таблиц в MS Access. ответ Раздел 2. Практическое занятие 5 (ПР5) Практикум/Устный Тема 4. Проектирование экранных форм в ответ MS Access. Раздел 2. Практическое занятие 6 (ПР6) Практикум/Устный Тема 5. Сортировка, поиск и фильтрация ответ данных в MS Access. Раздел 2. Практическое занятие 7 (ПР7) Практикум/Устный Тема 6. Создание и редактирование отчетов в ответ MS Access.. Раздел 2. Практическое занятие 8 (ПР8). Практикум/Устный Тема 7. Создание запросов на выборку в ответ MS Access. Раздел 2. Практическое занятие 9 (ПР9). Практикум/Устный Тема 7. Создание запросов на изменение в ответ MS Access. Раздел 2. Практическое занятие 10 (ПР10) Практикум/Устный Тема 9. Создание макроопределений в MS ответ Access. 8 семестр Номер раздела 1 Раздел 3. Тема 2. Раздел 3. Тема 3. Раздел 3. Тема 4. Тема практического занятия Форма проведения занятия / Форма текущего контроля 2 3 Практическое занятие 12 (ПР12) Практикум/Устный Создание запросов на языке SQL ответ Практическое занятие 13 (ПР13) Практикум/Устный Вычисления внутри SELECT. ответ Практическое занятие 14 (ПР14) Практикум/Устный Использование переменных на ответ языке SQL. Раздел 3. Практическое занятие 15 (ПР15) Практикум/Устный Тема 4. Встроенные функции языка SQL. ответ Работа со связанными таблицами. Раздел 3. Практическое занятие 16 (ПР16) Практикум/Устный Тема 5. Администрирование баз данных. ответ Активные и интерактивные формы проведения занятий 4 Анализ конкретных ситуаций Не предусмотрено Не предусмотрено Не предусмотрено Не предусмотрено Не предусмотрено Не предусмотрено Анализ конкретных ситуаций Не предусмотрено Не предусмотрено Активные и интерактивные формы проведения занятий 4 Не предусмотрено Не предусмотрено Не предусмотрено Не предусмотрено Не предусмотрено Практическая работа 1 Тема: «Построение ER- модели предметной области.» Цель работы: получить практические навыки построения ER- модели предметной области. Материально-техническое обеспечение: OC Windows, MS Office Порядок выполнения работы Разработка логической модели методом «сущность-связь» (ERметодом) предусматривает выполнение следующих шагов: 1. построение ER-диаграммы, включающей все сущности и связи, важные с точки зрения интересов предметной области; 2. анализ связей и определение их характеристик – степени связи, мощности и класса принадлежности; 3. построение набора предварительных отношений с указанием предполагаемого первичного ключа для каждого отношения; 4. подготовка списка всех неключевых атрибутов и назначение каждого из этих атрибутов одному из предварительных отношений; 5. проверка нахождения всех полученных отношений в нормальной форме Бойса-Кодда; 6. построение модели данных. Задание для заданной предметной области должен быть определен состав реляционных таблиц и логические связи между таблицами. Для каждого атрибута должны быть заданы тип и размер данных, ограничения целостности. Для каждой таблицы – первичный ключ, потенциальные ключи и внешние ключи. При выполнении практической работы необходимо: для своего варианта, соответствующего определенной предметной области, построить логическую модель данных в соответствии со стандартом IDEF1X; построить физическую модель; составить отчет по практической работе. Пример выполнения работы Особенности диалекта SQL в СУБД MySQL рассмотрим на примере учебной базы данных book Интернет-магазина, торгующего компьютерной литературой. В базе данных должна поддерживаться следующая информация: тематические каталоги, по которым сгруппированы книги; предлагаемые книги (название, автор, год издания, цена, имеющееся на складе количество); зарегистрированные покупатели (имя, отчество, фамилия, телефон, адрес электронной почты, статус – авторизованный, неавторизованный, заблокированный, активный с хорошей кредитной историей); покупки, совершенные в магазине (время совершения покупки, число приобретенных экземпляров книги). Логическая модель данных предметной области в стандарте IDEF1Xпредставлена на рис. 1. Выделены сущностиКАТАЛОГ, КНИГА, КЛИЕНТ, ЗАКАЗ, между которыми установлены неидентифицирующие связи мощностьюoдин-ко-многим, определенные спецификой предметной области. Рис. 1. Логическая модель данных предметной области Физическая модель данных предметной области в стандарте IDEF1X для целевой СУБД MySQL представлена на рис. 2. Рис. 2. Физическая модель предметной области База данных book состоит из четырех таблиц: catalogs – список торговых каталогов; books – список предлагаемых книг; users – список зарегистрированных пользователей магазина; orders – список заказов (осуществленных сделок). Таблица catalogs состоит из двух полей: cat_ID – уникальный код каталога; cat_name – имя каталога. Оба поля должны быть снабжены атрибутом not null, поскольку неопределенное значение для них недопустимо. Таблица books состоит из семи полей: book_ID – уникальный код книги; b_name – название книги; b_author – автор книги; b_year – год издания; b_price – цена книги; b_count – количество книг на складе; b_cat_ID – код каталога из таблицы catalogs. Цена книги b_price и количество экземпляров на складе b_count могут иметь атрибут null. На момент доставки часто неизвестны количество товара и его цена, но отразить факт наличия товара в прайс-листе необходимо. Поле b_cat_ID устанавливает связь между таблицами catalogs и books. Это поле должно быть объявлено как внешний ключ (FK) с правилом каскадного удаления и обновления. Обновление таблицы catalogs вызовет автоматическое обновление таблицы books. Удаление каталога в таблице catalogs приведет к автоматическому удалению всех записей в таблице books, соответствующих каталогу. Таблица users состоит из семи полей: user_ID – уникальный код покупателя; u_name – имя покупателя; u_patronymic – отчество покупателя; u_surname – фамилия покупателя; u_phone – телефон покупателя (если имеется); u_email – e-mail покупателя (если имеется); u_status – статус покупателя. Статус покупателя представлен полем типа enum, которое может принимать одно из четырех значений: active – авторизованный покупатель, который может осуществлять покупки через Интернет; passive – неавторизованный покупатель (значение по умолчанию), который осуществил процедуру регистрации, но не подтвердил ее и пока не может осуществлять покупки через Интернет, однако ему доступны каталоги для просмотра; lock – заблокированный покупатель, не может осуществлять покупки и просматривать каталоги магазина; gold – активный покупатель с хорошей кредитной историей, которому предоставляется скидка при следующих покупках в магазине. Поля u_phone и u_email могут быть снабжены атрибутом null. Остальные поля должны получить атрибут not null. Таблица orders включает пять полей: order_ID – уникальный номер сделки; o_user_ID – номер пользователя из таблицы users; o_book_ID – номер товарной позиции из таблицы books; o_time – время совершения сделки; o_number – число приобретенных товаров. Поля таблицы orders должны быть снабжены атрибутом not null, т. к. при совершении покупки вся информация должна быть занесена в таблицу. В таблице orders устанавливается связь с таблицами users (за счет поля o_user_id) и books (за счет поля o_book_id). Эти поля объявлены как внешние ключи (FK) с правилом каскадного удаления и обновления. Обновление таблиц users и books приведет к автоматическому обновлению таблицы orders. Удаление любого пользователя в таблице users приведет к автоматическому удалению всех записей в таблице orders, соответствующих этому пользователю. Содержание отчета: 1. Название, цель, содержание ПР. 2. ER- модель БД, ее описание. 3. Физическая модель БД, ее описание 4. Выводы по работе Контрольные вопросы: 1.Дать определение базы данных, первичного ключа, индекса. 2. Перечислить основные виды моделей БД 3. Понятие семантического моделирования. 4. Типы связей. 5. Этапы проектирования БД с помощью метода ER-диаграмм ». 6. Как задать отношение «один– ко – многим» / «многие – ко – многим» между двумя таблицами? Практическая работа 2 Тема: «Нормализация отношений» Цель работы: Ознакомление с методами нормализации реляционных БД. Материально-техническое обеспечение: OC Windows, MS Office Порядок выполнения работы Общая методика нормализации БД Одной из проблем разработки БД является проблема группировки данных в БД. Существует много способов группировки элементов данных; одни из них лучше, другие — хуже, а третьи могут привести к сложным проблемам. Большинство БД непрерывно изменяется. Добавляются новые элементы данных, между ними устанавливаются новые связи и определяются новые способы их использования. При изменении БД необходимо сохранять старое представление пользователя о данных для того, чтобы избежать необходимости переписывать старые программы заново. Однако возможны и такие изменения связей между данными, которые требуют модификации программ. Например, иногда оказывается необходимым расщепить запись или сегмент на две части, или же изменить ключ некоторых элементов. Изменения такого рода являются крайне нежелательными, т.к. могут привести к разрушению структуры БД. В то же время такие разрушения можно сделать маловероятными, если группировка элементов данных и их ключи первоначально были хорошо продуманы. Рассматриваемая методика рациональной группировки элементов данных, называемая нормализацией БД, является наиболее распространенной основой разработки структур БД, минимизирующей вероятность их разрушения. Нормализация — это формальный аппарат ограничений на формирование таблиц, устраняющий дублирование, обеспечивающий непротиворечивость хранимых данных и уменьшающий трудозатраты на ведение БД. Процесс нормализации заключается в разложении (декомпозиции) исходных отношений БД на более простые. При этом на каждой ступени этого процесса схемы отношений приводятся к нормальным формам. Для каждой ступени нормализации имеются наборы ограничений, которым должны удовлетворять отношения БД. Процесс нормализации имеет своей целью устранение избыточности данных и заключается в последовательном приведении БД к третьей нормальной форме (ЗНФ). Первая нормальная форма (1НФ) требует, чтобы каждое поле таблицы БД было неделимым и не содержало повторяющихся групп. Неделимость поля означает, что содержащиеся в нем значения не должны делиться на более мелкие поля. Например, если в поле «Подразделение» содержится название факультета и название кафедры, требование неделимости не соблюдается и необходимо выделить название факультета или кафедры в отдельное поле; поле, содержащее Фамилию, имя и отчество, следует разделить на три поля — отдельно для фамилии, имени и отчества и т.д. Повторяющимися являются поля, содержащие одинаковые по смыслу значения, например, если требуется получить статистику продаж четырех товаров по месяцам, можно создать поля для хранения данных о продаже по каждому товару (Таблица 1). Таблица1. Статистика продаж Год Месяц Товар 1 Товар 2 Товар 3 Товар 4 Однако такой подход не годится, если количество товаров заранее не известно. Повторяющиеся группы следует устранить, сохранив в таблице единственное поле «Товар» (Таблица 2.) В результате получим запись, содержащую информацию о статистике продаж по одному товару, но этот товар может быть любым: для 4 товаров будем иметь 4 записи, для 104 товаров — 104 записи и т д. Таблица 2. Статистика продаж Год Месяц Товар Рассмотрим пример приведения БД к 1НФ. Пусть необходимо автоматизировать процесс отпуска товаров со склада по накладной, примерный вид которой показан в Таблице 3. Таблица 3. Накладная Накладная 123 Дата Покупатель Адрес 10.01.10 ООО «Кормилец» г. Иркутск, ул. Трактовая, 20 Отпущенный товар Количество Ед. измерения Тушенка Сахар Макароны 10000 200 1000 Банки кг кг Цена Общая стоимость 700 500 300 7000000 100000 300000 Итого 7400000 Сведем имеющиеся данные в одну таблицу. Приводя ее к 1НФ, учтем, что впоследствии будет необходимо производить анализ продаж по городам. Поэтому из поля «Адрес» (допускающего толкование как делимого поля) выделим часть данных (город) в отдельное поле «Город». Известно, что каждый покупатель может закупить в один день различное количество товаров, однако, чтобы не создавать повторяющихся групп, фиксируем факт отпуска каждого товара в отдельной записи. В результате получим таблицу, показанную в Таблице 4. Вторая нормальная форма (2НФ) требует, чтобы все поля таблицы зависели от первичного ключа, т.е. чтобы первичный ключ однозначно определял запись и не был избыточен. Поля, которые зависят только от части первичного ключа, должны быть выделены в отдельные таблицы. Таблица 4. Отпуск товаров со склада Дата Покупатель Город Адрес Товар Ед_измерения Цена_за_ед_измерения Отпущено_ед Общая_стоимость №_накладной Для приведения к 2НФ выделим поля, которые входят в первичный ключ. Дата накладной и номер накладной по отдельности не могут уникально определять запись, поскольку они будут одинаковы для всех записей, относящихся к одной и той же накладной (напомним, что одна накладная в Таблице 9.4 представляется несколькими записями). Поэтому введем в первичный ключ поле «Товар». При этом исходим из предположения, что по одной накладной может быть отпущено одно наименование конкретного товара, т.е. не может быть ситуации, когда отпуск одного и того же товара оформляется в накладной двумя строками, что повлекло бы за собой две одинаковые записи в таблице «Отпуск товаров со склада». Таблица 5. Отпуск товаров со склада Дата Покупатель Товар №_накладной Город Адрес Ед_измерения Цена_за_ед_измерения Отпущено_ед Общая_стоимость В таблице 5. показана структура таблицы после выделения полей сцепленного первичного ключа (эти поля отчеркнуты от прочих полей линией и располагаются в верхней части структуры таблицы). Созданный нами первичный ключ является избыточным: поле «№ накладной» однозначно определяет дату и покупателя. Для данной накладной не может быть никакой иной даты и никакого иного покупателя. Поле «Товар» в комбинации с № накладной, напротив, однозначно идентифицирует запись. После устранения избыточности первичного ключа получаем Таблицу 6. Таблица 6. Отпуск товаров со склада Товар №_накладной Дата Покупатель Город Адрес Ед_измерения Цена_за_ед_измерения Отпущено_ед Общая_стоимость Первое требование 2НФ выполнено, чего не скажешь о втором, гласящем, что значения всех полей записи должны однозначно зависеть от совокупного значения первичного ключа и не должна иметь место ситуация, когда некоторые поля зависят от части первичного ключа. В Таблице 9.6 поля «Единица измерения», «Цена за единицу измерения» зависят от значения поля «Товар», входящего в первичный ключ. Поэтому выделяем эти поля в самостоятельную таблицу «Товары» и определяем связь: поскольку один товар может присутствовать во многих накладных, таблицы «Товары» и «Отпуск товаров со склада» находятся в связи 1:М (рис. 1). Рис. 1 Можно заметить, что теперь значение поля «Покупатель» никоим образом не зависит от пары значений «№ накладной», «Товар», а «зависит только от значения поля «№ накладной». Поэтому данное поле и зависящие от его значения поля «Город», «Адрес» выделяем в таблицу «Покупатели». Анализируя далее структуру таблицы «Отпуск товаров со склада», обнаруживаем, что одно из оставшихся полей — «Дата» — зависит только от значения поля «№ накладной». Поэтому выделяем дату и номер накладной в самостоятельную таблицу «Накладные» (рис. 9.2). Рис. 9.2. Установим связи между таблицами. Один покупатель может встречаться во многих накладных. Поэтому между таблицами «Покупатели» и «Накладные» имеется связь 1:М по полю «Покупатель». Одной накладной может соответствовать несколько товаров. Поэтому между таблицами «Накладные» и «Отпуск товаров со склада» имеется связь 1:М по полю «№ накладной» (рис. 3). Обратите внимание, что в реляционной БД таблицы могут быть связаны только по одноименным полям, поэтому при выделении новых таблиц в них добавляют поля, по которым осуществляется связь с другими таблицами БД. Рис. 3. БД во 2-й нормальной форме Третья нормальная форма (ЗНФ) требует, чтобы в таблице не имелось транзитивных зависимостей между неключевыми полями, т.е. чтобы значение любого поля, не входящего в первичный ключ, не зависело от значения другого поля, также не входящего в первичный ключ. В рассматриваемом примере можно увидеть, что в таблице «Отпуск товаров со склада» имеется зависимость значения поля «Общая стоимость» от значения поля количество т. е. «Отпущено_ед». По условию примера значение поля «Общая стоимость» может вычисляться как значение поля «Отпущено_ед», умноженное на значение поля «Цена за единицу измерения» из таблицы «Товары» (из записи с таким же значением поля «Товар»). Поэтому поле «Общая стоимость» из таблицы «Отпуск товаров со склада» удаляем. Однако в случае, если «Цена за единицу измерения» зависит от количества отпущенного товара, что особенно распространено в наше рыночное время, следует создать отдельную таблицу, отображающую зависимость цены от количества отпущенного товара, после чего будет получена БД в 3НФ. Замечание. В таблице «Покупатели» значение поля «Адрес» зависит от значения поля «Город», поскольку в разных городах могут оказаться улицы с одинаковыми названиями и, соответственно, дома с одинаковыми номерами (вспомним известный кинофильм «Ирония судьбы, или с легким паром»). Однако такой зависимостью можно пренебречь, поскольку поле «Адрес» в нашем случае носит чисто информационный характер и не должно входить в условия запросов самостоятельно. Вообще говоря, на практике не всегда возможно получить идеально нормализованную БД, да и не всегда это необходимо, т. е. бывает достаточно 2-й нормальной формы. Порядок выполнения работы 1. На основании приведенных данных в Таблице 9.7 необходимо получить БД в 1НФ. Таблица 7 2. Преобразовать схему БД в 1НФ ко 2НФ. 3. Преобразовать схему БД во 2НФ к 3НФ. 4. Результаты работы по всем этапам отобразите в отчете. 5. Приведение БД к более высоким нормальным формам. Содержание отчета: 1. Название, цель, содержание ПР. 2. Схема БД в 1НФ 3. Схема БД в 2НФ 4. Схема БД в 3НФ 5. Выводы по работе Контрольные вопросы: 1. Объясните смысл терминов: Нормализация. Избыточность данных. Аномалия обновления. Аномалия ввода. Атомарное значение. Нормальная форма Бойса-Кодда. 2. В каком случае БД находится в 1НФ? 3. В каком случае БД находится в 2НФ? 4. В каком случае БД находится в 3НФ? 5. Объясните, почему нежелательны таблицы, не подчиняющиеся второй или третьей нормальной форме. Практическая работа 3 Тема: «Использование операций реляционной алгебры» Цель работы: Ознакомление с операциями реляционной алгебры в реляционных БД. Материально-техническое обеспечение: OC Windows, MS Office Порядок выполнения работы Выполнить теоретико- множественные операции реляционной алгебры, результаты записать в отчет: Задание 1 Книги Код Фамилия Имя Отчество Название Лев Николаевич Война и мир 2004 550 2012 230 101 Толстой 102 Лермонтов Михаил Юрьевич 103 Толстой Алексей Николаевич Петр I 104 Пушкин Александр Сергеевич Герой нашего времени Стихи Год Количество страниц 2013 450 1991 300 Книги1 Код Фамилия Имя Отчество Лев Николаевич Война и мир 101 Толстой 102 Лермонтов Михаил Юрьевич Издательства Код Издательство Название Герой нашего времени Год Количество страниц 2014 700 2012 230 101 Мир 102 Мир Имя Отчество Название 103 Текст Лев Николаевич Война и мир 104 Русская литература Таблиа1 1. ФР=proj[Фамилия](Книги) 2. ФР=КнигиКниги1 3. ФР=Книги-Книги1 4. ФР=КнигиТаблица1 5. ФР=Книги><Издательства 6. ФР=Книги1Таблица1 7. ФР=sel[Фамилия=”Толстой” или Название=”Стихи”](Книги) 8. ФР=sel[Издательство=”Мир” и Код>102](Издательства) 9. Составить выражения для получения названий издательств, выпустивших книги с кодом 101,102 Задание 2 Товары Код Категория Наименование ФирмаГод товара изготовитель выпуска 101 Телефон Nokia 106 Nokia 2013 102 Телефон Samsung GTS5610 Samsung 2014 103 Телевизор Samsung Samsung UE32 Телевизор LG 42LA643V LG 2014 104 2013 Товары1 Код Категория Наименование ФирмаГод товара изготовитель выпуска 104 Телевизор LG 42LA643V LG 2013 105 Смартфон Acer Liquid E1 Acer Duo 2014 Цены Код Магазин Цена 101 М-Видео 1090 Таблица1 102 Эльдорадо 4499 Код1 Магазин1 Цена1 103 Эльдорадо 23000 106 REAL 2000 104 М-Видео 19990 105 РЕТ 5500 1. ФР=proj[Категория товара](Товары) 2. ФР=ТоварыТовары1 3. ФР=Книги-Цены 4. ФР=Цены×Таблица1 5. ФР=Товары><Цены 6. ФР=ТоварыТовары1 7. ФР=sel[Категория товара=”Телефон” или Фирма-изготовитель=” Samsung ”](Товары) 8. ФР=sel[Год выпуска>2013 и Категория товара=”Телевизор”]( Товары) 9. Составить выражения для получения наименований телевизоров, продаваемых магазином Эльдорадо. Содержание отчета 1. Название, цель, содержание ПР. 2. Результаты выполнения операций реляционной алгебры 3. Выводы по работе Контрольные вопросы: 1. Что такое «целостность сущностей»? 2. Что такое «целостность по ссылкам»? 3. Что такое внешний ключ? 4. Основные подходы соблюдения целостности по ссылкам. 5. Теоретико-множественных операций реляционных БД. 6. Реляционные операции БД. 7. Операция объединения двух отношений 8. Операция пересечения двух отношений 9. Операция разности двух отношений 10.Операция прямого произведения двух отношений 11.Операция ограничения отношения по некоторому условию 12.Операция проекции отношения на заданный набор его атрибутов 13.Операция соединения двух отношений по некоторому условию 14.Операция реляционного деления 15.Операция переименования Практическая работа 4 Тема: «Создание таблиц в MS Access» Цель работы: Изучение принципов построения баз данных, создания и изменения таблиц, сортировки, поиска фильтрации данных на примере СУБД MS Access Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1. Создайте таблицы Производители, Техника, Продажа, Поставщики в соответствии с темой расчетно-графического задания, используя режим конструктора. Таблицу Покупатели создайте в режиме Мастера таблиц. 2. Назначьте ключевые поля. Определите внешние ключи. 3. Установите связи между таблицами согласно предложенной логической модели базы данных, используя пункты меню Сервис-Схема данных 4. Заполните таблицы произвольными данными (Для таблицы Техника-10 записей, для таблицы Производители-5 записей, для таблицы Продажа15 записей, для таблицы Покупатели-7 записей) 5. Ознакомьтесь с возможностью изменения структуры таблицы: 5.1.Добавление полей - с помощью контекстного меню - с помощью пунктов меню Вставка - путем добавления названия поля в раздел Имя поля окна Конструктора таблиц 5.2.Удаление полей - с помощью контекстного меню - с помощью пунктов меню Правка - с помощью клавиши Del 5.3. Переименования полей 5.4. Перемещения полей 5.5. Изменения типов данных 6. Для полей таблицы Техника установите свойства в разделе Свойства поля: - размер поля-100 символов (для поля Название); - маска ввода (для поля Дата); - условие на значение >1(для поля Срок гарантии); - сообщение об ошибке «Срок гарантии не может быть меньше 1 месяца» (для поля Срок гарантии); - значение по умолчанию 0 (Для поля количество); - индексированное поле (для поля Модель). 7. Произведите сортировку данных по полю Название, поиск данных по полю Модель, фильтрацию данных по полю Модель в связанных таблицах. 8. Создайте таблицы Анкета (№ студента, ФИО, Адрес, Номер телефона) и Ведомость (№ студента, Названия предметов). Заполните таблицы (5 записей), установите связи между ними. 9. Оформите отчет по работе Содержание отчета 1. Название, цель, содержание ПР. 2. Описание технологии выполнения заданий 3. Результаты выполнения заданий 4. Выводы по работе Контрольные вопросы: 1. Дать определение Базы данных. 2. Понятие поля и записи. 3. Понятие реляции. 4. Реляционные, иерархические и сетевые модели данных. 5. Что такое ключевое поле? Как выбрать ключевое поле? 6. Типы данных Access.Основные свойства полей Access. 7. Правила построения отношений между таблицами. 8. Как произвести сортировку, поиск, фильтрацию данных в таблицах? Практическая работа 5 Тема: «Проектирование экранных форм в MS Access.» Цель работы: научиться создавать и редактировать формы, использовать их для заполнения и работы с записями базы данных, создавать и применять макроопределения. Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1.Создайте форму данных в режиме Мастера форм на основе таблиц «Анкета» и «Ведомость» (п/р №1). 2. Добавьте кнопки для работы с записями, используя мастер кнопок 2.1. Перейдите в режим конструктора форм 2.2. Включите значок Мастера кнопок на панели инструментов 2.3. Выберите категории Переходы по записям и Обработка записей, назначьте необходимые действия и выберите значки для кнопок. 3. Создайте кнопку для закрытия формы, используя Мастер кнопок аналогично п.2. 4.Создайте вычисляемое поле для подсчета суммы баллов по предметам. 5. В режиме конструктора форм добавьте поля для подсчета итоговых значений. 6. Модифицируйте формы в режиме конструктора (измените заливку, параметры шрифта, расположение элементов). 7. Оформите отчет по работе 8. Сделайте выводы Содержание отчета 1. Название, цель, содержание ПР. 2. Описание технологии выполнения заданий 3. Результаты выполнения заданий 4. Выводы по работе Контрольные вопросы: 1. Дать определение макроса 2. Для чего предназначена форма 3. Способы создания форм 4. Способы создания кнопок для работы с базой данных 5. Режим конструктора форм 6. Понятие Автоформа Практическая работа 6 Тема: «Сортировка, поиск и фильтрация данных в MS Access» Цель работы: Закрепить полученные на лекциях знания по сортировке, поиску, фильтрации данных. Ознакомиться со способами сортировки, поиска, фильтрации данных. Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1. Создайте таблицу согласно заданию в режиме конструктора Номер Товар Вес Поставщик 1 Сахар 120 Москва 2 Мука 300 Москва 3 Рис 150 Воронеж 4 Гречка 100 Липецк 5 Мука 200 Липецк 2. Осуществление операции сортировки данных по полю Товар и по полям Товар и поставщик одновременно. По умолчанию, когда таблица открывается в режиме Таблицы, она упорядочивается по значению ключевого поля. Если ключевое поле для таблицы не определено, записи выводятся в порядке их ввода в таблицу. Если нужно отсортировать записи по значению другого поля, достаточно установить курсор на любую строку соответствующего столбца и нажать одну из кнопок на панели инструментов: Сортировка по возрастанию (Sort Ascending) или Сортировка по убыванию (Sort Descending). Другой способ выполнения этой операции: щелкнуть правой кнопкой мыши по любой строке нужного столбца и выбрать из контекстного меню (рис. 2.55) соответствующую команду. Таким образом можно упорядочить записи по любому столбцу таблицы. Ограничения существуют только на тип данных, которые можно упорядочивать — нельзя сортировать значения полей типа MEMO, гиперссылки или объекты OLE. Чтобы правильно применять сортировку, нужно знать несколько простых правил. При сортировке в возрастающем порядке записи, содержащие пустые поля (с пустыми значениями), указываются в списке первыми. Числа, находящиеся в текстовых полях, сортируются как строки символов, а не как числовые значения. Если нужно отсортировать их в числовом порядке, все текстовые строки должны содержать одинаковое количество символов. Если строка содержит меньшее количество символов, то сначала нужно вставить незначащие нули. При сохранении таблицы сохраняется и порядок ее сортировки. базы данных (New database sort order) выбрать нужный язык (см. гл. 14). Совет Процесс сортировки значительно ускоряется, если предварительно по данному полю был построен индекс. Если вы изменили порядок сортировки записей в таблице, а потом решили ее закрыть, Access запрашивает, хотите ли вы сохранить изменения макета. Если вы ответите Да (Yes), то новый порядок сортировки сохранится и воспроизведется, когда таблица будет открыта в следующий раз. Для того чтобы вернуться к первоначальному порядку сортировки (по значению ключевого поля), необходимо выполнить команду меню Записи, Удалить фильтр (Records, Remove Filter/Sort). Иногда нужно выполнить сортировку по значению нескольких полей. Для этого переместите сначала сортируемые столбцы таким образом, чтобы они оказались, во-первых, рядом, а во-вторых, с учетом приоритетов, — приоритеты устанавливаются слева направо, т. к. первыми будут сортироваться значения в крайнем левом столбце. После этого нужно выделить все столбцы и нажать, соответственно, кнопку Сортировка по возрастанию (Sort Ascending) или Сортировка по убыванию (Sort Descending) на панели инструментов. 3. Осуществление операции поиска данных В режиме Таблицы предусмотрены возможности поиска данных по образцу либо в конкретном поле, либо во всей таблице. Чтобы найти необходимые данные, нужно: Открыть таблицу в режиме Таблицы. Если известно, в каком столбце нужно вести поиск, выделить этот столбец (достаточно поместить курсор в любое поле этого столбца). Нажать кнопку Найти (Find) на панели инструментов Режим таблицы (Table Datasheet) и открыть вкладку Поиск (Find) или выполнить команду меню Правка, Найти (Edit, Find). Появится диалоговое окно Поиск и замена (Find and Replace) Ввести значение, которое требуется найти, в поле Образец (Find What). Если точное значение неизвестно, можно использовать подстановочные знаки. Остальные параметры в окне можно изменить или оставить так, как они установлены по умолчанию: значение в поле со списком Поиск в (Look In), определяющее место поиска, по умолчанию содержит название выбранного столбца; значение в поле со списком Совпадение (Match) определяет один из трех вариантов совпадения образца со значением поля — С любой частью поля (Any Part of Field), Поля целиком (Whole Field), С начала поля (Start of Field); поле со списком Просмотр (Search), в котором можно задать направление поиска: Все (Аll), Вверх (Up), Вниз (Down); флажок С учетом регистра (Match Case) позволяет при поиске учитывать начертание букв — прописные или строчные; флажок С учетом формата полей (Search Fields As Formatted) позволяет выполнять поиск данных в указанном формате отображения. Чтобы найти первое вхождение указанного образца, нажмите кнопку Найти следующий (Find Next). Для поиска следующих вхождений этого значения нажимайте кнопку Найти далее (Find Next) до тех пор, пока не будет найдено нужное вхождение. - Для доступа к окну Поиск и замена (Find and Replace) можно использовать также команду меню Правка, Найти (Edit, Find). Из всех видов поиска самым медленным будет поиск по совпадению с любой частью поля, при этом не используется индекс, даже если поле, по которому выполняется поиск, проиндексировано. Чтобы выполнить поиск по всем столбцам таблицы, нужно из списка Поиск в (Look In) выбрать значение <Имя таблицы>: таблица. Чтобы выполнить не только поиск, но и изменение данных в найденном поле, необходимо в том же диалоговом окне Поиск и замена (Find and Replace) раскрыть вкладку Замена (Replace) и в поле Заменить на (Replace With) указать значение, на которое нужно заменить искомое значение. После этого нажмите кнопку Заменить (Replace) или Заменить все (Replace All). Все остальные поля имеют тот же смысл, что и на вкладке Поиск (Find). Для замены одного значения необходимо нажать кнопку Заменить (Replace). Чтобы заменить все вхождения, нажмите кнопку Заменить все (Replace All). Есть возможность установить параметры поиска/замены по умолчанию. Для этого необходимо: В меню Сервис (Tools) выбрать команду Параметры (Options). В окне Параметры (Options) открыть вкладку Правка и поиск (Edit/Find) В группе Поиск и замена по умолчанию (Default find/replace behavior) выбрать нужный тип поиска: поле - целиком (Fast search), везде - любая часть (General search), поле - с начала (Start of field search). Нажать кнопку ОК. 3.Осуществление операции фильтрации данных 1. Откройте таблицу "Заказы" в режиме Таблицы. 2. Выделите в столбце "Клиент" какое-нибудь значение, например Ernst Handel. 3. Нажмите кнопку Фильтр по выделенному (Filter by Selection) на панели инструментов. Чтобы отменить фильтр, необходимо нажать на кнопку Удалить фильтр (Remove Filter) на панели инструментов Режим таблицы (Table Datasheet) или воспользоваться одноименной командой контекстного меню. Access запоминает последний применяемый фильтр, поэтому если теперь нажать на кнопку Применение фильтра (Apply Filter) на панели инструментов, вновь будут отобраны те же записи. Кнопки Применение фильтра (Apply Filter) и Удалить фильтр (Remove Filter) являются по сути одной кнопкой, состояние (нажата, отжата) и подпись которой меняются в зависимости от того, установлен или нет фильтр для таблицы. Еще одним признаком, по которому можно узнать, что в таблице отображаются отфильтрованные записи, является слово ФЛТР (FLTR) в строке состояния окна приложения. Для того чтобы установить фильтр по выделенному фрагменту, можно воспользоваться также командой контекстного меню Фильтр по выделенному (Filter by Selection) или выбрать из меню Записи (Records) команду Фильтр, Фильтр по выделенному (Filter, Filter by Selection). Похожей возможностью фильтрации записей обладает поле Фильтр для (Filter For). Его можно использовать в том случае, когда не удается быстро найти образец отбора в столбце таблицы. Чтобы использовать возможности поля Фильтр для (Filter For), необходимо: 1. Открыть таблицу в режиме Таблицы. 2. Щелкнуть правой кнопкой мыши на поле, для которого нужно указать условие отбора, а затем ввести значение условия отбора в поле Фильтр для (Filter For) в контекстном меню. Чтобы применить фильтр и закрыть контекстное меню, нужно нажать клавишу <Enter>, а чтобы применить фильтр и оставить контекстное меню открытым — клавишу <Таb>. При этом можно вводить в поле Фильтр для (Filter For) новые значения и по нажатии клавиши <Таb> обновлять содержимое выборки. В поле Фильтр для (Filter For) можно указывать не только конкретные значения, но и выражения, требующие вычислений. Чтобы применить обычный фильтр, необходимо: 1. Открыть таблицу в режиме Таблицы (например, откройте таблицу "Заказы" (Orders)). 2. Нажать кнопку Изменить фильтр (Filter by Form) на панели инструментов Режим таблицы (Table Datasheet). Появится форма фильтр (Filter by form) — специальное окно для изменения фильтра. Форма содержит линейку полей таблицы. В любое из этих полей можно ввести или выбрать из списка значение, которое и будет являться условием отбора. Если условия ввести в несколько полей, они будут объединяться с помощью логического оператора И. Для того чтобы объединить условия по ИЛИ, нужно раскрыть другую вкладку формы, щелкнув по ярлычку Или в нижней части формы. Рис. 2.59. Окно изменения фильтра 3. Выберите, например, значение Ernst Handel из списка в поле Клиент (Customer) и дату 1.01.98 в поле Дата размещения. Добавьте значок > перед датой. При этих условиях Access будет отбирать все заказы для Ernst Handel, размещенные после 1 января 1998 года. 4. Щелкните мышью по ярлычку Или и раскройте вторую вкладку. 5. Выберите из списка в поле Клиент (Customer) значение. Alfreds Futterkiste, а в поле Дата размещения снова введите значение > 1.01.98. Теперь будут отбираться заказы двух клиентов: Ernst Handel и Alfreds Futterkiste, размещенные после 1 января 1998 года. 6. Нажмите кнопку Применение фильтра (Apply Filter) на панели инструментов. Результирующий набор записей показан на рис. 2.60. Условия отбора записей, которые вводятся в поля формы фильтр (Filter by Form), можно сохранить в базе данных в виде запроса. Для этого необходимо при открытой форме фильтр (Filter by Form) нажать кнопку Сохранить как запрос (Save As Query) на панели инструментов. Затем в диалоговом окне Сохранение в виде запроса (Save As Query) ввести имя запроса и нажать кнопку ОК. Когда потребуется повторить установку такого фильтра, нужно опять же при открытой форме фильтр (Filter by Form) нажать кнопку Загрузить из запроса (Load from Query) на панели инструментов. Создание расширенного фильтра, как более сложного, будет рассматриваться в гл. 4. Отобранные с помощью фильтра данные можно копировать, экспортировать и рассылать. Копирование данных из выборки осуществляется так же, как копирование данных в таблице. Экспорт данных из выборки позволяет сохранить их в отдельном файле. Чтобы экспортировать данные, необходимо: 1. Выбрать в меню Файл (File) команду Экспорт (Export). 2. В окне Экспорт объекта: Таблица <имя таблицы> в (Export Table <имя таблицы> to) выбрать папку для экспорта файла. 3. В поле Имя файла (File Name) ввести имя файла, в который осуществляется экспорт. 4. В поле Тип файла (Save as Type) выбрать тип файла, в который осуществляется экспорт. 5. Нажать кнопку Сохранить все (Export All). В отличие от обычного экспорта данных, рассылка позволяет сразу отправить результаты выборки по электронной почте разным адресатам для дальнейшего ознакомления с материалами, их анализа и т. п. Чтобы отослать результаты выборки, необходимо: 1. Выбрать в меню Файл (File) команду Отправить (Send To). 2. Из раскрывающегося меню выбрать пункт Почтовый клиент (Mail Recipient (as Attachment)). 3. В окне Послать (Send) выбрать тип файла. 4. Нажать кнопку ОК и далее выполнить стандартную процедуру для отправки почтового сообщения в своем почтовом клиенте. Содержание отчета: 1. Название, цель, содержание ПР. 2. Описание технологии сортировки данных. 3. Описание технологии фильтрации данных 4. Описание технологии поиска данных 5. Выводы по работе Контрольные вопросы 1. Как отсортировать данные поля? 2. Опишите технологию поиска данных? 3. Как применить Автофильтр к списку? 4. Как отменить результаты фильтрации? 5. Сколько условий можно наложить на один столбец с помощью команды Автофильтр? 6. Каков порядок применения Расширенного фильтра? 7. Как отменить результат применения Расширенного фильтра? 8. Как задать несколько условий для одного столбца списка с помощью расширенного фильтра? Практическая работа 7 Тема: «Создание и редактирование отчетов в MS Access.» Цель работы: Приобретение практических навыков создания отчетов в СУБД Access. Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1. Открыть БД созданную в работе №1. 2. Создание отчета с помощью функции “Автоотчет” по таблице Анкета. Создание автоотчета является средством создания отчета, в который выводятся все поля и записи из базовой таблицы или запроса. 2.1. В окне БД выберите вкладку Отчет. 2.2. Нажать кнопку Создать. 2.3. В диалоговом окне Новый отчет выберите одного из следующих мастеров: - автоотчет: в столбец – каждое поле образует отдельную строку с заголовком слева. Ленточный – поле каждой записи образуют отдельную сроку. Заголовки печатаются сверху на каждой странице. 2.4. Выберите таблицу или запрос, содержащие данные выводящиеся в отчет. 2.5. Нажать ОК. MS Access применяет последний автоформат, использованный для создания отчета. Если ранее не создавали отчет с помощью мастера или не использовали команду Автоформат из меню Формат, будет применен стандартный автоформат. 3. Создать отчет с помощью Мастера. 3.1. В окне Базы данных выбрать режим создания отчета с помощью мастера 3.2. В появившемся диалоговом окне выбрать таблицы Анкета и Ведомость и необходимые поля 3.3. Установить сортировку данных по возрастанию по полю Фамилия 3.4. Выбрать макет отчета 3.5. Установить Деловой стиль отчета 3.6. Зарисовать общий вид отчета в тетрадь (или приложить распечатку) 4. Выполнить п.3. для другого оформления отчета 5. Модифицировать один из отчетов в режиме конструктора (Изменить заголовок, цвет, формат, названия полей) 6. Создать вычисляемое поле для подсчета среднего балла по предметам 6.1. Выбрать элемент управления Поле из панели инструментов 6.2. Поместить его в область данных, дав заголовок Средний балл 6.3. В окне свойств в поле данные выбрать построитель выражений и ввести формулу 7. Подготовьте отчет для печати, используйте п. меню Файл/ Параметры страницы, Файл/ Предварительный просмотр 8. Оформите отчет по работе Содержание отчета 1. Название ПР, цель, содержание 2. Описание технологии создания отчета с помощью функции “Автоотчет” Описание технологии создания отчета с помощью Мастера. 3. Перечисление измененных параметров отчета в режиме конструктора 4. Формула для вычислений 5. Шаги для подготовки отчета к печати 6. Выводы по ПР. Контрольные вопросы 1. Понятие отчета 2. Как создать отчет с помощью мастера? 3. Как создать отчет в режиме конструктора? 4. Основные элементы панели инструментов. 5. Как создать вычисляемое поле? 6. Как подготовить отчет к печати? Практическая работа 8 Тема: «Создание запросов на выборку в MS Access» Цель работы: изучение способов создания запросов и работы с ними. Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1. Создание запросов на выборку 1.1.Открыть две связанные таблицы Анкета и ведомость, созданные в работе №1. 1.2.Создать простой запрос на основе двух таблиц (Использовать поля: Фамилия, Имя, Отчество, Группа, Предмет 1, 2, 3). Отсортировать данные в запросе по полю «Группа». 1) Создать запрос в режиме конструктора. 2) Добавить таблицы Анкета и Ведомость 3) Добавить поля: Фамилия, Имя, Отчество, Группа, Предмет 1, 2, 3 4) В строке Сортировка для поля Группа установить «по возрастанию» 5) Выполните запрос. 1.3. Создать параметрический запрос, который запрашивал бы пользователя о номере учащегося и показывал о нем полную информацию 1) Создать запрос в режиме конструктора. 2) Добавить таблицы Анкета и Ведоиость 3) Добавить все поля, кроме поля “Номер” таблицы Ведомость 4) Щелкнуть в поле “Номер” в строке “Условие”. 5) Введите [Введите номер]. 6) Отмените опцию вывода на экран для поля “Номер”. 7) Выполните запрос. 1.4.Создать запросы с условием Подготовить список «хорошистов» Подготовить список учащихся группы №22 1.5. Создайте вычисляемое поле в Запросе 1 (сумма балов) 1) Выберите Запрос 1 в режиме конструктора 2) Поместите курсор в пустое поле и введите выражение: Сумма баллов: [Предмет 1]+[Предмет 2]+[Предмет 3] 2. Создание групповых запросов. 2. 1. Вычислить сумму, max значение полей таблицы и число записей таблицы “Товары”. Номер Наименование товара Вес Поставщик 1 Сахар 120 Москва 2 Мука 300 Москва 3 Рис 150 Воронеж 4 Гречка 100 Липецк 5 Мука 200 Липецк 1) Выбрать Вид/ Групповые операции в конструкторе запросов. 2) Добавьте в запрос таблицу. 3) Дважды щелкните на поле “Наименование товара” в таблице. 4) Дважды щелкните на поле “Вес”. 5) Еще раз дважды щелкните на поле “Вес”. 6) В поле “Наименование товара” в строке “Групповая операция” выберите Count. 7) В поле “Вес” в строке “Групповая операция” выберите Sum. 8) В поле “Вес 2” в строке “Групповая операция” выберите Max. 9) Выполните запрос, зарисуйте в отчет. 2.2. Выполнение групповых операций для отдельной группы записей (Сгруппировать записи по товарам и выполнить счет по каждому типу). 1) Добавьте в таблицу “Товары” следующие записи: 2) Сахар 50 Воронеж 3) Мука 400 Липецк 4) Мука 500 Москва 5) Рис 100 Липецк 6) Сахар 200 Липец 7) Составьте новый запрос и добавьте строку “Групповая операция”. 8) Добавьте два поля таблицы (“Наименование товара”, “Вес”). 9) В поле “Наименование товара” выберите “Группировка”. 10) В поле “Вес” выберите (Count) Sam. 11) Выполните и зарисуйте результат запроса. 2.3. Определите критерий для поля группировка (Показать и группировать только 2 вида товара). 1) В строку “Условие отбора” запишите In [“Сахар”, “Рис”]. Содержание отчета 1. Название ПР, цель, содержание 2. Описание технологии создания запросов на выборку 3. Выводы по ПР. Контрольные вопросы 1. Понятие и способы создания простых запросов и запросов на выборку 2. Условные выражения 3. Простые запросы 4. Параметрические запросы 5. Вычисляемые поля в запросах Практическая работа 9 Тема: «Создание запросов на изменение в MS Access» Цель работы: изучение способов создания запросов на изменение и работы с ними. Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1. Перекрестные запросы. Создать запрос, который бы отображал товары - как заголовки строк, а города - как заголовки столбцов. В ячейках данные о суммарном весе товара конкретного поставщика. Наименование товара Москва Воронеж Липецк Сахар Мука Рис Гречка 1) Создайте новый запрос. 2) Добавьте поля “Наименование товара” и “Поставщик”. 3) Выберите команду “Запрос – Перекрестный”. 4) В появившейся строке Перекрестная таблица поля “Наименование товара” выберите “Заголовки строк”. 5) В строке “Перекрестная таблица” поля “Поставщик” выберите “Заголовки столбец”. 6) В строке “Перекрестная таблица” поля “Вес” выберите “Значение”. 7) В строке “Групповая операция” поля “Вес” выберите Sum . 2 Запрос на обновление для изменения значений. Измените вес всех товаров из Москвы на “0”. 1) Выполните запрос на выборку, поместив поля “Наименование товара”, “Вес”, “Поставщик”. В строке “Условие отбора” поставьте в поле “Поставщик” – Москва. 2) Преобразуйте запрос на выборку в запрос на обновление: Команда Запрос/ Обновление 3) В строке Обновление для поля “Вес” задайте “0” 4) Выполните запрос. 5) Просмотрите исходную таблицу 3 Запрос на создание таблицы. Создать таблицу с информацией о поставщике и наименовании товаров, имеющих вес >100. 1) Создайте запрос на выборку и выполните команду меню Запрос/ Создание таблицы. 2) Добавить имя таблице Товар_ New. 3) Выбрать нужные поля. 4) Поставить условие отбора. 5) Выполните запрос 4 Запрос на добавление записей. Добавить записи о товарах весом 100 кг. из таблицы “Товары” в таблицу “Товары_New” (производится аналогично п.3.2.). 5 Запрос удаление записей. Удалить запись с номером 1 и 2 из таблицы “Товары” (производится аналогично п.3.2.). 6.Запишите результаты работы в отчет Содержание отчета 1. Название ПР, цель, содержание 2. Описание технологии создания запросов на изменение 3. Выводы по ПР. Контрольные вопросы 1. Перечислить и охарактеризовать запросы на изменение 2. Чем отличается параметрический запрос от остальных видов запросов? 3. Групповые операции в запросах 4. Основные операторы, используемые при построении критериев отбора данных Практическая работа 10 Тема: «Создание макроопределений в MS Access.» Цель работы: изучение способов создания макроопределений и работы с ними. Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1. Составьте запросы на оценку 5, на оценки 4 и 5, на 3,4,5 и у кого есть хотя бы одна оценка 2 (по таблицам Анкета и Ведомость) 2. Составьте по ним отчеты 3. Запишите макросы, выводящие одновременно на экран результаты выполнения запросов и отчеты по запросам для каждого вида запросов. 3.1. В окне конструктора макросов в столбце Макрокоманда выберите команду Открыть Запрос 3.2. В области Аргументы ввести имя первого запроса 3.3. Во второй строке столбца Макрокоманды ввести команду для открытия Отчета 3.4. В области Аргументы ввести имя запроса 3.5. Сохранить макрос 3.6. Выполнить предыдущие операции для остальных запросов 4. На форму, созданную в работе №3 на основе таблиц «Анкета» и «Ведомость» добавьте командные кнопки “Отличники”, “Хорошисты”, “Троечники”, “Двоечники”в режиме конструктора. Для связи кнопки с макросом: 1) в режиме конструктора щелкнуть мышью по кнопке 2) щелкнуть по кнопке “Свойства” или выбрать соответственную команду 3) в поле Нажатие кнопки ввести имя макроса (для первой кнопки: Запросы Отл.) 4) аналогично для всех кнопок. 5. Оформите отчет по работе Содержание отчета 1. Название ПР, цель, содержание 2. Описание технологии создания макроопределений 3. Выводы по ПР. Контрольные вопросы 1. Дать определение макроса 2. Для чего предназначена форма 3. Охарактеризовать способы создания форм 4. Назвать способы создания кнопок для работы с базой данных 5. Составляющие окна конструктора макросов 6. Перечислить способы выполнения макросов 7. Как осуществить редактирование макросов? 8. Как осуществить редактирование форм? Практическая работа 11 Тема: «Создание запросов на языке SQL» Цель работы: изучение способов создания запросов на языке SQL Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы Разработка структуры таблицы 1. Создайте таблицы в соответствии с темой расчетно-графического задания, используя команду SQL CREATE TABLE, в соответствии с предложенной структурой таблицы назначьте ключевые поля. CREATE TABLE Анкета([№] integer, [Группа] text, [Фамилия] text NOT NULL, [Имя] text, [Отчество] text, [Адрес] text, [ДомашнийТелефон] text, [Дата рождения] date, CONSTRAINT [Индекс1] PRIMARY KEY ([№])); CREATE TABLE Ведомость([№] integer, [БазыДанных] integer, [АнглийскийЯзык] integer, [Физкультура] integer, CONSTRAINT [Индекс1] PRIMARY KEY ([№])); 2. В таблице Анкета создать индекс для поля Фамилия CREATE INDEX a ON Анкета (Фамилия); 3. Удалите таблицу Ведомость с помощью команды DROP 2. Создайте вновь таблицу Ведомость с помощью имеющегося запроса на создание таблицы 3. Заполните таблицы произвольными данными (10 записей) 4. Ознакомьтесь с возможностью изменения структуры таблицы: 1.1. Добавление полей. Добавить в таблицу поле Анкета ALTER TABLE Анкета ADD [Код] text; 6.2.Удаление полей. Удалите созданное поле Код ALTER TABLE Анкета DROP [Код] text; 7. Добавление записей. Добавьте две записи в таблицы Анкета и Ведомость по образцу INSERT INTO Анкета VALUES ("Значение поля1","Значение поля2",…,"Значение поляN"); 8. Изменение данных в таблице 8.1. Произведите замену фамилии учащегося с №1 UPDATE Анкета SET [Фамилия]="Семенов" WHERE [№]=1; 8.2. Заменить в таблице Анкета все неопределенные значения поля ДомашнийТелефон строкой " not defined". UPDATE Анкета SET [ДомашнийТелефон]="not defined" WHERE [ДомашнийТелефон] IS NULL; 9.Удалить записи с определенным номером из таблиц DELETE FROM Анкета WHERE [№] = 1; DELETE FROM Ведомость WHERE [№] ="1; 10.Произведите сортировку данных по полю Фамилия по возрастанию SELECT * FROM Анкета ORDER BY [Фамилия]; Затем по убыванию SELECT * FROM Анкета ORDER BY [Фамилия] DESC; Разработка запросов 1. Создать простой запрос, содержащий все поля таблицы Анкета SELECT * FROM Анкета; 2. Создать простой запрос, содержащий поля №, Фамилия, Имя, ДомашнийТелефон таблицы Анкета SELECT №,Фамилия,Имя, ДомашнийТелефон FROM Анкета; 3. Создать запросы на выборку 3.1. Показать все данные об учащихся с номером группы 21 SELECT * FROM Анкета WHERE Группа="22"; 3.2. Показать все данные об учащихся с порядковыми номерами с 3 по5 SELECT * FROM Анкета WHERE №>=3 and №<=5; 3.3. Показать все данные об учащихся с порядковыми номерами с 3 по5 c использованием оператора BETWEEN SELECT * FROM Анкета WHERE № Between 3 And 5; 3.4. Построить запрос с помощью логической операции проверки на вхождение в список: найти данные об учащихся с номерами 1, 3, 5 SELECT * FROM Анкета WHERE № In (1,3,5); 3.5. Построить запрос для поиска данных по части значения поля с использованием ключевое слово LIKE Найти данные об учащихся с фамилиями на букву «А» SELECT * FROM Анкета WHERE Фамилия Like "А*"; 3.6. Найти данные об учащихся с фамилиями, заканчивающимися на «ов» и номерами, большими 2. SELECT * FROM Анкета WHERE Фамилия Like "*ов" and №>2; 3.7. Построить параметрический запрос для вывода адреса учащихся по введенному фрагменту Фамилии SELECT Фамилия, Адрес FROM Анкета WHERE Фамилия Like [Введите фамилию]; 4. Использование операции сортировки данных в запросе Выбрать данные о №, Фамилии, Имени учащихся таблицы Анкета SELECT №, Фамилия, Имя FROM Анкета ORDER BY Фамилия; 5. Получить данные одновременно из двух таблиц Анкета и Ведомость SELECT Анкета.Фамилия, Анкета.Имя, Ведомость.БазыДанных, Ведомость.АнглийскийЯзык, Ведомость.Физкультура FROM Анкета,Ведомость; 6. Построить запрос на выборку данных на основе двух таблиц: показать фамилии учащихся на оцеку 5 по предмету Английский Язык SELECT Анкета.Фамилия, Анкета.Имя, Ведомость.БазыДанных, Ведомость.АнглийскийЯзык, Ведомость.Физкультура FROM Анкета,Ведомость where Ведомость.АнглийскийЯзык=5; 7. Групировка данных. Группировка данных в операторе SELECT осуществляется с помощью ключевого слова GROUP BY и ключевого слова HAVING, с помощью которого задаются условия разбиения записей на группы. GROUP BY неразрывно связано с агрегирующими функциями, без них оно практически не используется. GROUP BY разделяет таблицу на группы, а агрегирующая функция вычисляет для каждой из них итоговое значение. Получить данные о количестве учащихся в каждой группе SELECT Группа, Count(Группа) AS [Count-Группа] FROM Анкета GROUP BY Группа; 8. Использование условия Having Устраним из предыдущего запроса те группы, в которых имеют только одного обучающегося: SELECT Группа, Count(Группа) AS [Count-Группа] FROM Анкета GROUP BY Группа HAVING COUNT(*)<>1; 9. Операция объединения. В SQL предусмотрена возможность выполнения операции реляционной алгебры "ОБЪЕДИНЕНИЕ" (UNION) над отношениями, являющимися результатами оператора SELECT. 9.1. Построить таблицу Анкета1, добавить в нее 2 записи CREATE TABLE Анкета1([№] integer, [Группа] text, [Фамилия] text NOT NULL, [Имя] text, [Отчество] text, [Адрес] text, [ДомашнийТелефон] text, [Дата рождения] date, CONSTRAINT [Индекс1] PRIMARY KEY ([№])); 9.2. Осуществить операцию объединения таблиц SELECT №,Фамилия,Имя,Отчество FROM Анкета UNION SELECT №,Фамилия,Имя,Отчество FROM Анкета1; Содержание отчета 1. Название ПР, цель, содержание 2. Команды SQL для выполнения заданий 3. Выводы по ПР. Контрольные вопросы 1. Укажите операторы добавления и удаления записей из таблиц. 2. Назовите команду для модификации данных таблицы. 3. Охарактеризуйте параметры команды формирования структуры таблицы 4. Укажите операторы для изменения структуры базы данных. 5. Охарактеризуйте р инструкции SELECT. 6. Назовите операторы, входящие в условное выражение 7. Назовите параметры группировки 8. Каким образом производится сортировка данных? 9. Как осуществить операцию объединения таблиц? Практическая работа 12 Тема: «Вычисления внутри SELECT» Цель работы: изучение вычислительных операций SQL Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1. Открыть базу данных TEST с помощью команды USE TEST; 2. Создать таблицы, содержащие информацию о библиотечном фонде и читателях 2.1. Таблица books содержит информацию: Код книги, Автор, Название, Количество страниц, год издания CREATE TABLE books(kod INT PRIMARY KEY, autor VARCHAR(15), nazvanie VARCHAR(20), kol INT, god_pub INT, zena DECIMAL(3,2)); 2.2.Таблица publichers содержит сведения об издательстве: Код книги, Издательство, Город: CREATE TABLE publichers (kod INT PRIMARY KEY, publisher VARCHAR(IO), gorod VARCHAR(IO)); 2.3.Таблица klients содержит информацию о читателях: Номер, Фамилия, Город, Улица, Дом, Кодкниги, Дата выдачи книги, Дата возврата книги 3. Создание вычисляемых полей 3.1. Создать в таблице books вычисляемое поле, в котором показано количество лет с момента публикации книг SELECT kod, autor, nazvanie, 2006-god_pub FROM books; 3.2. Использование строковых констант в запросе Добавить в предыдущее выражение строковую константу «Количество лет» SELECT kod, autor, nazvanie,"Количество лет", 2006-god_pub FROM books; 3.3. Использование условий при создании вычисляемых полей в запросе Создать в таблице books вычисляемое поле, в котором показано количество лет с момента публикации книг, изданных в XX веке 4. Вычисляемые поля в связанных таблицах Показать информацию о читателях, название и автора книг, а также сроки задержки книг для каждого читателя SELECT books.autor, books.nazvanie, klients.n, klients.fam, klients.gorod, klients.ul, klients.dom, klients.kod, klients. Data2 klients.datal FROM books, klients WHERE books.kod=j(Slients.kod; 5. Использование функции AVG- среднее по всем значениям данного поля Найти среднюю цену книг в таблице books, изданных до 2003 г. SELECT AVG(zena) FROM books WHERE god pub<2003 ; 6. Использование функции COUNT - число записей Найти количество книг, выпущенных в издательстве «Мир» (по таблице publichers) 7. Использование функции МАХ - максимальное из всех значений данного поля Найти название самой дорогой книги 8. Использование функции MIN - минимальное из всех значений данного поля Найти автора и название самой новой книги. 9. Использование функции SUM - сумма всех значений данного поля Подсчитать общую цену всех книг 10.Использование функций в связанных таблицах Подсчитать общую цену книг, выпущенных в издательстве «Мир». 11.Вычисления в групповых запросах 11.1. Найти количество книг каждого автора SELECT autor, count(nazvanie) FROM books GROUP BY autor; 11.2. Найти количество книг, выпущенных в каждом издательстве SELECT publishers.publisher, count(books.hazvanie) FROM books,publishers WHERE books.kod=publishers.kod GROUP BY publisher; 12.Оформите отчет по работе Содержание отчета 1. Название ПР, цель, содержание 2. Команды SQL для выполнения заданий 3. Выводы по ПР. Контрольные вопросы 1. Укажите и объясните назначение основных агрегирующих функций. 2. Как выполнить запрос по связанным таблицам. 3. Охарактеризуйте параметры команды формирования структуры таблицы 4. Укажите операторы объединения таблиц. 5. Охарактеризуйте инструкции SELECT. Практическая работа 13 Тема: «Использование переменных на языке SQL. Ограничение доступа к данным таблиц.» Цель работы: изучение возможностей работы с переменными на языке SQL, ограничения доступа к данным таблиц и изучение механизма транзакций. Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1. Для использования транзакций необходимо работать с таблицами специального типа InnoDB. Для их использования нужно создать или отредактировать файл my.cnf. 2. Зайдите в каталог BIN и запустите файл mysqld-max 3. Создайте базу данных mysql> CREATE DATABASE pl17; 4. Откройте базу данных с помощью команды mysql> USE pl17; 5. Создайте таблицу PR1 используя команду SQL CREATE TABLE, где указаны номер, фамилия, имя учащихся и их специальность, и определите ее тип - InnoDB. CREATE TABLE pr1(n INT PRIMARY KEY, fam VARCHAR(10), imja VARCHAR(10), spez VARCHAR(15)) TYPE=InnoDB; 6. Создайте таблицу PR2 используя команду SQL CREATE TABLE, в соответствии с предложенной структурой – указана оценка за защиту дипломной работы и дата защиты, и определите ее тип - InnoDB. CREATE TABLE pr2(n INT PRIMARY KEY, ocenka int, data VARCHAR(10), spez VARCHAR(15)) TYPE=InnoDB; 7. Выполните заполнение базы данных (3 записи). INSERT INTO PR1 VALUES ("Значение поля1","Значение поля2",…,"Значение поляN"); 8. Осуществите просмотр базы данных как транзакцию Begin; Select * from pr1, pr2 where pr1.n=pr2.n; Commit; 9. Убедитесь в положительном выполнении команды Commit. 10. Добавьте в таблицы pr1 и pr2 еще по одной записи. Выполните действие как транзакцию: Begin; INSERT INTO PR1 VALUES поля2",…,"Значение поляN"); ("Значение поля1","Значение INSERT INTO PR2 VALUES поля2",…,"Значение поляN"); ("Значение поля1","Значение Select * from pr1, pr2 where pr1.n=pr2.n; Commit; 11. Убедитесь, что транзакция выполнена. 12. Отмените действие транзакции: добавьте в таблицу pr1 новую запись и отмените добавление. Begin; INSERT INTO PR1 VALUES поля2",…,"Значение поляN"); ("Значение поля1","Значение INSERT INTO PR2 VALUES поля2",…,"Значение поляN"); ("Значение поля1","Значение Select * from pr1, pr2 where pr1.n=pr2.n; Rollback; 13. Выполните просмотр таблиц Select * from pr1, pr2 where pr1.n=pr2.n; и убедитесь, что новая запись отсутствует. 14. Замените оценку, полученную учащимся с номером 3 на «5». Зафиксируйте транзакцию оператором commit 15. Выполните замену фамилии учащегося с номером 1 на «Иванов», а затем произведите откат транзакции 16. Таблицы, которые не являются таблицами InnoDB, нельзя восстановить с помощью отката транзакции, но можно защитить от нежелательных изменений с помощью блокировки. 16.1. Заблокируйте таблицу books от изменений 16.2. Выполните команду для замены номера книги 1 на номер 10. Получите сообщение о невозможности замены. 16.3. Разблокируйте таблицу и повторите команду, проанализируйте результат. 17.Оформите отчет Содержание отчета 1. Название ПР, цель, содержание 2. Команды SQL для выполнения заданий 3. Выводы по ПР. Контрольные вопросы 1. Как создать переменную? 2. Для чего предназначены транзакции? 3. Как создать группу команд выполняемых в виде транзакций? 4. Какие таблицы относятся к InnoDB? 5. Назовите команды для блокировки таблиц БД. Практическая работа 14 Тема: «Встроенные функции языка SQL. Работа со связанными таблицами» Цель работы: изучение вычислительных операций SQL Материально-техническое обеспечение: OC Windows, MS Access Порядок выполнения работы 1. Открыть базу данных test 2. Изучить встроенные функции языка SQL 2.1 Функция version – версия языка mysql> select version(); 2.2 Функция для определения текущей даты 2.3 Информация о пользователе mysql> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.02 sec) 2.4 Калькулятор внутри select mysql> select sin(pi()); +-----------------------+ | sin(pi()) | +-----------------------+ | 1.22464679914735e-016 | mysql> select sin(pi()/4), (4+1)*5; +-------------------+---------+ | sin(pi()/4) | (4+1)*5 | mysql> select 2.5,2.5*2.5+2, sin(2.5), cos(2.5), sqrt(2.5); +-----+-----------+-------------------+--------------------+------------------+ | 2.5 | 2.5*2.5+2 | sin(2.5) | cos(2.5) | sqrt(2.5) | +-----+-----------+-------------------+--------------------+------------------+ | 2.5 | 8.25 | 0.598472144103956 | -0.801143615546934 | 1.58113883008419 | +-----+-----------+-------------------+--------------------+------------------+ 1 row in set (0.03 sec) mysql> create table al select 2.5, 2.5*2.5+2, sin(2.5), cos(2.5), sqrt(2.5); 3. Показать таблицы базы данных mysql> show tables; 4.Просмотреть структуру и содержимое таблиц mysql> describe books; mysql> select*from books; mysql> describe klients; 5.Работа с функциями даты-времени 5.1. Получить информацию о сроке выдачи книг mysql> select n, data_vidachi, data_vozvrata, data_vozvrata-data_vidachi as srok mysql> select n, data_vidachi, data_vozvrata, data_vozvrata-data_vidachi as srok from klients; 5.2 Получить список читателей, задержавших книги более, чем на 10 дней mysql> select klients.n, klients.fam, books.autor, books.nazvanie,klients.data_v ozvrata-klients.data_vidachi as srok from klients, books where books.kod=klients .n and klients.data_vozvrata-klients.data_vidachi>10; 5.3. Переименовать поля в запросе mysql> select n, fam, data_vidachi, year(data_vidachi) from klients; 5.4. Использование фунций для определения года, месяца, числа . mysql> select n, fam, data_vozvrata, dayofmonth(data_vozvrata) from klients; mysql> select*from klients where month(data_vozvrata)=3; mysql> select books.autor,books.nazvanie from klients,books where books.kod=klients.kod and month(klients.data_vid)=3 and year(klients.data_vid)=2017; 6. Осуществить работу со связанными таблицами – найти полную информацию о читателях mysql> select klients.*,books.*,publishers.* from klients,books,publishers where mysql> select klients.*,books.*,publishers.* from klients,books,publishers where books.kod=klients.n and books.kod=publishers.kod and klients.n=1; Содержание отчета 1. Название ПР, цель, содержание 2. Команды SQL для выполнения заданий 3. Выводы по ПР. Контрольные вопросы 1. Назначение функции now? 2. Назначение функции version? 3. Назначение функции year, month? 4. Назовите команды для осуществления связей таблиц. 5. Назовите команды для выполнения вычислительных действий над данными. Практическая работа 15 Тема: «Администрирование баз данных» Цель работы: Приобрести практические навыки администрирования баз данных с использованием возможностей языка SQL: начало и прекращение работы сервера, получение информации о сервере и базах данных, установка переменных, принудительное завершение потоков, очистка КЭШа, анализ таблиц. Материально-техническое обеспечение: OC Windows, SQL Server Порядок выполнения работы 1. Запустить сервер MySQL Открыть Control Panel (Панель управления) и nepeйти к Administrative Tools (Средства администрирования), Services (Сервисы}, выбрать сервис MySQL. 2. Получение информации о базе данных show databases; Получим список баз данных, доступных вам, как пользователю. 3. Получение информации о таблицах базы данных show tables; Выдает список всех таблиц базы данных. show columns from tablename; чтобы получить информацию, аналогичную той, которую предоставляет оператор DESC. show table status. -более подробная информация о таблицах Вывод в этом случае достаточно трудно читать, поскольку выводимые данные весьма обширны, но он включает информацию о механизме хранения, используемом каждой таблицей, об объеме данных в каждой таблице, о текущих значениях всех столбцов автоприращения и наборе символов, используемом в каждой таблице. 4.Статус сервера и значения переменных Чтобы увидеть состояние сервера MySQL, можно использовать либо команду show status; Запишите в отчет значения: ■ threads_connected. Соответствует текущему числу соединений севером. ■ slow_queries. Соответствует числу запросов, которые были выполнены сервером и заняли больше времени, чем значение переменной сер long_query_time. ■ uptime. Соответствует времени в секундах, в течение которого выпс ется данный экземпляр сервера. 5. Информация о значении переменных 5.1. show variables; Показывает список переменных 5.2. Значения большинства этих переменных могут быть установлены в файле конфигурации, из командной строки при запуске сервера или динамически в MySQL с помощью команды SET. SET @x=20; 6. Информация о процессах Можно выяснить, какие процессы в настоящий момент выполняются сервером, запустив в рамках MySQL следующую команду: show processlist; 7. Информация о привилегиях mysql> show grants for root@localhost; Если вам необходимо вспомнить, какие вообще существуют привилегии, Е дите show privileges; В результате вы получите список привилегий, доступных в вашей системе 8. Справочная информация о таблицах 8.1. Выяснить, какие типы таблиц имеются и доступны в системе, можно с помощью команды show table types; 8.2. Можно увидеть оператор create, с помощью которого могла быть созда любая конкретная таблица в базе данных, если использовать show create table имя_таблицы; 9. Принудительное завершение потоков Kill id_название процесса; Где id уникальный индекс процесса, который можно увидеть в результате выполнения команды show processlist; 10. Очистка КЭШа Fluch query cache; 11. Содержимое файлов журнала MySQL хранит множество файлов журналов (регистрации событий. Включить запись любого из файлов журнала можно с помощью опций командной строки при запуске сервера или с помощью команды set. Ниже приведен список журналов, которые можно создать. ■ Журнал регистрации ошибок. Отслеживает все возникающие ошибки. Файл называется mysql.err в Windows и находится в bin/mysql/data. ■ Журнал регистрации запросов. Регистрирует все запросы, выполняемые ( системой. Можно включить запись этого журнала и указать его расположен с помощью опции 1оg=-имя_файла. ■ Журнал двоичной регистрации. Регистрирует все запросы, изменяющие дг ные. Заменил журнал регистрации обновлений, который все еще сущест! ет и будет существовать до версии MySQL 5.O. Можно включить запи этого журнала и указать его расположение с помощью опции log-bin=имя файла. ■ Журнал регистрации медленных запросов. Регистрирует все запросы, врег выполнения которых оказалось больше, чем значение, хранимое переменой long_query_time. Можно включить запись этого журнала и указать е: расположение с помощью опции log-slow-queries=имя_файла. Все указанные выше журналы, кроме журнала двоичной регистрации, являются текстовыми файлами. Журнал двоичной регистрации можно просмотреть с помощью команды Mysqlbinlog logfile; 12.Сводка опций mysqladmin Программа mysqladmin имеет очень много опций, польза и частота применения которых весьма различны. Некоторые задачи могут быть выполнены как с помощью команд SQL, так и с помощью mysqladmin — например, создание и уничтожение баз данных: mysqladmin create имяБД mysqladmin drop имяБД Типичным примером использования mysqladmin является получение информации о сервере и его текущем состоянии. Чтобы выяснить, включен ли сервер, используйте mysqladmin ping Чтобы выяснить, какая версия программного обеспечения сервера MySQL установлена на вашей машине, используйте mysqladmin version Чтобы получить короткое или длинное сообщение о статусе сервера, используйте mysqladmin status mysqladmin extended-status Чтобы получить список активных потоков в рамках данного сервера, используйте mysqladmin processlist mysql> show table types; mysql> show table types; 13. Оформить отчет Содержание отчета 1. Название ПР, цель, содержание 2. Команды SQL для выполнения заданий 3. Выводы по ПР. Контрольные вопросы 1. Что входит в обязанности администратора баз данных? 2. Для чего предназначен журнал БД? 3. Как задать привилегии пользователям? 4. Назовите команды для получения информации о процессах в БД. 5. Назовите команды для получения информации об объектах БД.