Базы данных Microsoft Access 2003

         

Термин взаимосвязь зачастую трактуется неоднозначно.



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

Концепция связей вполне согласуется с различными аспектами Access. Изучение основ и методов их применения позволит поставить связи на службу как разработчикам баз данных, так и их пользователям. Если говорить объективно, то связи — это фундамент, на котором держится вся база данных. По мере изучения этой темы вы поймете, что создание корректных связей между таблицами вполне под силу каждому, хотя и требует определенного терпения и интуиции.

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

К настоящему моменту уже затронута самая сложная тема во всей книге — первичные и внешние ключи (глава 4, «Планирование базы данных»), а в главе 5 были созданы основные таблицы. Теперь же речь пойдет о том, как создать связи между этими таблицами. Когда это будет сделано, то, к примеру, для нахождения каталога, с помощью которого заказывались последние семена космеи, понадобится лишь несколько секунд. Так же просто будет просмотреть, скажем, информацию обо всех пищевых растениях, выращиваемых в данный момент на огороде.

Использование мастера подстановок



В главе 5, как вы помните, для учебной базы данных было создано три таблицы, а также три типа записей и несколько адресов каталогов (рис. 6.1). Теперь же нам нужно добавить к ним еще несколько записей о растениях.



Рис. 6.1. Эти три таблицы были созданы в главе 5


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

 Таблица 6.1. Добавляемые записи о растениях

Имя
Латинское имя
Каталог
Тип
Тысячелистник
Achillea millefolium
Огородник
Декоративное
Синий василек
Echinacea purpurea
Огородник
Лечебное
Космея
Cosmos bipinnatus
Фермер
Декоративное
Тунбергия
Rudbeckia hirta
Огородник
Декоративное
Живокость
Delphinium ajacis
Огородник
Декоративное
Германская ромашка
Matricaria recutita
Фермер
Лечебное
Календула
Calendula officinalis
Цветоводство
Декоративное


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

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

2. Нажмите клавишу со стрелкой вправо и введите Achillea millefolium.

3. Пропустите следующие два поля и введите значение, определяющее номер для растения декоративного типа. Едва ли вы не помните этот номер, откройте таблицу Типы. Как видите, значением номера для растения декоративного типа является 1.

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

Повторив описанные выше шаги, введите нужные сведения о растении Синий василек, которое применяется в лечебных целях. Стоит еще раз вернуться к таблице Типы и посмотреть на значение типа для лечебных растений. Нужное значение — 3, поэтому введем его в поле Номер типа для растения Синий василек.

Подобный метод ввода данных быстро надоест, да и к тому же его эффективность очень низка. Если работа со взаимосвязанными таблицами должна выполняться просто и быстро, почему же нам приходится так много возиться при вводе всего лишь нескольких записей (рис. 6.2)?

В главе 4 мы не рекомендовали вводить данные непосредственно в таблицу. Но на этапе разработки и тестирования вполне допустимо поэкпериментировать с несколькими записями. В дальнейшем же для создания работоспособной базы данных будут создаваться формы ввода данных.




Рис. 6.2. Запомнить значения типа растения для каждой записи непросто


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

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

1. Откройте таблицу Растения в режиме конструктора, выбрав ее в окне Растения: база данных и щелкнув на кнопке Вид панели инструментов.

2. В настоящий момент типом данных для поля Номер типа является значение Числовой. Щелкните мышью на правой области столбца Тип данных в поле Номер типа, чтобы активизировать раскрывающийся список.

3. Выберите значение Мастер подстановок, как показано на рис. 6.3.

4. В первом окне мастера предлагается выбрать между использованием значения из таблицы или запроса и вводом фиксированного набора значений. В нашем случае требуется отображение описательных значений из таблицы Типы, поэтому выбираем переключатель Объект «столбец подстановки» будет использовать значения из таблицы или запроса, как и принято по умолчанию. Щелкните на кнопке Далее.



Рис. 6.3. Выбор мастера подстановок из раскрывающегося списка столбца Тип данных


5. Если требуется отобразить уже существующие значения, мастер выведет соответствующий список таблиц. Нужные значения находятся в таблице Типы, поэтому следует выбрать параметр Таблица: Типы. Обратите внимание на панель Показать в нижней области экрана. При необходимости выбрать значения из запроса активизируйте переключатель Запросы. Возможен также выбор переключателя Таблицы и запросы. Щелкните на кнопке Далее.

