Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornye_raboty_042.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

3.1. Отношения между таблицами.

Связь между таблицами устанавливает отношения между совпадающими значениями в ключевых полях

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

Существует четыре вида отношений:

Один к одному. При использовании отношения "один к одному" запись в таблице "А" (главной таб­лице) может иметь не более одной связанной записи в таблице "В" (связанной таблице) и наоборот. Этот тип связи используют не очень часто, поскольку такие данные могут быть помещены в одну таблицу. Связь с отношением "один к одному" используют для разделения очень широких таблиц или для отделения части таблицы по соображениям защиты. В таблицах, связанных отношением "один к одному" ключевые поля должны быть уникальными (в этих полях не допускаются повто­ряющиеся данные).

  • Многие к одному. При использовании отношения "многие к одному" одной записи в таблице "А" могут соответствовать одна запись в таблице "В", а одной записи в таблице "В" несколько записей в таблице "А". В таблице "В" ключевое поле должно быть уникальным.

  • Один ко многим. Связь с отношением "один ко многим" является наиболее часто используемым ти­пом связи между таблицами. В такой связи каждой записи в таблице "А" могут соответствовать не­сколько записей в таблице "В", а запись в таблице "В" не может иметь более одной соответствующей ей записи в таблице "А". В таблице "А" ключевое поле должно быть уникальным. Связь с отноше­нием "один ко многим" таблиц "А" и "В" можно рассматривать как связь с отношением "многие к одному" таблиц "В" и "А".

  • Многие ко многим. При использовании отношения "многие ко многим" одной записи в таблице "А" могут соответствовать несколько записей в таблице "В", а одной записи в таблице "В" несколько за­писей в таблице "А". В этом случае не требуется уникальности ключевых полей таблиц "А" и "В". Одному сотруднику в таблице "Персональные мероприятия" может соответствовать несколько запи­сей. Например, одна запись появится при приеме сотрудника на работу, еще одна при начислении пре­мии и т. д. Поэтому между таблицей "Сотрудники" и таблицей "Персональные мероприятия" нужно ус­тановить связь с отношением "один ко многим". Создание связи между таблицами "Сотрудники" и "Пер­сональные мероприятия" позволит использовать запросы, формы и отчеты, в которых выводятся данные из нескольких таблиц сразу.

Связанные поля не обязательно должны иметь одинаковые имена, однако, они должны иметь одинако­вые типы данных (из этого правила существуют два исключения). Кроме того, связываемые поля типа "Числовой" должны иметь одинаковые значения свойства "Размер поля". Например, нельзя создать связь между полями типа "Счетчик" и "Байт" или "Целое" и "Денежный". Исключениями из этого правила яв­ляются поля счетчика с последовательной нумерацией, которые могут связываться с числовыми полями размера "Длинное целое", а также поля счетчика с размером "Код репликации", связываемые с полями типа "Числовой", для которых также задан размер "Код репликации". В нашем примере связь между таб­лицами осуществляется по полям с типами данных "Счетчик" и "Длинное целое". Существует возмож­ность создать связь между текстовыми полями разной длины, но это может вызвать сложности при соз­дании запросов.

Связи между таблицами базы данных можно определить и просмотреть в окне "Схема данных" (Relation­ships). Чтобы определить связь между таблицами "Персональные мероприятия" и "Сотрудники":

  1. Закройте все окна таблиц базы данных. Access 2013 не позволяет создать или изменить связь, если от­крыта хотя бы одна таблица.

  2. Сделайте активным окно базы данных. Для этого выберите команду "Окно, I Борей база данных" (Window. I Database) или нажмите кнопку "Окно базы данных". В меню "Окно" выводится список девяти открытых окон объектов базы данных. Окно базы данных всегда имеет номер I.

Нажмите кнопку "Схема данных" (Relationships) на панели инструментов. Появится окно "Схема данных"

Окно "Схема данных" используется для просмотра и изменения существующих связей и для определения новых связей между таблицами и/или запросами.

  1. Нажмите правой кнопкой мыши на свободное место и нажмите кнопку "Доба­вить таблицу" (Show Table). Появится диалоговое окно "Добавление таблицы".

  1. Раскройте вкладку "Таблицы", в списке таблиц выделите "Персональные мероприятия" и нажмите кнопку "Добавить" (Add). Нажмите кнопку "Закрыть" (Close). Таблица "Персональные мероприятия" по­явится в окне "Схема данных".

  1. Связь между таблицами "Персональные мероприятия" и "Сотрудники" строится по значению полей "КодСотрудника". Поместите указатель мыши над полем "КодСотрудника" таблицы "Персональные ме­роприятия", нажмите левую кнопку мыши и. не отпуская ее, перетащите появившийся значок поля на поле "КодСотрудника" таблицы "Сотрудники". Отпустите левую кнопку мыши. Появится диалоговое окно "Связи"

  1. Нажмите кнопку "Объединение" (Join Type). Появится диалоговое окно "Параметры объединения" (Join Properties). В нашем примере создастся связь с отношением "один ко многим", поэтому выберите переключатель "З". Нажмите кнопку ОК.

  1. В диалоговом окне "Связи", можно установить для связи режим обеспечения ссылочной целостности. В режиме обеспечения ссылочной целостности Access 2013 автоматически будет следить за тем. чтобы в таблице "Персональные мероприятия" не появились коды сотрудников, которых нет в таблице "Сотруд­ники". Для обеспечения ссылочной целостности установите флажок "Обеспечение целостности данных" (Enforce Referential Integrity). Диалоговое окно "Связи" примет вид. показанный на рисунке.

Примечание. Access обеспечивает ссылочную целостность, используя каскадное обновление и удале­ние данных. Чтобы включить режимы каскадного обновления и удаления данных, установите флажки "Каскадное обновление связанных полей" и "Каскадное удаление связанных полей" соответственно. Эти флажки доступны, только если установлен флажок "Обеспечение целостности данных".

  1. Нажмите кнопку "Создать" (Create), чтобы подтвердить создание связи и перейти в окно "Схема дан­ных".

  2. Закройте окно схема данных, нажав кнопку "Закрыть" в правом верхнем углу окна. Появится диало­говое окно. запрашивающее подтверждение изменения схемы данных. Подтвердите изменение, нажав кнопку "Да".

Задание 4. Обеспечение ссылочной целостности.

Обеспечение ссылочной целостности данных является важным средством Access .

Средства обеспечения ссылочной целостности.

Условия целостности данных определяют систему правил, используемых в Access для под­держания связей между записями в связанных таблицах. Эти правила делают невозможным случайное удаление или изменение связанных данных. После наложения условий целостности данных на операции со связанными таблицами накладываются ограничения. Невозможно ввести в поле внешнего ключа свя­занной таблицы значение, не содержащееся в ключевом поле главной таблицы. Например, полю "КодСотрудника" таблицы "Персональные мероприятия" нельзя присвоить значение, которого не суще­ствует в поле "КодСотрудника" таблицы "Сотрудники". Это ограничение устраняет необходимость оп­ределения условия на значение для поля "КодСотрудника". Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. Например, нельзя удалить запись из таблицы "Сотрудники", если существуют связанные с ней записи. Невозможно изменить зна­чение ключевого поля в главной таблице, если имеются записи, связанные с этой записью. После нало­жения условий целостности данных любая попытка выполнить действие, нарушающее перечисленные выше запреты, приведет к выводу окна диалога с предупреждением, а само действие выполнено не будет.

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