Диго С.М. Базы данных проектирование и использование (1084447), страница 39
Текст из файла (страница 39)
Каждая таблица содержит пустую запись, которая следует за последней существующей записью и предназначена для ввода новых данных. Эта запись отмечена слева символом «звездочка» (*). Позиционироваться на эту запись можно разными способами, например, щелкнув по соответствующей кнопке Новая запись в панели перемещения по записям или выбрав позицию меню Вставка/Новая запись, или просто мышью.
Введенные данные автоматически сохраняются при переходе к другой записи.
Для ускорения ввода данных в текущее поле таблицы могут быть использованы определенные комбинации клавиш:
Клавиша | Действие |
[Ctrl]+[;] | Вводит текущую дату |
[Ctrl]+[:] | Вводит текущее время |
[Ctrl]+[Alt]+[Пpo6eл] | Вводит значение поля, установленное по умолчанию |
[Ctrl]+['](anocrpoф) или ["] (кавычки) | Вводит значение того же поля из предыдущей записи |
Для перехода между записями можно использовать кнопки внизу окна таблицы в панели перемещения по записям (к первой, следующей, предыдущей, последней записи).
Для облегчения процесса ввода данных в БД можно использовать соответствующие свойства полей: значение по умолчанию, маска ввода, формат поля.
Значение по умолчанию. Обычно в этом качестве указывается какое-то постоянное значение, однако можно использовать и выражение. Например, для ввода текущей даты можно в качестве значения по умолчанию использовать функцию =Date(). Значение, введенное по умолчанию, может быть впоследствии изменено.
Выражения, которые используются в качестве значений по умолчанию, не должны содержать ссылок на элементы управления и другие поля, а также функций, определенных пользователем. Выражения могут записываться непосредственно или строиться с помощью «Построителя выражений».
Маска ввода (InputMask). Использование маски позволяет определить значения, которые можно ввести в поле, и не только обеспечивает контроль правильности ввода данных, но и облегчает их ввод. Значение свойства «Маска ввода» может быть введено вручную или с помощью Мастера масок ввода.
Используемые в масках знаки и их интерпретация приведены в приложении 1.
Рассмотрим некоторые примеры использования масок ввода.
-
Маска ввода для поля «Телефоны» может выглядеть следующим образом:
\(999")-"999\-9999
В приведенном примере константы (скобки, дефисы) отражаются на экране, но в базу данных не вводятся.
-
Пусть на фирме адрес электронный почты (ЭП) сотрудников
формируется следующим образом: префикс - любые четыре символа, а затем для всех указывается @firm.ru
В этом случае маска может выглядеть следующим образом:
АААА"@ firm "."ru";0
Значение свойства «Маска ввода» может содержать до трех разделов, разделенных точкой с запятой (;). Первый представляет саму маску ввода, второй - определяет режим занесения в таблицу текстовых констант, добавляемых к знакам, вводящимся пользователем. «О» в данном компоненте указывает, что текстовые константы сохраняются вместе с введенными пользователем значениями; значение «1» или пустое значение данного раздела указывает, что сохраняются только знаки, введенные пользователем. В данном примере постоянная часть адреса электронный почты сохраняется в БД. Третий раздел определяет знак, используемый для изображения пустых позиций в маске ввода, в которые помещаются вводящиеся пользователем знаки.
Свойство «Формат поля» (Format). Кроме свойства «Маска ввода» в Microsoft Access можно задать еще свойство «Формат поля» (Format). Их использование приводит к похожим результатам.
Свойство «Формат поля» влияет только на отображение значения, но никак не влияет на значение, хранимое в таблице. Для управления вводом данных удобнее использовать маску ввода.
Если для поля определены как формат отображения, так и маска ввода, то при добавлении и редактировании данных используется маска ввода, а формат поля определяет отображение данных после сохранения записи.
Несмотря на то, что последние версии Access позволяют в режиме таблицы вводить данные даже во взаимосвязанные таблицы, для организации ввода данных в базу данных в большинстве случаев следует использовать экранные формы.
На это следует обратить внимание
-
Организуя ввод данных в БД, помните, что человек является самым ненадежным и самым дорогим элементом информационной системы.
-
При организации ведения баз данных нужно стремиться к реализации принципа однократного ввода информации.
-
Старайтесь до минимума сократить количество ручных операций.
-
Обеспечивайте контроль правильности введенных данных.
Контрольные вопросы
-
Что в Access называется базой данных?
-
К какому классу относится СУБД Access?
-
Каковы особенности реляционной модели данных?
-
Как создать новую базу данных в Access?
-
Как добавить новый объект в существующую базу данных?
-
Какие способы создания таблиц вы знаете? В каких случаях следует использовать каждый из них?
-
Какие типы полей допустимы в Access? Каковы особенности работы с полями каждого из этих типов?
-
Какие способы создания полей подстановки вы знаете? В каких случаях следует использовать каждый из них?
-
Какие преимущества дает использование полей подстановки?
-
Какие ограничения накладываются на имена полей?
-
Что называется ключом таблицы? Какие разновидности ключей вы знаете?
-
Какими способами можно создать ключ?
-
Является ли наличие ключа в таблице Access обязательным?
-
В каких случаях задание ключа является обязательным?
-
Какими специфическими особенностями обладает поле типа «Счетчик»?
-
Какие свойства полей вы знаете? Приведите примеры их использования.
-
Как можно изменить структуру существующей таблицы?
-
Как можно задать объединение таблиц? Какие способы объединения вы знаете? Как можно изменить тип объединения?
-
Какие способы задания ограничений целостности в Access вы знаете?
-
Как задается в Access «ограничение целостности связи»?
-
Какие способы ввода данных в БД вы знаете? Назовите достоинства, недостатки и сферы применения каждого из этих способов.
Глава 6 ЯЗЫК ЗАПРОСОВ QBE
6.1. Общая характеристика языка QBE
В современных СУБД широко используются табличные языки запросов. Наиболее распространенным среди них является язык QBE (Query-By-Example - запрос по примеру). Язык QBE предназначен для работы в интерактивном режиме и ориентирован на конечного пользователя. Язык QBE реализован во многих современных СУБД, например в dBase IV и более старших версиях этой системы, Paradox, Access и др. Конкретные реализации этого языка несколько отличаются друг от друга, но все они построены по единому принципу.
Суть подхода, воплощенного в языке QBE, заключается в следующем. В окне формирования запроса выделяются две зоны. В первой из них высвечивается «скелет» (образ, форма, структура) одной или нескольких таблиц, данные из которых будут участвовать в запросе. В качестве исходных для запроса могут указываться не только базовые таблицы, но и другие запросы.
Во второй зоне («скелете» запроса табличной формы) пользователь задает условия запроса. В этой зоне пользователь определяет, какие поля участвуют в формировании запроса, а также условия отбора и некоторые другие характеристики запроса. Например, если пользователю необходимо получить все записи с заданным значением конкретного атрибута, то в соответствующем столбце «скелета» указывается это значение.
На рис. 6.1 представлен запрос к таблице, содержащей сведения о сотрудниках (Kadr) и включающей следующие атрибуты:
-
FAM - фамилия;
-
IMIA - имя;
-
TABN - табельный номер;
-
VOZR - возраст;
-
POL - пол;
-
ADR - адрес.
Требуется выдать информацию обо всех сотрудниках в возрасте 40 лет. В соответствующем столбце таблицы (VOZR) указывается цифра 40. В столбце можно записывать не только значение атрибута, но и знак операции сравнения; по умолчанию принимается знак равенства («=»).
Задание сложных запросов. Допускается задание и простых запросов, включающих только один аргумент поиска, и сложных запросов, компоненты которых связаны операторами AND (И) или OR (ИЛИ). Операторы AND и OR в явном виде не указываются при формулировании запроса на QBE. При отображении запросов на экране используется следующее правило: если в сложном запросе его компоненты представляют разные атрибуты, которые должны быть связаны оператором AND, то они записываются в одной строке (рис. 6.2). Если компоненты запроса должны быть связаны операторами OR, то они записываются на разных строках (рис. 6.3).
На рис. 6.2 изображен запрос: «Выдать информацию о сотруднике с фамилией Диго и именем Светлана», а на рис. 6.3 - «Выдать информацию о сотрудниках, имеющих либо фамилию Диго, либо имя Светлана».
В связи с тем, что интерпретация запроса зависит от взаимного расположения элементов сложного запроса на строках экрана, такого рода языки запросов называются табличными двухмерными.
Как указывалось выше, при задании запроса в QBE экран обычно делится на две зоны: зона, в которой указываются данные, исходные для запроса, и зона, в которой описывается ответ. В некоторых реализациях языка при описании отдельных видов запросов появляются дополнительные зоны (например, в dBase IV при задании вычисляемого поля [19]).
Вид, в котором представляются структуры исходных таблиц, а также то, где фиксируются условия поиска, могут различаться в конкретных системах.
Так, в dBase IV таблицы как в зоне «запроса», так в зоне «ответа» представляются в табличном виде, а условия отбора записей указываются в таблицах зоны «запроса». В Access, FoxPro исходные таблицы представлены в анкетной форме (поля таблицы перечисляются один под другим), а в зоне «ответа» в табличной форме отображаются те атрибуты (поля), которые будут выдаваться в ответе. Условия отбора записей задаются в зоне «ответа».
Переменные для примера. В некоторых случаях при формулировке запроса необходимо использовать так называемые переменные для примера (или «наполнители»). Переменные для примера (example variables) также записываются в определенных графах таблицы, но они обозначают не какое-либо определенное значение, а любое. Конкретное значение наполнителя несущественно. Переменные для примера используются для установления связей между атрибутами в одной или нескольких таблицах.
Переменные, применяемые для задания значений ключей поиска, и переменные, указываемые для примера, должны при записи запроса отличаться друг от друга.
В разных СУБД «наполнители» и обычные значения атрибутов поиска различаются по-разному: в некоторых системах «наполнители» подчеркиваются, в других - используются специальные ограничители при указании переменных в запросе, в третьих - такое понятие вообще не вводится и т.п.
Совместная обработка нескольких таблиц. В некоторых запросах могут потребоваться данные из нескольких таблиц. Например, в базе данных, кроме таблицы KADR, имеется таблица «Выработка» (VRBT) с полями:
-
TABN - табельный номер;
-
DAT - дата;
-
KODDET - код детали;
-
KOLV - количество.
В запросе «Выдать информацию о выработке рабочего Евгения Петрова» необходима совместная обработка таблиц VRBT и KADR, так как в таблице «Выработка» нет сведений о фамилиях и именах рабочих.
«Скелеты» всех таблиц, которые нужны для реализации запроса (в нашем примере - двух таблиц), должны быть вызваны на экран.
Дальнейшие действия, которые необходимо выполнить, чтобы осуществить связывание таблиц, будут зависеть от используемой СУБД. Так, в некоторых системах для связывания таблиц используются «наполнители». Их значения могут быть любыми, но они должны быть одинаковыми в обеих связываемых таблицах.
В примере, представленном на рис. 6.4, в качестве наполнителя используется буква А, и она подчеркивается.
В более поздних версиях СУБД используются визуальные способы установления связей между таблицами: для связывания таблиц нужно мышью позиционироваться на нужном поле в основной таблице и, не отпуская кнопки мыши, переместиться к полю в зависимой таблице. На экране появится линия, связывающая таблицы.
Существуют и другие способы установления связей.
Теоретически возможны разные типы соединений таблиц. Наиболее распространенным является соединение, при котором в результатную таблицу помещаются те соединенные записи, для которых значение поля связи основной таблицы совпадает с соответствующим полем в зависимой таблице. В описанных выше случаях устанавливается именно такое соединение. В настоящее время широко используются такие понятия, как «левое» и «правое» соединение, когда в результатную таблицу помещаются все записи из основной или зависимой таблицы соответственно, даже если для них нет связанных записей в другой таблице. Но не все системы позволяют в QBE реализовывать такие соединения. В случаях, когда возможно задание разных типов соединений, конкретный способ реализации отличается в разных СУБД. Так, в Access «левое» и «правое» соединения можно определить, задав для связи «параметры объединения» или перейдя в SQL. В dBase IV никаких специфических терминов для обозначения такого типа соединений нет, но включение слова Every в запрос на QBE выполняет ту же роль.