1.8.9. Связи между таблицами
Принципы работы связи между таблицами
В приведенном примере поля в четырех таблицах должны быть скоординированы таким образом, чтобы отображать сведения об одном и том же заказе.
Эта координация осуществляется путем установления связей между таблицами. Связь между таблицами устанавливает отношения между совпадающими значениями в ключевых полях, обычно между полями, имеющими одинаковые имена в обеих таблицах. В большинстве случаев с ключевым полем одной таблицы, являющимся уникальным идентификатором каждой записи, связывается внешний ключ другой таблицы. Например, для связывания сотрудников с заказами, за которые они отвечают, следует создать связь между полями «Код Сотрудника».
Рис. 17
1. Поле «Код сотрудника» отображается в двух таблицах — как поле первичного ключа.
2. Как внешний ключ.
Отношение «один-ко-многим»
Отношение «один-ко-многим» является наиболее часто используемым типом связи между таблицами. В отношении «один-ко-многим» каждой записи в таблице A могут соответствовать несколько записей в таблице B, но запись в таблице B не может иметь более одной соответствующей ей записи в таблице A.
Рис. 18
1. Один поставщик
2. может поставлять несколько товаров
3. но у каждого товара может быть только один поставщик
Отношение «многие-ко-многим»
При отношении «многие-ко-многим» одной записи в таблице A могут соответствовать несколько записей в таблице B, а одной записи в таблице B несколько записей в таблице A. Этот тип связи возможен только с помощью третьей (связующей) таблицы, первичный ключ которой состоит из двух полей, которые являются внешними ключами таблиц A и B. Отношение «многие-ко-многим» по сути дела представляет собой два отношения «один-ко-многим» с третьей таблицей.
Например, отношение «многие-ко-многим» между таблицами «Заказы» и «Товары» определяется путем создания двух отношений «один-ко-многим» с таблицей «Заказано». В одном заказе может быть много товаров, а каждый товар может появляться в нескольких заказах.
Рис. 19
1. Первичный ключ из таблицы «Заказы»
2. Первичный ключ из таблицы «Товары»
3. Один заказ может содержать несколько товаров
4. Каждый товар может содержаться в нескольких заказах
Отношение «один-к-одному»
При отношении «один-к-одному» каждая запись в таблице A может иметь не более одной связанной записи в таблице B и наоборот. Отношения этого типа используются не очень часто, поскольку большая часть сведений, связанных таким образом, может быть помещена в одну таблицу. Отношение «один-к-одному» может использоваться для разделения таблиц, содержащих много полей, для отделения части таблицы по соображениям безопасности, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице. Например, можно создать таблицу для отслеживания участия сотрудников в благотворительных спортивных мероприятиях. Каждому игроку в таблице «Футболисты» должна соответствовать одна запись в таблице «Сотрудники».
Рис. 20
1. Каждому футболисту соответствует одна запись в таблице «Сотрудники».
2. Данный набор значений представляет подмножество для поля «Код Сотрудника» и таблицы «Сотрудники».
Определение связей между таблицами
Тип отношения в создаваемой Microsoft Access связи зависит от способа определения связываемых полей.
- Отношение «один-ко-многим» создается в том случае, когда только одно из полей является полем первичного ключа или уникального индекса.
- Отношение «один-к-одному» создается в том случае, когда оба связываемых поля являются ключевыми или имеют уникальные индексы.
- Отношение «многие-ко-многим» фактически является двумя отношениями «один-ко-многим» с третьей таблицей, первичный ключ которой состоит из полей внешнего ключа двух других таблиц.
Имеется возможность связать таблицу саму с собой.
Это полезно, когда нужно создать поле подстановок со значениями из этой же таблицы. Например, в таблице «Сотрудники» можно определить связь между полями «Код Сотрудника» и «Подчиняется» и отображать в поле «Подчиняется» данные о сотруднике, из связанного поля «Код Сотрудника».Целостность данных
Целостность данных означает систему правил, используемых в Microsoft Access для поддержания связей между записями в связанных таблицах, а также обеспечивающих защиту от случайного удаления или изменения связанных данных. Установить целостность данных можно, если выполнены следующие условия.
- Связанное поле главной таблицы является ключевым полем или имеет уникальный индекс.
- Связанные поля имеют один тип данных. Здесь существуют два исключения: поле счетчика может быть связано с числовым полем, свойство которого Размер поля (FieldSize) имеет значение Длинное целое, а также поле счетчика, свойство которого Размер поля (FieldSize) имеет значение Код репликации, можно связать с числовым полем, у которого свойство Размер поля (FieldSize) имеет значение Код репликации.
- Обе таблицы принадлежат одной базе данных Microsoft Access. Если таблицы являются связанными, то они должны быть таблицами формата Microsoft Access. Для установки целостности данных база данных, в которой находятся таблицы, должна быть открыта. Для связанных таблиц из баз данных других форматов установить целостность данных невозможно.
При использовании условий целостности данных действуют следующие правила.
- Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод значений Null, показывающих, что записи не являются связанными. Например, нельзя сохранить запись, регистрирующую заказ, сделанный несуществующим клиентом, но можно создать запись для заказа, который пока не отнесен ни к одному из клиентов, если ввести значение Null в поле «Код Клиента».
- Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице.
Например, невозможно удалить запись из таблицы «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к данному сотруднику.- Невозможно изменить значение первичного ключа в главной таблице, если существуют записи, связанные с данной записью. Например, невозможно изменить код сотрудника в таблице «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к этому сотруднику.
Каскадное обновление и удаление
Для отношений, в которых проверяется целостность данных, пользователь имеет возможность указать, следует ли автоматически выполнять для связанных записей операции каскадного обновления и каскадного удаления. Если включить данные параметры, станут возможными операции удаления и обновления, которые в противном случае запрещены условиями целостности данных. Чтобы обеспечить целостность данных при удалении записей или изменении значения первичного ключа в главной таблице, автоматически вносятся необходимые изменения в связанные таблицы.
Если при определении отношения установить флажок Каскадное обновление связанных полей, любое изменение значения первичного ключа главной таблицы приведет к автоматическому обновлению соответствующих значений во всех связанных записях. Например, при изменении кода клиента в таблице «Клиенты» будет автоматически обновлено поле «Код Клиента» во всех записях таблицы «Заказы» для заказов каждого клиента, поэтому целостность данных не будет нарушена. Microsoft Access выполнит каскадное обновление без ввода предупреждающих сообщений.
Еще по теме 1.8.9. Связи между таблицами:
- 4.1. Изучение многомерных связей между антропометрическими, дерматоглифическими и вариационнопульсомтрическими признаками у здоровых мальчиков
- 4.2. Изучение многомерных связей между антропометрическими, вариационнопульсомтрическими и дерматоглифическими признаками у больных мальчиков с врожденными пороками сердца без нарушения гемодинамики
- Взаимосвязь между психологическими и биологическими подходами
- Таблица 14.3. Виды поведения, характерные для паттерна типа «А»
- 40 Характеристика основных стадий установления контактов между людьми.
- 2.1. Связь между основными звеньями
- Анатомические связи между двигательными участками коры и координирующими механизмами.
- 7. Временные связи между индифферентными раздражениями
- О роли ассоциационных областей в образовании временных связей между индифферентными раздражениями.
- Анализ связи между интенсивностью флуоресценции ткани опухоли и ее гистологическими характеристиками
- 3. 3. Определение корреляционной связи аксиальных рефлексов с патологическими кистевыми и стопными рефлексами
- Связь между ХПН, костной системой и сосудистой циркуляцией.