### Оглавление

Назад | Вперед

СОЗДАНИЕ БАЗЫ ДАННЫХ И ОБЪЕКТОВ ТИПА “ТАБЛИЦА” В СРЕДЕ MS ACCESS.

Определение связей между таблицами, задание схемы базы данных.

Чтобы открыть среду MS Access выполните команду “Пуск”® “Программы”® “Microsoft Access”.

Таблицы

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

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

Создание таблицы

Прежде чем создать таблицу, необходимо открыть базу данных, в которой MS Access будет хранить эту таблицу. Затем в окне базы данных следует выбрать закладку “Таблица”, нажать кнопку “Создать”, и в открывшемся окне диалога выбрать необходимый режим создания таблицы: “Мастер” или “Конструктор”.

а) с использованием конструктора таблиц

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

В первом столбце пользователь имеет возможность задать любое имя столбца, при этом необходимо учесть, что в именах полей запрещено использовать символы ‘!’ , ’.’ , ’[’ , ’]’. Максимальная длина имени 64 символа. Не рекомендуется использовать в именах полей пробелы, т.к. в дальнейшем могут некорректно выполняться запросы. Следует помнить, что столбцы в таблице будут располагаться именно в том порядке, в котором вы их задали. Таким образом, желательно с самого начала продумать их последовательность с учетом удобства последующей эксплуатации всей таблицы в целом. Так, например, любая

сортировка таблиц практически во всех СУБД производится слева направо. Иными словами, сначала выполняется условие сортировки, заданное в первом столбце, затем - во втором, и так далее. Если в таблице, по недосмотру, столбец с номерами домов окажется перед столбцом с названиями улиц, то вы не сможете, без дополнительных вспомогательных операций, отсортировать таблицу сначала по улицам, а потом по номерам домов. Придется создавать отдельный запрос, который потребует дополнительного места, дополнительной вычислительной мощности и дополнительного времени на его выполнение.

После задания имени поля в СУБД Microsoft Access требуется указать тип данных, которые в этом поле предполагается хранить. Выделив столбец “Тип данных” поля, вы тем самым попадаете в список возможных значений, в котором нужно лишь указать желаемый вариант. В качестве типа данных поля можно использовать следующие стандартные типы:

Наименование типа данных | Содержимое | Максимальное значение данного типа
Текстовый | (Значение по умолчанию). Текст или числа, не требующие проведения расчетов, например, номера телефонов. | Число символов, не превышающее минимальное из двух значений: 255 или значение свойства “Размер поля”. Microsoft Access не сохраняет пустые символы в неиспользуемой части поля.
Поле МЕМО | Длинный текст или комбинация текста и чисел. | До 65535 символов.
Числовой | Числовые данные, используемые для проведения расчетов. | 1,2,4 или 8 байт.
Дата/время | Даты и время, относящиеся к годам с 100 по 9999 включительно. | 8 байт.
Денежный | Денежные значения и числовые данные, используемые в математических расчетах, проводящихся с точностью до 15 знаков в целой и до 4 знаков в дробной части. | 8 байт.
Счетчик | Уникальные последовательно возрастающие (на 1) или случайные числа, автоматически вводящиеся при добавлении каждой новой записи в таблицу. Значения полей типа счетчика обновлять нельзя. | 4 байт
Логический | Логические значения,а также поля,которые могут содержать одно из двух возможных значений (True/False,Да/Нет). | 1 бит.
Поле объекта OLE | Объект (например, электронная таблица Microsoft Excel, документ Microsoft Word, рисунок, звукозапись или другие данные в двоичном формате), связанный или внедренный в таблицу Microsoft Access. | До 1 Гбайт (ограничивается объемом диска).
Гиперссылка | Строка, состоящая из букв и цифр и представляющая адрес гиперссылки. Адрес гиперссылки может состоять максимум из трех частей: текст s- текст, выводимый в поле или в элементе управления; адрес s- путь к файлу (в формате пути UNC) или странице (адрес URL); дополнительный адрес s- смещение внутри файла или страницы. Каждая из трех частей в типе Гиперссылка может содержать до 2048 символов. | Тот же размер, что и у ключевого поля, используемого в подстановке (обычно 4 байт).
Мастер подстановок | Создает поле, в котором предлагается выбор значений из списка или из поля со списком, содержащего набор постоянных значений или значений из другой таблицы. Выбор этого параметра в списке в ячейке запускает мастера подстановок, который определяет тип поля. |