6. В следующем окне отобразятся все поля таблицы или запроса, которые были выбраны в предыдущем окне. Как правило, лучше указывать поле, представляющее собой первичный ключ таблицы подстановки, и поле, содержащее необходимые для отображения значения. В данном случае щелкните на кнопке с двойными стрелками для переноса обоих полей в список Выбранные поля (рис. 6.4). Первичным ключом таблицы является поле Номер типа, а в поле Описание содержатся значения, которые будут предоставляться пользователю. Щелкните на кнопке Далее.



Рис. 6.4. Перенос обоих полей в список Выбранные поля


7. Следующее окно позволяет выбирать поля, используемые для сортировки списка данных. В нашем случае подойдет изначальный порядок, поэтому щелкните на кнопке Далее.

8. В окне, показанном на рис. 6.5, отображаются значения для поля подстановки. Обратите внимание на тот факт, что Access будет отображать не значения первичного ключа, а только описательные значения, выбранные в текущем списке. В случае необходимости измените ширину столбцов для полноценного отображения каждого значения. Щелкните на кнопке Далее.



Рис. 6.5. Описательное значение в поле подстановки


9. Наконец, мастер запросит имя нового поля подстановки. Примите имя, предложенное мастером, и щелкните на кнопке Готово.

10. Теперь появится окно с запросом на сохранение таблицы, в котором следует щелкнуть на кнопке Да. Если вы щелкнете на кнопке Нет, мастер аннулирует только что созданные параметры поля подстановки.

Как видите, Access автоматически отсортировала записи после добавления поля подстановки. На самом деле сортировка не имеет  никакого отношения к этому полю — она по случайному стечению обстоятельств была выполнена после добавления поля подстановки. Дело в том, что Access упорядочивает данные по значениям первичного ключа. Поскольку поле первичного ключа является текстовым (Имя), Access сортирует записи в алфавитном порядке в соответствии со значениями этого поля.



Хоть это и не имеет значения на данном этапе, отметим, что формы и отчеты наследуют поля подстановки таблиц. Другими словами, все формы и отчеты, связанные с таблицей Растения, для отображения содержимого поля Номер типа будут использовать комбинированное окно, а не текстовый элемент управления, принятый по умолчанию. Более подробные сведения по этой теме представлены в главе 8.

Для просмотра нового поля подстановки следует щелкнуть на кнопке Вид, которая находится на панели инструментов конструктора базы данных. Ранее поле Номер типа содержало только числовые значения (см. рис. 6.2), а теперь здесь хранятся описательные текстовые наименования. Таким образом, поле подстановки автоматически отображает для любой записи соответствующее описание, а не ее числовое значение.

Поле подстановки также дает возможность ввести значения внешнего ключа для каждой записи в таблице Растения. Вернемся к табл. 6.1 и введем еще одну запись, на этот раз для космеи. При переходе к полю Номер типа щелкните на значке с изображением стрелки для активизации раскрывающегося списка поля подстановки (рис. 6.6).

Для того чтобы ввести значение типа для новой записи, щелкните на значении в ниспадающем списке, выберите для растения Камея значение Декоративное и введите оставшиеся записи из табл. 6.1. По окончании этой работы вы должны получить таблицу, показанную на рис. 6.7 (закройте и снова откройте ее, в результате чего будет произведена автоматическая сортировка записей).

Откройте таблицу Растения в режиме конструктора и просмотрите параметры поля подстановки (щелкнув на кнопке Вид на панели инструментов). Теперь выберите любое поле в столбце Номер типа и щелкните на вкладке Подстановка на панели Свойства поля. 



Рис. 6.6. Активизация раскрывающегося списка поля подстановки



Рис. 6.7. Теперь в таблице содержатся сведения о семи растениях


Обратите внимание на поле Тип элемента управления, содержащее текстовое поле для ввода данных и прокручиваемый список. Данные можно вводить непосредственно в текстовое поле, а нужный элемент выбирается из раскрывающегося списка. Более полно процесс создания различных элементов управления описывается в главе 8, «Создание и использование форм данных», и в главе 13, «Настройка форм».

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

Удаление поля подстановки



Для удаления этого поля выберите значение Поле в раскрывающемся списке свойства поля Тип элемента управления, показанном на рис. 6.8. Но не стоит делать это прямо сейчас, так как поле подстановки, добавленное для поля Номер типа, нам еще понадобится. Не изменяя поле подстановки, закройте таблицу растений.

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



