Создание объектов БД MS Access и режимы работы с ними
Таблица – это объект, который определяется и используется для хранения данных. Каждая таблица хранит информацию об объекте определенного типа. Как вы уже знаете, таблица содержит поля (столбцы) и записи (строки). Работать с таблицей можно в двух основных режимах: в режиме конструктора и в режиме таблицы.
В режиме конструктора задается структура таблицы, т.е. определяются типы, свойство полей, их число и названия (заголовки столбцов). Он используется, если нужно изменить структуру таблицы, а не хранимых в ней данных. Чтобы перейти в режим таблицы, надо дважды щелкнуть мышью по имени нужной таблицы в окне БД (или, выделив в окне БД имя нужной таблицы, воспользоваться кнопкой [Открыть] окна БД).
Из режима конструктора перейти в режим таблицы можно, щелкнув по кнопке [Таблицы] на панели инструментов.
В режиме конструктора и в режиме таблицы перемещение между полями осуществляется с помощью клавиши ТАВ, а также [вверх] или [вниз] по записям с помощью клавиш, гораздо удобнее использовать мышь.
Создание межтабличных связей. Если структура БД продумана заранее, а связи между таблицами намечены, то создание реляционных отношений между таблицами выполняется с помощью мыши в специальном окне Схема данных. Образовавшаяся межтабличная связь отображается в окне Схема данных в виде линии, соединяющей два поля разных таблиц. При этом одна из таблиц считается главной, а другая – связанной. Главная – это таблица, участвующая в связи своим ключевым полем (название этого поля на схеме данных отображается полужирным шрифтом). Ключевое поле определяется в таблице в режиме конструктора. У связи два основных назначения. Первое – обеспечение целостности данных, а второе – автоматизация задач обслуживания базы.
Связь между таблицами позволяет:
- либо исключить возможность удаления или изменения данных в ключевом поле главной таблицы, если с этим полем связаны какие-либо поля других таблиц;
- либо сделать так, что при удалении (или изменении) данных в ключевом поле главной таблицы автоматически (и абсолютно корректно) произойдет удаление или изменение соответствующих данных в полях связанных таблиц.
Для настройки свойств связи надо в окне Схема данных выделить линию связи правой кнопкой мыши и в открывшемся контекстном меню выбрать пункт, Изменить связь. Откроется окно Изменение связи. В нем показаны названия связанных таблиц, и имена полей, участвующих в связи (здесь же их можно изменить). А также приведены элементы управления для обеспечения условий целостности данных.
Если установлен флажок Обеспечение целостности данных, то удалять данные из ключевого поля главной таблицы нельзя. Если вместе с ним включены флажки Каскадное обновление связанных полей и Каскадное удаление связанных записей, то, соответственно, операции редактирования и удаления данных в ключевом поле главной таблицы разрешены, но сопровождаются автоматическими изменениями в связанной таблице.
Таким образом, смысл создания реляционных связей между таблицами состоит, с одной стороны, в защите данных, а с другой – в автоматизации внесения изменений сразу в несколько таблиц, при изменениях в одной таблице.
Работа с запросами. Если структура БД хорошо продумана, то исполнители, работающие с базой, должны навсегда забыть, что в базе есть таблицы, а лучше, если они об этом вообще ничего не знают. Таблицы – слишком ценные объекты базы, чтобы с ними имел дело кто-либо, кроме разработчика базы.
Если исполнителю надо получить данные из базы, он должен использовать специальные объекты – запросы. Все необходимые запросы разработчик базы должен подготовить заранее. Если запрос подготовлен, надо открыть вкладку Запросы в окне БД, выбрать его и открыть двойным щелчком на значке – откроется результирующая таблица.
В общем случае результирующая таблица может не соответствовать на одной из базовых таблиц БД. Ее поля могут представлять набор из полей разных таблиц, а ее записи могут содержать отфильтрованные и отсортированные записи таблиц, на основе которых формировался запрос.
Запросы лучше готовить вручную, с помощью Конструктора. Для этого есть специальный значок в окне БД. Он называется Создание запроса в режиме конструктора и открывает специальный бланк, называемый бланком запроса по образцу. Хотя запросы к таблицам пишутся на специальном языке программирования SQL, пользователя изучать его не обязательно, а большинство операций можно выполнить щелчками кнопкой мыши и приемом перетаскивания в бланк (рис. 9.3.2).
Рис. 9.3.2. Бланк запроса по образцу
Бланк запроса по образцу состоит из двух областей. В верхней отображается структура таблиц, к которым запрос адресован, а нижняя область разбита на столбцы и строки – по одному столбцу на каждое поле будущей результирующей таблицы. С помощью контекстного меню в верхней части бланка открывают те таблицы, к которым обращен запрос. Затем в них щелкают двойными щелчками на названиях тех полей, которые должны войти в результирующую таблицу. При этом автоматически заполняются столбцы в нижней части бланка. Сформировав структуру запроса, его закрывают, дают ему имя и в дальнейшем запускают двойным щелчком на значке в окне БД. Так создается простейший запрос, называемый запросом на выборку. Он позволяет выбрать данные из полей таблиц, на основе которых запрос сформирован.
Упорядочение записей в результирующей таблице. Если необходимо, чтобы данные, отобранные в результате запроса на выборку, были упорядочены по какому-либо полю, применяют сортировку. В нижней части бланка запроса имеется специальная строка Сортировка. При щелчке на этой строке открывается кнопка раскрывающегося списка, в котором можно выбрать метод сортировки: по возрастанию или по убыванию. В результирующей таблице данные будут отсортированы по тому полю, для которого задан порядок сортировки. Возможна многоуровневая сортировка – сразу по нескольким полям. В этом случае данные сначала сортируются по тому полю, которое в бланке запроса находится левее, затем по следующему полю, для которого включена сортировка, и т.д. слева направо.
При формировании запроса надо располагать поля результирующей таблицы не как попало, а с учетом будущей сортировки. Если запрос уже сформирован и надо изменить порядок следования столбцов, используют следующий прием:
- выделяют столбец щелчком на его заголовке (кнопку мыши отпускают);
- еще раз щелкают на заголовке уже выделенного столбца (но кнопку не отпускают);
- перетаскивают столбец в другое место.
Управление отображением данных в результирующей таблице. В нижней части бланка запроса по образцу имеется строка Вывод на экран. По умолчанию предполагается, что все поля, включенные в запрос, должны выводиться на экран. Когда не желательно, чтобы пользователь базы видел содержание некоего поля, но его необходимо включить в запрос (например, потому, что оно является полем сортировки или по другой причине), то отображение содержимого поля подавляется сбросом флажка Вывод на экран.
Использование условий отбора. Дополнительным средством, обеспечивающим отбор данных по заданному критерию, является так называемое Условие отбора – строка в нижней части бланка запроса по образцу. Для каждого поля в этой строке можно задать индивидуальное условие.
Формирование условий отбора:
1. Текста: В большинстве случаев данные имеют текстовый тип. Для формирования условий отбора текста имеются некоторые специфические выражения.
а) для поиска полной текстовой строки, следует ввести ее в соответствующую ячейку бланка запроса нужного поля; Access заключит выражение в кавычки;
б) в качестве указателя произвольного текста используется символ «*». Одна звездочка интерпретируется как произвольное количество любых символов. В одном выражении может использоваться несколько звездочек. Условию «Ив*н*ов» удовлетворяют, например, фамилии: «Иванов», «Иванцов» и «Иванников».
в) если нужно отобрать записи, несоответствующие указанному тексту, перед ним вводится ключевое слово «NOT» или оператор сравнения «<>». Условие NOT Москва инициирует отбор всех городов, кроме Москвы.
г) в качестве заменителя одного произвольного символа применяется вопросительный знак «?». Например, по условию «к?т» могут быть найдены слова «кит» и «кот».
2. Чисел:
а) для отбора конкретной величины, в ячейку вводится число;
б) чтобы отобрать записи с величинами, меньшими либо меньшими или равными определенному значению, вводится <число или <=число;
в) чтобы отобрать записи с величинами большими либо большими или равными определенному значению, вводится >число или >=число;
г) для поиска величин, лежащих в некотором промежутке чисел (включая его начало и конец), вводят Between число1 and число2;
д) для поиска величин, лежащих в некотором промежутке чисел (исключая его начало и конец), вводится выражение >число1 and <число2.
3. Сложное условие отбора:
а) если осуществляется поиск по нескольким альтернативным условием для одного поля, их вводят в одну ячейку и соединяют ключевым словом OR (например, «Юг or Север»);
б) если имеется много возможных вариантов, используется ключевое слово IN (например, IN(Юг; Север; Восток).
в) если одно поле должно удовлетворять сразу двум критериям, используют ключевое слово AND (например, >5 and <10);
г) чтобы определить условие для нескольких полей в случае поиска тех записей, которые удовлетворяют хотя бы одному условию, вводится условие для первого поля, переходят в следующую строку условий отбора, которая называется «ИЛИ» и вводят выражение для второго поля в столбце этого поля. При наличии третьего условия перемещаются еще на одну строку ниже.
Другие виды запросов.Запросы на выборку самые простые, но и самые распространенные. Существуют и другие виды запросов, некоторые из них выполняются на базе предварительно созданного запроса на выборку.
К ним относятся, прежде всего:
1. Запросы с параметром. Часто приходится иметь дело с запросами, устроенными в принципе одинаково, но имеющими некоторые различия в поставленных условиях отбора. В таком случае, чтобы каждый раз заново не создавать отдельный запрос, следует сформировать запрос с параметром. В запросе с параметром в бланк запроса в строке Условие отбора нужного поля вводят, выражение, например: <[Введите максимальное значение]. При выполнении запроса с параметром Access запрашивает у пользователя значение параметра для определения условий выборки.
2. Запрос на выполнение действий, которые используются для создания новых реальных таблиц данных, в дальнейшем существующих уже независимо от тех таблиц базы, которые были использованы для их построения. Эти запросы позволяют также изменять таблицы базы данных: обновлять их, дополнять новыми записями или удалять некоторые записи. Различают четыре вида запросов на выполнение действия:
а) Запрос на добавление. Можно добавлять отобранные записи из таблицы или запроса текущей БД в конец другой таблицы. Дополняемая таблица может находиться как в той же самой, так и в другой БД;
б) Запрос на удаление. С помощью запроса на удаление можно удалить группу записей данных, удовлетворяющих заданным условиям;
в) Запрос на обновление. Можно изменит группу записей данных, удовлетворяющих определенному условию.
г) Запрос на создание новой таблицы. Из выборки, являющейся динамической таблицей, сформированной при выполнении запроса и существующей только до окончания работы с результатами запроса, можно создать новую таблицу БД. Она начнет свое независимое существование. Изменения в этой новой таблице не будут затрагивать использованные для ее построения исходные таблицы БД.
3. Итоговые запросы. Назначение их отдаленно напоминает итоговые функции электронных таблиц (производят математические вычисления по заданному полю и выдают результат).
4. Запросы на изменение, позволяют автоматизировать заполнение полей таблиц.
5. Перекрестные запросы, позволяющие создавать результирующие таблицы на основе результатов расчетов, полученных при анализе группы таблиц.
6. Специфические запросы SQL – запросы к серверу БД, написанные на языке запросов SQL.