Необходимый минимум знаний
Если мы хотим ускорить процесс работы с таблицами, то проще всего воспользоваться таким понятием, как индекс.Индексы позволяют ускорить выполнение запросов и сортировок, предохранить от дублирования записей в таблицах. Индекс работает почти также как предметный указатель книги. Когда мы хотим что-нибудь найти, то последовательно перелистываем страницы или обращаемся к предметному указателю – узнать, где находится то, что мы ищем.
Access работает по тому же принципу, но вместо перечня номеров страниц он рассматривает список номеров записей. Индекс позволяет сразу выполнить запрос по поиску указанной информации без последовательного просмотра всей таблицы.
При выполнении сортировки или запроса с использованием индексированного поля большая часть работы уже сделана индексом. Заметим, что каждое поле таблицы может быть индексировано, а ключевые поля индексируются автоматически. Слишком большое количество индексов в таблице приводит к замедлению других процедур.
Мощь реляционных баз данных, таких как Microsoft Access, опирается на их способность быстро найти и связать данные из разных таблиц при помощи запросов, форм и отчетов. Для этого каждая таблица должна содержать одно или несколько полей, однозначно определяющих каждую запись в таблице.
Такие поля называют первичным ключом поля таблицы. Если для таблицы определен первичный ключ, то Microsoft Access предотвращает дублирование ключа .
Первичный ключ таблицы – это специальный вид индексированного поля. Каждая созданная таблица должна иметь первичный ключ, причем он может быть только один. Если мы его при создании таблицы не назначили, то Access напомнит нам об этом и спросит, не хотим ли мы это сделать. Если ответ будет положительный, то программа создаст поле Счетчикв начале таблицы и утвердит его в качестве первичного ключа.
В качестве ключей могут быть выбраны только определенные поля. Это поля таких типов, как текстовое, числовое, Дата/время и счетчик. Поля типа логическое, OLE, MEMO не могут использоваться в виде первичного ключа. Записи автоматически сортируются по первичному ключу. Ключевое поле может находиться в любом месте таблицы, но лучше располагать его первым.
После создания в базе данных Microsoft Access отдельных таблиц по каждой теме необходимо выбрать способ, которым Microsoft Access будет вновь объединять сведения таблиц. Первым делом следует определить связи между таблицами. После этого можно создать запросы, формы и отчеты для одновременного отображения сведений из нескольких таблиц.
При создании таблиц учитываем:
Связь 1:1 создается, когда оба связываемых поля имеют уникальные значения. Уникальные значения имеет ключевое поле или поле, для которого задано свойство "Индексированное поле" со значением Да (Совпадения не допускаются).
При отношении "один-к-одному” запись в таблице A может иметь не более одной связанной записи в таблице B и наоборот. Отношения этого типа используются не очень часто, поскольку большая часть сведений, связанных таким образом, может быть помещена в одну таблицу.
Отношение “один-к-одному” может использоваться для разделения очень широких таблиц, для отделения части таблицы по соображениям защиты, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице. Эта связь самая простая.
Связь 1:М создается в том случае, когда только одно из связываемых полей является уникальным – ключевым или имеющим свойство "Индексированное поле" со значением Да (Допускаются совпадения).
Отношение "один-ко-многим” является наиболее часто используемым типом связи между таблицами. В отношении “один-ко-многим” каждой записи в таблице A могут соответствовать несколькозаписей в таблице B, но запись в таблице B не может иметь более одной соответствующей ей записи в таблице A.
При отношении "многие-ко-многим” одной записи в таблице A могут соответствовать несколько записей в таблице B, а одной записи в таблице B несколько записей в таблице A. Этот тип связи возможен только с помощью третьей (связующей) таблицы, первичный ключ которой состоит из двух полей, которые являются внешними ключами таблиц A и B. Отношение “многие-ко-многим” по сути дела представляет собой два отношения “один-ко-многим” с третьей таблицей.
Связь между таблицами определяется путем добавления связываемых таблиц в окно "Схема данных” с последующим перетаскиванием ключевого поля из одной таблицы в другую.
Тип отношения в создаваемой Microsoft Access связи зависит от способа определения связываемых полей.
1. Отношение "один-ко-многим" создается в том случае, когда только одно из полей является ключевым или имеет уникальный индекс, то есть индекс, определенный для поля с заданным для свойства Индексированное поле (Indexed) значением Да (Совпадения не допускаются). При этом ввод в индексированное поле повторяющихся значений становится невозможным. Для ключевых полей уникальный индекс создается автоматически.
2. Отношение "один-к-одному" создается в том случае, когда оба связываемых поля являются ключевыми или имеют уникальные индексы.
3. Отношение "многие-ко-многим" фактически является двумя отношениями "один-ко-многим" с третьей таблицей, первичный ключ которой состоит из полей — внешних ключей двух других таблиц.
Если перетащить поле, не являющееся ключевым и не имеющее уникального индекса, на другое поле, которое также не является ключевым и не имеет уникального индекса, создается неопределенное отношение. В запросах, содержащих таблицы с неопределенным отношением, Microsoft Access по умолчанию отображает линию объединения между таблицами, но условия целостности данных при этом не накладываются и нет гарантии уникальности записей в любой из таблиц.
Целостность данных - правила, обеспечивающие поддержание установленных межтабличных связей при вводе или удалении записей.
Если наложены условия целостности данных, Microsoft Access не позволит добавить в связанную таблицу записи, для которых нет соответствующих записей в главной таблице, или изменить записи в главной таблице таким образом, что после этого в связанной таблице появятся записи, не имеющие соответствующих главных записей, а также удалить записи в главной таблице, для которых имеются подчиненные записи в связанной таблице.
Допускается определение связей не только для таблиц, но и для запросов. Однако для запросов соблюдение целостности данных не обязательно.