Как только с определением типа покончено, можно перейти к точной подгонке. Допустим, вы создаете поле, в котором предполагается вводить наименование городов. Естественно, это будет поле текстового типа. Однако отводить ему все двести пятьдесят пять символов наверняка излишне. Даже

если очень постараться, трудно будет найти такое наименование населенного пункта, общая длина которого превысит двадцать пять букв. Таким образом, указав в группе “Общие” на вкладке “Общие” в строке “Размер поля” величину “25”, вы сэкономите место для двухсот тридцати символов. Эта, вроде как небольшая, экономия приобретет несколько иной смысл, если предположить, что в базе может быть сто тысяч строк.

В том случае, если данные могут иметь определенный формат, то их представление можно принудительно указать в строке “Формат поля”. Допустим, для полей типа Дата/Время можно указывать только часы, либо часы и минуты, либо часы, минуты и секунды. Причем как в 12-и, так и в 24-х часовом представлении. Все возможные варианты представления данных автоматически подбираются в зависимости от того, какой тип данных вами выбран.

Строка “Маска ввода” существует на тот случай, когда данные должны вводиться в заранее заданной форме. Человек привык записывать телефонный номер, указывая в скобках междугородний код, затем несколько групп цифр, разделенных тире. Было бы удобно, если бы система не заставляла оператора вводить каждый раз, кроме цифр, еще и тире. Поэтому весьма нелишне ввести маску набора цифр, чтобы Microsoft Access автоматически расставляла вводимые с клавиатуры