Рис. 6.8. Для удаления поля подстановки выберите в списке Тип элемента управления значение Поле


Возможно, при вводе записей в таблицу Растения в предыдущем разделе вам закрадывалась в голову мысль о целесообразности добавления таблицы подстановки для поля ИмяКаталога. Это позволило бы нанести серьезный удар по опечаткам — признайтесь, ведь вам приходилось при вводе значений исправлять не одну и две записи! К слову сказать, в главе 13 описывается еще один, альтернативный, метод отображения элементов в раскрывающемся списке.

Анализ содержимого таблиц для создания связей



Похоже, работа над структурой базы данных наконец-то завершена? Посмотрим, согласится ли с этим предположением анализатор таблиц. Этот инструмент просматривает текущие записи базы данных и предлагает способы их оптимизации.

Анализатор выявляет повторяющиеся данные и помогает скопировать их в новую связанную таблицу. Далеко не в каждой таблице понадобится производить модификацию, однако лишний раз провести анализ никогда не помешает. Кроме того, пользователи, пока что не уверенные в своих знаниях и способностях, могут доверить анализатору создание упорядоченных таблиц (определение процесса упорядочения приводится в главе 4). Для того чтобы проанализировать таблицу Растения, следует выполнить такие действия.

1. Выберите команду Сервис>Анализ>Таблица.

2. В первом окне мастера приведены варианты описания проблем, связанных с возможным дублированием данных. Просмотрите представленные там примеры и щелкните на кнопке Далее.

3. В следующем окне даны примеры разделения анализатором таблиц. Ознакомьтесь с каким-либо примером и щелкните на кнопке Далее.

4. Выберите для анализа таблицу Растения и щелкните на кнопке Далее.

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

6. В следующем окне, представленном на рис. 6.9, отображается предлагаемая мастером схема разделения таблицы. Не правда ли, она нам знакома? Именно такой была схема, созданная в главе 4, на этапе первоначальной разработки базы данных. На данный момент таблицы Растения и Каталоги не связаны между собой, поэтому мастер не знает о существовании таблицы каталогов.



Рис. 6.9. Предлагаемое мастером решение


7. Можно было бы завершить выполнение задачи, однако имеет смысл продолжить знакомство с анализатором. Просто запомните, что база данных имеет нормальную структуру — не хватает лишь связи между двумя таблицами.

8. Откройте окно Таблица1 и щелкните в нем на кнопке Переименовать таблицу (рис. 6.9). Введите название НовыеРастения и щелкните на кнопке ОК.

9. Повторив п. 8, переименуйте окно Таблица2 в НовыеКаталоги, после чего щелкните на кнопке Далее.

10. Теперь появилась возможность установить первичный ключ повторно. Мастер предложит добавить к таблице НовыеКаталоги поле автоматически присваиваемого уникального кода записи и использовать его в качестве первичного ключа. Однако для таблицы НовыеРастения первичный ключ не указывается, поэтому придется сделать это самостоятельно. Выберите в списке НовыеРастения поле Имя и щелкните на кнопке Ключевое поле. Рядом с полем появится значок с изображением ключа. Щелкните на кнопке Далее.

11. В последнем окне мастер предложить создать запрос. Пока что выберите переключатель Нет, запрос создавать не нужно. Кроме того, можно снять флажок Вывести справку по работе с новой таблицей или запросом, иначе придется закрывать еще одно окно. Щелкните на кнопке Готово.

Две созданные таблицы — НовыеРастения и НовыеКаталоги — во многом напоминают таблицы Растения и Каталоги. Два поля в таблице НовыеКаталоги мы поменяли местами, что, однако, не имеет значения. Кроме того, в таблицу НовыеРастения добавлено второе подстановочное поле. Для того чтобы отобразить поле подстановки, выберите любое значение в поле Подстановка НовыеКаталоги. Поле, показанное на рис. 6.10, было автоматически создано анализатором таблицы.



Рис. 6.10. Анализатор добавил второе подстановочное поле в таблицу НовыеРастения

На данном этапе были созданы две связи:

 между полями Номер Типа в таблице Растения и таблицей Типы;  между полями Код в таблице НовыеКаталоги и полем Подстановка НовыеКаталоги в таблице НовыеРастения (связь создана автоматически анализатором).


