Отношение "один–ко–многим" имеет место, когда одной записи главной таблицы может соответствовать несколько записей в подчиненной. Связь «один–ко–многим» является самой распространенной для реляционных баз данных. Она позволяет моделировать также иерархические структуры данных.
Отношение «один–к–одному»
Отношение «один–к–одному» имеет место, когда одной записи в главной таблице соответствует одна запись в подчиненной. Это отношение встречается намного реже, чем отношение «один–ко–многим». Для чтения связанной информации в нескольких таблицах приходится производить ряд операций чтения вместо одной, когда данные хранятся в одной таблице.
Отношение «многие–ко–многим»
Отношение «многие–ко–многим» применяется в следующих случаях:
- одной записи в главной таблице соответствует более одной записи в подчиненной;
- одной записи в подчиненной таблице соответствует более одной записи в главной.
Каждую связь «многие–ко–многим» в реляционной базе данных необходимо заменить на связь «один–ко–многим» (одну или более) с помощью введения дополнительных таблиц.
Задание
Взяв за основу таблицу, созданную в предыдущей лабораторной работе, разделить ее на две таблицы и связать их отношением «один-ко-многим».
Порядок выполнения работы
1. Возьмем исходную таблицу Supplier (см. рис. 2.1.) и разделим ее на
Рис. 2.1. Таблица Supplier
две таблицы: Supp2_1 и Supp2_2 (см. рис. 2.2.,23.).
Рис. 2.2. Таблица Supp2_1
Рис. 2.3. Таблица Supp2_2
2. Откроем таблицу Supp2_1 в режиме конструктора. Щелкнув правой кнопкой по полю перед именем поля CONSUMER_NAME, выберем пункт меню «Ключевое поле» (Рис. 2.4.). Этим мы обеспечим уникальность значений в поле CONSUMER_NAME – каждый поставщик упомянут не более одного раза.
|
Рис. 2.4. Изменение ключевого поля
3. Выберем на панели инструментов, в меню «Конструктор» пункт «Схема данных»:
При этом откроется окно «Добавление таблицы» (рис. 2.4.).
Рис. 2.5. Добавление таблицы в схему данных
Нажимая на кнопку «Добавить», добавим в схему данных таблицы Supp2_1 и Supp2_2. Затем нажмем «Закрыть».
4. В открывшейся схеме данных нажмем левой кнопкой на поле CONSUMER_NAME таблицы Supp2_1 и «перетащим» связь к полю CONSUMER_NAME таблицы Supp2_2. При этом откроется окно «Изменение связей». Проставим «галочки» в пунктах «Обеспечение целостности данных», «Каскадное обновление связанных полей» и «Каскадное удаление связанных записей» (рис.2.6.). Таким образом, при удалении поставщика из главной таблицы (в нашем примере Supp2_1), все записи, содержащие его имя, будут удалены и из подчиненной таблицы (в нашем примере Supp2_2).
Рис. 2.6. Окно «Изменение связей»
Нажав кнопку «Создать», завершим создание связи «один-ко-многим» (рис. 2.7.).
Если в окне «Изменение связей» выбрать только пункт «Обеспечение целостности данных», то каскадного обновления не будет, но СУБД не позволит вводить в поле CONSUMER_NAME таблицы Supp2_2 значение, которого нет в таблице Supp2_1.
Рис. 2.7. Связь «один-ко-многим»
Содержание отчёта
- титульный лист
- задание
- распечатки экрана СУБД MS Access, показывающие:
- исходную таблицу
- полученные таблицы и их структуры
- окно изменения связей
- схему данных со связью «один-ко-многим»
Лабораторная работа №3