Информатика (Ч. Ii)
Скачать 0.74 Mb.
|
Составной ключ В случаях, когда невозможно гарантировать уникальность значений каждого поля, существует возможность создать ключ, состоящий из нескольких полей. Чаще всего такая ситуация возникает для таблицы, используемой для связывания двух таблиц в отношении "многие-ко-многим". Связи между любыми двумя таблицами относятся к одному из трех типов: 1) один-к-одному (1:1) , 2) один-ко-многим (1:М) 3) многие-ко-многим (М:М). Связь типа "один-к-одному" (1:1) При этом типе связи каждой записи в одной таблице соответствует не более одной записи в другой таблице. Этот вид связи встречается довольно редко. Этот тип связи используют не очень часто, поскольку такие данные могут быть помещены в одну таблицу. Связь с отношением "один-к-одному" используют для разделения очень широких таблиц, для отделения части таблицы по соображениям защиты (такая информация хранится в отдельной таблице, которая защищена от несанкционированного доступа). Связь типа "один-ко-многим" (1:М) Связь с отношением "один-ко-многим" является наиболее часто используемым типом связи между таблицами. В такой связи каждой записи в таблице A могут соответствовать несколько записей в таблице B, а запись в таблице B не может иметь более одной соответствующей ей записи в таблице A. Для реализации такой связи используются две таблицы. Одна из них (главная) представляет сторону "один", другая (подчиненная) - сторону "много". Ключ главной таблицы называется первичным ключом, ключ подчиненной таблицы - внешним ключом. Связь типа "многие-ко-многим" (М:М) При таком типе связи множеству записей в одной таблице соответствует множество записей в связанной таблице. Большинство современных СУБД непосредственно не поддерживают такой тип связи. Для его реализации такая связь разбивается на две связи типа один-ко-многим. Соответственно, для хранения информации потребуется уже три таблицы: две со стороны "много" и одна со стороны "один". Связь между этими тремя таблицами также осуществляется по общим полям. 2 Задания для самостоятельного выполнения 1. Запустите Microsoft Access 2007. 2. Откройте базу данных "Фирма". Отдельные таблицы необходимо связать в единую структуру базы данных. Для связывания таблиц следует задать ключевые поля. Откройте таблицу Сотрудники в режиме Конструктора. 3. Нажмите правой кнопкой мыши на поле Код сотрудника и в появив- шемся контекстном меню выберите команду Ключевое поле. Если в таблице не- обходимо установить несколько ключевых полей, то выделить их можно, удер- живая клавишу Ctrl. 4. Для таблицы Клиенты установите ключевое поле Код клиента, а для 12 таблицы Заказы - Код заказа. 5. Таблица Заказы содержит поля Код сотрудника и Код клиента. При их заполнении могут возникнуть некоторые трудности, так как не всегда удается запомнить все предприятия, с которыми работает фирма, и всех сотрудников с номером кода. Для удобства можно создать раскрывающиеся списки с помощью Мастера подстановок. 6. Откройте таблицу Заказы в режиме Конструктора. 7. Для поля Код сотрудника выберите тип данных Мастер подстановок. 8. В появившемся окне выберите команду Объект "столбец подстановки" будет использовать значения из таблицы или запросаи щелкните на кнопке Далее. 9. В списке таблиц выберите таблицу Сотрудники и щелкните на кнопке Далее. 10. В списке Доступные полявыберите поле Код сотрудника и щелкните на кнопке со стрелкой, чтобы ввести поле в список Выбранные поля. Таким же образом добавьте поля Фамилия и Имя и щелкните на кнопке Далее. 11. Выберите порядок сортировки списка по полю Фамилия. 12. В следующем диалоговом окне задайте необходимую ширину столбцов раскрывающегося списка. 13. Установите флажок Скрыть ключевой столбеци нажмите кнопку Далее. 14. На последнем шаге Мастера подстановокзамените при необходимости надпись для поля подстановок и щелкните на кнопке Готово. 15. Аналогичным образом создайте раскрывающийся список для поля Код клиента. 16. После создания ключевых полей можно приступить к созданию связей. Закройте все открытые таблицы, так как создавать или изменять связи между открытыми таблицами нельзя. 17. Выполните команду: вкладка ленты Работа с базами данных- кнопка Если ранее никаких связей между таблицами базы не было, то при открытии окна Схема данныходновременно открывается окно Добавление таблицы, в котором выберите таблицы Сотрудники, Клиенты и Заказы. 18. Если связи между таблицами уже были заданы, то для добавления в схему данных новой таблицы щелкните правой кнопкой мыши на схеме данных и в контекстном меню выберите пункт Добавить таблицу. 19. Установите связь между таблицами Сотрудники и Заказы, для этого выберите поле Код сотрудника в таблице Сотрудники и перенесите его на со- ответствующее поле в таблице Заказы. Для этого указатель мыши следует установить на поле Код сотрудника в таблице Сотрудники, нажать левую кнопку мыши и, не отпуская ее, переместить указатель на поле Код сотрудника в таблице Заказы, затем отпустить кнопку мыши. 20. После перетаскивания откроется диалоговое окно Изменение связей 13 (рисунок 2), в котором включите флажок Обеспечение условия целостности. Это позволит предотвратить случаи удаления записей из одной таблицы, при которых связанные с ними данные других таблиц останутся без связи. Рисунок 2 - Создание связи между таблицами 21. Флажки Каскадное обновление связанных полей и Каскадное удаление связанных записейобеспечивают одновременное обновление или удаление данных во всех подчиненных таблицах при их изменении в главной таблице. 22. Параметры связи можно изменить, нажав на кнопку Объединение. 23. После установления всех необходимых параметров нажмите кнопку ОК. 24. Связь между таблицами Клиенты и Заказы установите самостоятельно. 25. В результате должна получиться схема данных, представленная на рисунке 3. Рисунок 3 - Схема данных В приведенном примере используются связи "один-ко-многим". На схеме 14 данных они отображаются в виде соединительных линий со специальными значками около таблиц. Связь "один-ко-многим" помечается "1" вблизи главной таблицы (имеющей первичный ключ) и "∞" вблизи подчиненной таблицы (имеющей внешний ключ). Связь "один-к-одному" помечается двумя "1" (оба поля таблиц имеют первичные ключи). Неопределенная связь не имеет никаких знаков. Если установлено объединение, то его направление отмечается стрелкой на конце соединительной линии (ни одно из объединенных полей не является ключевым и не имеет уникального индекса). 26. Закройте Схему данных. 27. Откройте таблицу Сотрудники двойным щелчком мыши и заполните в ней 10 строк произвольными данными. 28. Измените размер ячеек так, чтобы были видны все данные. Для этого достаточно два раза щелкнуть левой кнопкой мыши на границе полей. 29. При заполнении поля "Семейное положение" возникают некоторые неудобства: поскольку таблица получилась широкая, не видно фамилии человека, для которого заполняется данное поле. Чтобы фамилия была постоянно видна при заполнении таблицы, необходимо воспользоваться командой Закрепить столбцы из контекстного меню поля "Фамилия". 30. В таблицу Клиенты внесите данные о десяти предприятиях, с которыми работает данная фирма. 31. В таблице Заказы оформите 10 заявок, поступивших на фирму. 32. Покажите работу преподавателю, ответьте на контрольные вопросы. Контрольные вопросы 1. С какой целью создаются связи между таблицами? 2. Что такое ключевое поле? 3. Дайте определения: простой ключ, составной ключ. 4. Что такое первичный ключ? 5. Что такое внешний ключ? 6. Какие существуют типы связей между таблицами? 7. Как установить несколько ключевых полей? 8. Как установить связи между таблицами? 9. Что означают на схеме данных значки "1" и "∞"? 10. Зачем нужен Мастер подстановок? 15 ЛАБОРАТОРНАЯ РАБОТА № 3 ТЕМА: ОТБОР ДАННЫХ С ПОМОЩЬЮ ЗАПРОСОВ Цель работы: Создание запросов: простой запрос на выборку, запрос с параметром, запрос с вычисляемыми полями. 1 Теоретическое введение Если таблицы позволяют организовать данные, то запросы - управлять данными и обновлять их. Запросыявляются основным средством просмотра, отбора, изменения и анализа информации, которая содержится в одной или нескольких таблицах базы данных. Иногда необходимо просмотреть все данные из таблицы, но в других случаях может потребоваться просмотреть только данные из определенных полей или только данные, удовлетворяющие определенным условиям. Для просмотра данных с использованием условий существует запрос на выборку. Запрос представляет собой обращение к данным для получения информации и выполнения действий с данными. Существуют два основных типа запросов: 1. Запросы на выборку - это запросы, выполняющие извлечение данных, предназначенных для отображения. 2. Управляющие запросы - так называют сохраненные процедуры, выполняющие вставку, изменение или удаление данных.Эти запросы позволяют создавать новые таблицы базы данных из итоговых таблиц запросов или вносить значительные изменения в уже имеющиеся таблицы. Наиболее распространенными являются запросы на выборку. Результат работы такого запроса называется выборкой. Выборка представляет собой динамическую таблицу, т.е. она существует только в текущем сеансе работы, не сохраняется в базе данных; она создается заново каждый раз при выполнении запроса и уничтожается при его закрытии. В Access различают три основных типа запросов на выборку, позволяющих решать различные задачи: 1. Простые запросы на выборку - это запросы, используемые для извлечения данных из таблицы или выполнения расчетов. Эти запросы извлекают необходимую информацию из одной или нескольких таблиц, формируя на их основе итоговую таблицу, носящую временный характер и сохраняемую только на время сеанса работы с запросом. Обычно таблицы не используются для хранения значений, вычисленных на основе данных из той же базы данных. Вычисление таких значений можно выполнить также при помощи запросов на выборку.В некоторых случаях вычисленные значения могут устареть, поскольку данные, на основе которых они были рассчитаны, изменились. Например, не стоит хранить чей-либо возраст в таблице, поскольку потребуется обновлять это значение каждый год; вместо этого можно хранить дату рождения, а затем использовать в запросе выражение для расчета возраста. 2. Запросы с параметром - применяетсяв тех случаях, когданеобходимо 16 выполнить запрос, который лишь немногим отличается от существующего запроса. Можно изменить исходный запрос для использования новых условий, но если часто требуется запускать различные варианты одного запроса, стоит воспользоваться запросом с параметрами. При выполнении запроса с параметрами, Access отображает специальное диалоговое окно, позволяющее пользователю ввести новое условие отбора. Фактически запросы с параметрами не являются отдельными запросами, поскольку такие функции можно добавить к запросам на выборку, перекрестным запросам или запросам на изменение. 3. Перекрестные запросы - суммируют данные из одной или нескольких связанных таблиц и формируют новую электронную таблицу. Такие запросы предназначены для задач анализа данных или создания графиков и диаграмм, основанных на сумме значений числовых полей многих таблиц. Например, доходов по месяцам или неделям. Способы создания запросов: 1) с помощью мастера запросов, 2) с помощью Конструктора запросов. В данной лабораторной работе рассматриваются запросы на выборку. 2 Задания для самостоятельной работы 1. Откройте базу данных "Фирма". 2. Выполните команду: вкладка ленты Создание - Мастер запросов - Простой запрос. 3. В появившемся диалоговом окне (рисунок 4) в поле Таблицы и запросы укажите таблицу Сотрудники, в списке Доступные поляс помощью инструмента ">" выберите поля Фамилия, Имя, Телефон. Названные поля переместятся в список Выбранные поля. Нажмите кнопку Далее. Рисунок 4 - Создание простого запроса с помощью Мастера запросов 17 4. Введите имя запроса - Телефоны - и нажмите кнопку Готово. Перед вами появится запрос, в котором можно просмотреть телефоны всех сотрудников. Это самый простой запрос - извлечение определенных полей каждой записи таблицы. Закройте окно запроса. Повторно выполнить сохраненный запрос можно, дважды щелкнув по имени запроса слева в окне "Все объекты Access". 5. Следующий запрос попробуйте создать с помощью Конструктора, для этого выполните команду: вкладка ленты Создание - Конструктор запросов. 6. В диалоговом окне Добавление таблицвыберите таблицу Клиенты и щелкните на кнопке Добавить, а затем - на кнопке Закрыть. 7. Чтобы перенести нужные поля (Название компании, Адрес, Номер телефона) из списка полей таблицы в бланк запроса, необходимо по ним дважды щелкнуть левой кнопкой мыши (рисунок 5). Значки в строке бланка запроса означают, что информация из соответствующего столбца будет выводиться на экран в результирующей таблице. Чтобы отменить вывод на экран, следует снять значок. Рисунок 5 - Создание запроса в режиме Конструктора 8. Чтобы отсортировать записи в поле Название компании в алфавитном порядке, необходимо в раскрывающемся списке строки Сортировка выбрать пункт по возрастанию. 9. Выполните запрос, нажав кнопку на вкладке ленты Конструктор. 10. Сохраните запрос с именем Адреса клиентов. В данном запросе кроме отбора полей каждой записи выполнена еще и их сортировка по значениям одного из полей. Закройте запрос. 11. Создайте запрос Дни рождения, в котором можно будет просмотреть дни 18 рождения сотрудников. Допустим, мы хотим узнать, у кого из сотрудников день рождения в текущем месяце, например в апреле. Для этого воспользуемся режимом Конструктора:Создание - Конструктор запросов. 12. В диалоговом окне Добавление таблицвыберите таблицу Сотрудники и щелкните на кнопке Добавить, а затем - на кнопке Закрыть. 13. Перенесите нужные поля (Фамилия, Имя, Дата рождения) из списка полей таблицы в бланк запроса (рисунок 6). 14. В строке Условие отбора для поля "Дата рождения" введите значение *. 04. *, нажмите Enter. В данной записи * означают, что дата и год рождения могут быть любыми, а месяц 4-м (т.е. апрель). После этого окно запроса должно выглядеть так, как оно представлено на рисунке 5. Рисунок 6 - Создание запроса c условием отбора по значению одного из полей 15. Закройте Конструктор и просмотрите полученный результат. Если в запросе Дни рождения нет ни одной записи, значит, в таблице Сотрудники нет ни одного человека, родившегося в апреле. Добавьте в таблицу Сотрудники не- сколько человек, родившихся в апреле, и посмотрите, как изменится запрос. За- просы автоматически обновляются при каждом открытии. 16. Если нам нужно узнать, кто из сотрудников родился в мае, то придется создать новый запрос или изменить условие в существующем запросе Дни рождения. Данная процедура является неудобной и занимает много времени. Если приходится часто выполнять запрос, но каждый раз с новыми значениями условий, используют запрос с параметром. При запуске такого запроса на экран выводится диалоговое окно для ввода значения в качестве условия отбора. 17. Откройте запрос Дни рождения в режиме Конструктора. Чтобы создать запрос с параметром, пользователю необходимо ввести текст сообщения в строке 19 Условие отбора бланка запроса (рисунок 7). Рисунок 7 - Создание запроса с параметром 18. Запись Like [Введите дату] означает, что при выполнении запроса поя- вится диалоговое окно (рисунок 8) с текстом "Введите дату" и полем для ввода условия отбора. Если ввести условие *. 04.*, то в запросе появится список со- трудников, родившихся в апреле. Запустите запрос еще раз и введите значение *.05.*, посмотрите, как изменился список сотрудников. Рисунок 8 - Окно для ввода условия отбора 19. Измените запрос Телефоны так, чтобы при его запуске выводилось диалоговое окно с сообщением "Введите фамилию". Поскольку в запросе нужно вывести конкретную фамилию, в условии отбора слово Like писать не надо. 20. Измените запрос Телефоны так, чтобы при его запуске запрашивались не только фамилия, но и имя сотрудника. 21. Самостоятельно создайте запрос Выполненные заказы, содержащий следующие сведения: фамилия и имя сотрудника, название компании, с которой он работает, отметка о выполнении и сумма заказа. Данные запроса возьмите из нескольких таблиц. 20 22. В условии отбора для логического поля Отметка о выполнении введите Да, чтобы в запросе отображались только выполненные заказы. 23. Сделайте так, чтобы столбец Отметка о выполнении не выводился на экран. 24. Создайте запрос Сумма заказа, в котором будут отображаться заказы на сумму более 50000 руб. 25. Измените запрос, чтобы сумма заказа была от 20000 до 50000 руб. Для данных запросов в условии отбора можно использовать операторы сравнения >,<,=,>=<=<> и логические операторы And, Or, Not и др. (рисунок 9). Рисунок 9 - Условие отбора с использованием логических операторов 26. Иногда в запросах требуется произвести некоторые вычисления, на- пример посчитать налог 13 % для каждой сделки. Для этого откройте запрос Сумма заказа в режиме |