Это упражнение выполнялось с целью изучить работу анализатора, следовательно, таблицы НовыеРастения и НовыеКаталоги можно смело удалить. Для этого достаточно выбрать таблицу в основном окне и нажать клавишу <Delete>. После удаления двух таблиц, созданных анализатором, останется только одна связь — между таблицами Растения и Типы, созданная мастером подстановки в первом разделе этой главы. В таком виде новые таблицы можно и оставить, они не будут пересекаться с другими объектами.


Работа с окном «Схема данных»



Мастер подстановок и анализатор таблиц хорошо выполняют свою работу, но создавать связи можно и самостоятельно. Сначала, щелкнув на кнопке Схема данных на панели инструментов, откройте окно Схема данных, показанное на рис. 6.11. Если кнопки не видно, нажмите клавишу <F11> для перехода в окно База данных.

В окне Схема данных представлено два списка полей, один для таблицы Растения, а другой — для таблицы Типы (если в окне ничего нет, щелкните на кнопке Отобразить все связи на панели инструментов Схема данных). Кроме того, две таблицы соединены так называемой соединительной линией. При создании поля подстановки для поля Номер типа в таблице Растения эта связь была автоматически создана мастером.



Рис. 6.11. Окно Схема данных


При необходимости создать связь нужно перетащить поле из одного списка в другой. Как правило, поле первичного ключа перемещается на аналогичное поле первичного ключа связанной таблицы. Присмотритесь к соединительной линии — она связывает два поля Номер типа.

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

Сейчас нам необходимо создать связь между таблицами Растения и Каталоги, чем и займемся.

1. Щелкните на кнопке Отобразить таблицу на панели инструментов окна Схема данных.

2. В диалоговом окне Добавление таблицы выберите значение Каталоги и щелкните на кнопке Добавить. Кроме того, можно дважды щелкнуть на указанном значении.

3. Закройте диалоговое окно, щелкнув на кнопке Закрыть.

4. Выберите поле Имя в списке Каталоги, но не отпускайте кнопку мыши. Внешний вид указателя мыши изменится, превратившись в такой, как показано на рис.6.12.



Рис. 6.12. При переносе поля из одного списка в другой указатель мыши изменяет свой вид


5. Продолжая удерживать кнопку мыши нажатой, перетащите поле Имя на поле ИмяКаталога в списке Растения и отпустите кнопку. Появится диалоговое окно Изменение связей.

6. Установите флажок Обеспечение целостности данных, как показано на рис. 6.13, и щелкните на кнопке Создать (принцип сохранения целостности связей описан в следующем разделе этой главы).



Рис. 6.13. Определение параметров связей в диалоговом окне Изменение связей


На рис. 6.14 показана новая связь между двумя таблицами. Обратите внимание, что по своему внешнему виду новая соединительная линия отличается от линии, соединяющей таблицы Растения и Типы.

 Цифра 1 радом со списком Каталоги указывает на таблицу первичного ключа или на одну сторону связи — только одна подходящая запись существует в этой таблице, так как связь основана на значении первичного ключа, которое, о чем неоднократно говорилось ранее, должно быть уникальным.  Символ бесконечности радом со списком Растения указывает на существование многочисленных элементов связей - в таблице Растения может быть множество записей, связанных с любой записью, выбранной в таблице Каталоги.


Различные типы связей



В предыдущем разделе была представлена новая концепция связи типа «один-множество», установленной между таблицами Растения и Каталоги. Всего существует три типа связей, подробное описание которых выходит за рамки данной книги, поэтому ограничимся лишь поверхностным знакомством с ними.

 Отношение «один-к-одному» - в обеих таблицах связана только одна запись. Связи такого рода встречаются нечасто.



Рис. 6.14. Только что созданная связь показана соединительной линией

 Отношение «один-ко-многим» — наиболее популярный тип связей. Каждая запись в таблице первичного ключа может быть соединена со множеством записей во взаимосвязанной таблице. Например, каждый каталог может быть связан с несколькими записями в таблице Растения, однако каждое растение при этом будет связано только с одним каталогом.  Отношение «множество-множество» — в обеих таблицах существует несколько взаимосвязанных записей. К примеру, для описания цвета каждого растения можно добавить таблицу цветов. Каждый цвет будет связан с несколькими растениями, в то время как каждое растение может иметь несколько цветов.


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

Изменение связи



Мы уже умеем создавать связь, а теперь попробуем ее изменить. При этом мы воспользуемся принципом целостности данных для обеспечения связи между таблицами Растения и Типы. Под целостностью данных будем подразумевать набор правил, защищающих данные от бессмысленных изменений. Возьмем, к примеру, связь между растениями и типами. Что, если удалить первую строку из таблицы Типы? Мы не сможем просмотреть описание растений с номером типа, равным 1. Именно здесь «придет на помощь» функция целостности связей, которая сейчас будет использоваться с уже существующей связью.

