В создаваемой БД такая связь существует между таблицами РАЗДЕЛЫ и КНИГИ, так как к одному и тому же разделу может относиться множество книг.
Отношение «многие-ко~многим»
При отношении «многие-ко-многим» одной записи в таблице А могут соответствовать несколько записей в таблице В, а одной записи в таблице В - несколько записей в таблице А. Такая схема реализуется только с помощью третьей связывающей таблицы, ключ которой состоит, по крайней мере, из двух полей, которые являются полями первичных ключей в таблицах А и В. Таблицы А и В связываются с этой таблицей отношением «один-ко-многим».
Так, например, в создаваемой БД между таблицами АВТОРЫ и КНИГИ, существует отношение «многие-ко-многим», так как у одного автора может быть несколько книг, а у одной книги может быть несколько авторов. Для установления этой связи введена связующая таблица КНИГИАВТОРЫ, с которой каждая из двух таблиц должна быть связана отношением «один-ко-многим».
Отношение «многие-ко-многим» существует также между таблицами КЛИЕНТЫ и КНИГИ, так как один клиент может купить несколько разных книг, а каждая книга может быть куплена разными клиентами. Эта связь устанавливается с помощью таблицы ПОКУПКИ, с которой каждая из двух таблиц также связывается отношением «один-ко-многим».
Отношение «один-к-одному»
При отношении «один-к-одному» каждая запись в таблице А может иметь не более одной связанной записи в таблице В и наоборот. Этот тип связи используют не очень часто, поскольку такие данные могут быть помещены в одну таблицу. Связь с отношением «один-к-одному» используют для разделения очень широких таблиц, для отделения части таблицы по соображениям защиты, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице.
В Microsoft Access связываемые поля не обязательно должны иметь одинаковые имена, но они должны иметь одинаковые типы данных и одинаковый смысл. Кроме того, связываемые поля числового типа должны иметь одинаковые значения свойства Размер поля.
Существует особые требования для связывания поля счетчика: единственный тип данных, соответствующий типу Счетчик, это Числовой размером Длинное целое. Поэтому если внешний ключ связующей таблицы, созданной для реализации отношения «многие-ко-многим», содержит поля счетчика связываемых таблиц, в связующей таблице их необходимо описать как Числовые размером Длинное целое.
Перед установлением связей необходимо закрыть все открытые таблицы. Создавать или изменять связи между открытыми таблицами нельзя.
Связи между таблицами определяются в окне Схема данных. Это окно можно открыть из окна БД, нажав кнопку Схема данных на панели инструментов или выбрав команду Схема данныхиз контекстного меню. Контекстное меню вызывается щелчком правой кнопки мыши. Если в базе данных не определено никаких связей, то на экран автоматически будет выведено окно Добавление таблицы, в котором нужно выбрать таблицы или запросы для отображения их в схеме данных.
Если это окно не выводится автоматически, то надо щелкнуть правой кнопкой мыши и из контекстного меню выбрать команду Добавить таблицуили нажать кнопку Добавить таблицу на панели инструментов.
В окне Добавление таблицы нужно выделить нужную таблицу или запрос и нажать кнопку Добавить. Список полей этой таблицы появится в верхней части окна Схема данных. Подобные манипуляции выполняются для каждой из таблиц, после чего окно Добавление таблицы следует закрыть.
Для связывания двух таблиц надо выбрать ключевое поле в одной таблице и, не отпуская левую кнопку мыши, перетащить его на соответствующее поле во второй таблице. В открывшемся диалоговом окне Связи можно проверить имена полей, представленные в двух колонках. В случае необходимости можно внести изменения в имена полей. Для создания связи надо нажать кнопку Создать. Для каждой пары таблиц, которые необходимо связать, следует выполнить такие же действия. В окне Схема данных отобразятся все установленные связи, однако тип этих связей останется неопределенным.
В диалоговом окне Связи можно установить несколько флажков.
Флажок Обеспечение целостности данныхне позволит добавить в подчиненную таблицу, находящуюся на стороне отношения "многие", запись с неправильным кодом. Access также не разрешит удалить из "родительской" таблицы, находящейся на стороне отношения "один", запись, для которой имеются связанные записи в подчиненной таблице.
После установления флажка Обеспечения целостности Access делает доступными еще два флажка: Каскадное обновление связанных палей и Каскадное удаление связанных записей. При установлении первого из флажков Access будет обновлять значения внешних ключей в подчиненной таблице при изменении значения первичного ключа в родительской таблице. Установленный второй флажок означает, что при удалении строки из родительской таблицы будут удалены все дочерние строки.
После установления флажков тип связи будет определен, и на схеме появятся соответствующие изображения.
При закрытии окна схемы данных на экран будет выведено сообщение, нужно ли сохранять макет схемы. Независимо от того, будет он сохранен или нет, связи, созданные в базе данных, будут сохранены.
Макет связей можно в любой момент просмотреть, перейдя в окно БД и нажав кнопку Схема данных на панели инструментов.
С помощью кнопки Очистить макет можно очистить окно Схема данных. Установленные связи при этом не разрушатся.
Можно устанавливать связи и между не ключевыми полями таблиц. В этом случае создается неопределенное отношение. Access по умолчанию создает линию объединения между таблицами, но условия целостности данных при этом не накладываются и нет гарантии уникальности записей в любой из таблиц.
Для связывания таблицы самой с собой или для связывания поля таблицы с другим полем той же таблицы следует дважды добавить таблицу. Такая ситуация возникает при определении поля с подстановкой значений из той же таблицы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.