цифры согласно необходимой схеме. В нашем примере это выглядело бы так: (###) ##-##-##)

Ниже приведены значения символов, используемых при создании маски ввода.

Символ | Описание
0 | Цифра (от 0 до 9, ввод обязателен; символы плюс [+] и минус [-] не допускаются).
9 | Цифра или пробел (ввод не обязателен; символы плюс и минус не допускаются).
# | Цифра или пробел (ввод не обязателен; пустые символы преобразуются в пробелы, допускаются символы плюс и минус).
L | Буква (от A до Z или от А до Я, ввод обязателен).
? | Буква (от A до Z или от А до Я, ввод не обязателен).
A | Буква или цифра (ввод обязателен).
а | Буква или цифра (ввод необязателен).
& | Любой символ или пробел (ввод обязателен).
C | Любой символ или пробел (ввод необязателен).
. , : ; - / | Десятичный разделитель и разделители тысяч, значений дат и времени. (Отображаемый символ зависит от настроек языка и стандартов на панели управления Windows.)
< | Указывает перевод всех следующих символов на нижний регистр.
> | Указывает перевод всех следующих символов на верхний регистр.
! | Указывает заполнение маски ввода справа налево, а не слева направо. Заполнение маски символами всегда происходит слева направо. Восклицательный знак в маске ввода можно помещать в любую позицию.
\ | Указывает ввод любого следующего символа в качестве текстовой константы. Используется для отображения всех перечисленных в данной таблице символов как текстовых констант (например, \A выводится как символ “A”).
Пароль | Значение “Пароль”, заданное для свойства “Маска ввода”, создает поле для ввода пароля. Любой символ, введенный в поле, сохраняется как символ, но отображается как звездочка (*).

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

Так как таблица является жесткой формой, то она крайне плохо относится к незаполненным полям. Почти повсеместно незаполненное поле не содержит вообще никакой информации, что всегда приведет к сбою, если такой столбец подвергнется обработке любой автоматической функцией. С другой стороны, операторы обычно весьма невнимательно относятся к полям, значения в которых меняются редко. Предположим, вы работаете в основном с клиентами из Костаная, но время от времени встречаются и иногородние. Если оставить этот вопрос без внимания, ошибки в заполнении формы практически неизбежны. Чтобы их избежать, стоит ввести в строке “Значение по умолчанию”, если придерживаться вышеописанного примера, слово “Костанай”. В этом случае, как только будет создана новая запись, в том поле, где вы установили значение по умолчанию окажется введенным город “Костанай”. Естественно, его можно заменить любым другим, однако больше не придется постоянно следить за этим полем без особой надобности.

Строка “Условие на значение” предназначена для организации так называемой “защиты от дурака”. Во избежание ошибок, желательно постараться заранее ограничить все возможные действия пользователя в тех случаях, когда такое возможно. Заранее определив “что нельзя”, вы одновременно убиваете двух зайцев. С одной стороны, это воспрепятствует попаданию в таблицу заведомо неверных данных, даже если они совпадают по типу. С другой стороны, в случае возникновения подобной ошибки Microsoft Access выведет на экран соответствующее предупреждение

Как известно, любые данные могут быть важными, а могут быть второстепенными. Чтобы система была в состоянии самостоятельно отслеживать заполнение первостепенных полей, следует сказать “Да” в строке “Обязательное поле”. Обязательное поле должно заполняться вручную.

Технология СУБД возникла, прежде всего, для того, чтобы извлекать необходимые данные из хранилища с минимальными затратами. Одним из механизмов, с помощью которого подобная цель достигается, является индекс. Это как бы своего рода дополнительная метка, по которой СУБД Microsoft Access производит просмотр своего содержания. Сначала просматриваются ключевые поля, затем - индексированные, и только потом все остальные. Таким образом, если вы предполагаете, что к данному полю возможно частое обращение при поиске какого-либо значения, то стоит указать его как индексированное, что делается в строке “Индексированное поле”. Индексированное поле может содержать как уникальные, так и повторяющиеся значения. Пользователь может создать сколько угодно индексов. Индексы создаются при сохранении макета таблицы и автоматически обновляются при вводе и изменении записей. Пользователь может в любое время добавить новые или удалить ненужные индексы в окне конструктора таблиц. Однако индексы

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

Предположим, некоторая компания работает с несколькими видами валют. Понятно, что каждый раз, когда требуется такие валюты определять для каких-либо надобностей, необязательно создавать отдельные реестры. Это достаточно трудоемко, да и ресурсов машинных требует. Значительно удобнее задать в проекте всего одну таблицу, в которой будет вестись учет всех применяющихся денежных единиц, а в тех случаях, когда подобная информация понадобится в других местах, - подставлять там содержимое единого валютного реестра. В таком случае, на вкладке “Подстановка” в поле “Тип элемента управления” следует выбрать что-либо, кроме обычного поля ввода. Например, если выбран вариант “Поле со списком”, то в табличном представлении вместо обычной ячейки в соответствующем месте появится поле с выпадающим списком, из содержимого которого пользователь и будет выбирать конкретное значение, которое впоследствии станет заноситься в таблицу в качестве его текущего значения.

Желательно, чтобы каждая ваше таблица содержала ключевое поле. Ключевым должно быть такое поле или их сочетание, которое однозначно описывает всю запись, то есть строку в таблице. Обычно в этом качестве используется нумерация строк. Поэтому первым полем любой таблицы зачастую задается поле с типом “Счетчик”, содержимое которого автоматически увеличивается на единицу при создании новой строки. Чтобы поле стало ключевым, в режиме конструктора, его следует выделить (то есть выделить всю строку этого поля) и вызвать контекстное меню, где выбрать “Ключевое поле”. Слева, возле данного поля, появится маленький ключик, который и символизирует, что данное поле является ключевым.

Для каждого поля можно ввести произвольный комментарий, относящийся к полю данных. Типичным комментарием является описание назначения поля. Этот комментарий можно записать в столбце “Описание”

.

На этом создание таблицы при помощи конструктора заканчивается. Сразу после сохранения на вкладке “Таблицы” рабочей области Microsoft Access появится соответствующая пиктограмма с заданным вами названием. В дальнейшем, эту таблицу можно открывать для просмотра (или заполнения), а также для модернизации.

Связывание таблиц

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

На практике наиболее часто встречается связь “один-ко-многим” (1:М). При таком типе связи каждой записи главной таблицы могут быть поставлены в соответствие одна или несколько записей, так называемой, подчиненной таблицы.

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

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

Для создания связей между таблицами в MS Access используется “Схема данных”, попасть в которую можно, выполнив команду “Сервис”

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

Удаление связи

Выделите удаляемую связь, вызовите контекстное меню, где выберите команду “Удалить” и подтвердите удаление связи.

Создание подстановки

Подстановка создается в режиме конструктора таблиц либо с помощью мастера подстановок, либо с использованием SQL-запросов.

Создание подстановки с помощью мастера подстановок

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

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

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

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