Откройте диалоговое окно Изменение связей, дважды щелкнув на связи между таблицами Растения и Типы. Установите флажок Обеспечение целостности данных и щелкните на кнопке ОК (а не на кнопке Создать, как это делалось нами ранее — см. рис. 6.13).

В результате изменения связи между таблицами Растения и Типы соответствующим образом изменится и внешний вид соединительной линии (рис. 6.15). Как видите, связь между таблицами представляет собой отношение «один-ко-многим» с поддержкой функции целостности связи.



Рис. 6.15. Обновленная соединительная линия между таблицами Растения и Типы


 

В диалоговом окне Изменение связей имеется еще несколько элементов управления (см. рис. 6.13). Рассмотрим их предназначение.

 В списке Таблица/запрос — всегда указывается первичный ключ связи. С его помощью можно указать соответствующее поле(я) ключа в ячейках, расположенных ниже списка. Как правило, Access самостоятельно определяет корректные значения.  В списке Связанная таблица/запрос — всегда указывается внешний ключ связи. С его помощью можно определить соответствующее поле(я) в ячейках ниже списка. Как правило, Access также самостоятельно определяет корректные значения.  Кнопка Объединение — щелчок на ней выводит на экран еще одно диалоговое окно, в котором можно изменить тип соединения. Эта операция нами применяться не будет.  Кнопка Новое — позволяет связать несколько ключей полей (более подробная информация о первичных и внешних ключах представлена в главе 4).  Флажок каскадное обновление связанных полей — обеспечивает целостность данных, возможную только при условии установки соответствующего флажка. Позволяет автоматически обновить все значения связанного внешнего ключа при изменении значения главного первичного ключа. Лишь в случае крайней необходимости рекомендуется использовать эту функцию.  Флажок каскадное удаление связанных полей — обеспечивает целостность данных, возможную только при условии установления флажка Обеспечение целостности данных. Позволяет автоматически удалить все записи связанного внешнего ключа при удалении записи первичного ключа. Рекомендуется использовать лишь в случае необходимости.  Поле Тип отношения — определяет тип связи между таблицами.


Закройте окно Схема данных и щелкните на кнопке Да, чтобы подтвердить корректность внесенных изменений.

Обеспечение целостности данных



Ранее в окне Изменение связей (рис. 6.13) был установлен флажок Обеспечение целостности данных. Принцип обеспечения целостности подразумевает необходимость использования набора правил, защищающих данные, поскольку Access запрещает добавление или изменение некоторых записей. Таким образом, обеспечение целостности данных позволяет:

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


Эти правила станут более понятными при выполнении практического задания, поэтому вернемся к таблицам и внесем в них некоторые изменения. Сначала, открыв таблицу Каталоги, попробуйте удалить первую запись. При этом появится предупреждение, которое вы видите на рис. 6.16. Щелкните на кнопке ОК.



Рис. 6.16. Функция обеспечения целостности не позволит удалить запись каталога Фермер


Запись для каталога Фермер не удалось удалить по той причине, что два растения — космея и германская ромашка — связаны с каталогом. До тех пор, пока записи о растениях не будут удалены из таблицы Растения, в каталоге Фермер от них избавиться не удастся.

Удаление этой записи, будь оно возможно, привело бы к появлению «одиночки» — связанной записи, значение внешнего ключа которой (в данном случае ключа каталога Фермер) не связано с записью соответствующей таблицы. Другими словами, в случае удаления записи каталога Фермер стало бы невозможно узнать, где были приобретены семена ромашки и космеи. Может быть, это не покажется большой проблемой, но как насчет информации о клиентах, разместивших тот или иной заказ? Ведь сведения такого рода для нас «жизненно необходимы».

Теперь посмотрим, что произойдет при попытке изменить значение первичного ключа. В таблице Каталоги попробуйте изменить название Фермер на Фермерша. При этом символ ввода будет перемещен на соседнюю строку. Изменение записи приведет к появлению предупреждения о невозможности ее удаления, поскольку таблица Растения содержит связанные записи. Щелкните на кнопке ОК, а затем на кнопке < Esc>. Причина появления сообщения та же, что в предыдущем случае: изменение названия каталога привело бы к появлению в таблице Растения «одиночек», а именно растений космея и ромашка.

Если убран флажок Обеспечение целостности данных, Access позволяет обновить любое значение или добавить/удалить любую запись, когда не изменится тип данных и не нарушаются правила проверки достоверности, описанные в главе 11, «Настройка таблиц». По этой причине флажок желательно не снимать. Кроме того, не следует устанавливать флажки каскадного обновления, не имея на то веского основания, и тем более не рекомендуется оставлять их постоянно установленными.


Подтаблицы как элемент связей



Обратили ли вы внимание на знак «плюс» (+) слева от каждой записи в таблице Каталоги? Access отображает такие значки в таблице первичного ключа при наличии связей с другой таблицей. Если открыть сразу три таблицы, как показано на рис. 6.17, то в таблицах Типы и Каталоги (но не в таблице Растения) появятся столбцы со знаком «плюс».

По сути, знак «плюс» свидетельствует о том, что у записи есть связь по крайней мере с одной записью в другой таблице. При наличии связи между двумя таблицами, но при отсутствии записи для конкретного значения первичного ключа вместо знака «плюс» будет указан знак «минус» (-).



Рис. 6.17. Знак «плюс» в таблице указывает на наличие связи с другой таблицей



Рис. 6. 18. Щелкните на знаке «плюс» любой записи для просмотра связанных с ней записей другой таблицы


Щелкните на знаке «плюс» слева от записи Фермер в таблице Каталоги. Результат будет похож на тот, что показан на рис. 6.18: во вложенной таблице размещены записи для космеи и германской ромашки. Использование вложенной таблицы — наиболее удобный способ отображения связанных записей.

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

1. Откройте таблицу в режиме конструктора, воспользовавшись кнопкой Вид, расположенной на панели инструментов таблицы.

2. Щелкните на кнопке Свойства, также расположенной на панели инструментов, или нажмите комбинацию клавиш <Alt+Enter>.

3. В появившемся диалоговом окне в раскрывающемся списке Имя подтаблицы выберите значение [Нет]. По умолчанию применяется значение [Авто], благодаря чему автоматически отображаются записи, связанные между собой по типу «один-ко-многим».

Если в таблице имеются связанные записи, но ни одного знака «плюс» не видно, то для отображения подтаблиц следует изменить параметры таблицы. Например, в таблице Растения подтаблицы по умолчанию не отображаются, поскольку значениям первичного ключа соответствуют связанные с ними записи и все связи размещены только между значениями внешнего ключа таблицы и двумя другими таблицами. Для того чтобы получить возможность просматривать подтаблицы таблицы Растения, выполните такие действия.

1. Откройте таблицу Растения в режиме таблицы.

2. Выберите команду Вставка>Подтаблица; появится диалоговое окно Вставка подтаблицы.

3. На вкладке Таблицы выберите опцию Каталоги.

4. В списке Подчиненные поля выберите значение Имя.

5. В списке Основные поля выберите значение ИмяКаталога, после чего щелкните на кнопке ОК.

Результат, который вы должны получить, показан на рис. 6.19. Щелкните на любом знаке «плюс», для того чтобы отобразить информацию каталога для соответствующей записи. В таблице Растения подтаблицы на самом-то деле не нужны, поэтому, щелкнув на кнопке Нет в окне запроса Access, закройте таблицу, не сохраняя внесенных в нее изменений.



Рис. 6.19. Теперь связанные с таблицей Растения записи отображаются в подтаблицах


Наличие дополнительных записей и полей затрудняет их просмотр, поэтому имеет смысл пользоваться комбинациями клавиш, представленными в табл. 6.2, — они заметно облегчат эту задачу.

Таблица 6.2. Комбинации клавиш, используемые для просмотра таблиц

Комбинация клавиш
Действие
<Ctrl+Shift+вниз>
Раскрытие подтаблицы записи
<Ctrl+Shift+вверх>
Закрытие подтаблицы
<Tab>
Переход к подтаблице с последнего поля предыдущей записи таблицы
<Shift+Tab>
Переход к подтаблице с первого поля следующей записи таблицы
<Ctrl+Tab>
Выход из подтаблицы и переход к первому полю следующей записи таблицы
<Ctrl+Shift+Tab>
Выход из подтаблицы и переход к последнему полю предыдущей записи таблицы
<Tab>
Переход к следующему полю таблицы с последнего поля подтаблицы

Подведем итоги...



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

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