
Указания по выполнению
1.2.1.Откройте разработанную Вами в лабораторной работе №1 БД «Магазин». Согласно инфологической модели, в таблице «Товары» поле «Код» является полем первичного ключа, а в таблице «Поставщики» полем первичного ключа является «Код поставщика». Для таблицы «Товары» поле «Код поставщика» является полем вторичного ключа, по нему и будет осуществляться связь между двумя таблицами.
Установите ключи в этих таблицах. Для этого в окне БД щелкните по названию соответствующей таблицы и далее по вкладке Конструктор. Для установки
к
люча
необходимо выделить поле и щелкнуть
Правка – Ключевое поле. При этом перед
полем появляется знак ключа
Совпадение записей в ключевых полях не допускаются. Откройте названные таблицы и убедитесь в этом (рис.2).
Связь устанавливается по полям, совпадающим по содержанию, типу и свойствам. При этом таблица, содержащая ключевое поле в качестве поля связи, является главной.
В нашем случае поле «Код поставщика» в таблице «Поставщики» - ключевое, а в «Товары» является полем вторичного ключа, и в этом поле совпадения допускаются, так как согласно нашей модели каждый поставщик может поставлять различные товары.
Обратите внимание, что программа выставляет тип отношений связи в зависимости от определения свойств полей. В данной работе применяется явный способ указания свойств полей связи (для главной таблицы «Поставщики» поле «Код поставщика» выбирается индексированным (совпадения не допускаются), а в таблице «Товары» поле «Код поставщика» индексированное (совпадения допускаются).
Заметим, что формально связь 1: М может здесь установить программа, если бы в таблице «Товары» был принят режим по умолчанию (поле «Код поставщика» необязательное и неиндексированное), но указание свойств поля в адекватном виде помогает не допустить установку ошибочного типа отношений связи, например, при переходе к следующей части нашей работы для случая связи 1:1.
В данном случае связь поставщики - товары является одно-многозначной, так как один поставщик поставляет разные наименования товаров, а товар одного наименования поставляется единственным поставщиком.
Это означает, что по полю «Код поставщика» осуществляется одномногозначная связь между таблицами «Поставщики» и «Товары», что графически изображается на схеме данных (рис.2).
Рис.2. Определение таблиц «Поставщики» и «Товары» в режиме конструктора. При правильном определении свойств поля «Код поставщика» устанавливается связь 1:М.
Создание схемы данных
Для связывания таблиц необходимо выбрать следующие пункты меню: Сервис - Схема данных. В появившемся окне Добавление таблицы необходимо выделить таблицу «Поставщики» и щелкнуть по кнопке Добавить. Аналогично добавьте таблицу «Товары» и выберите Закрыть.
В окне «Схема данных» в главной таблице «Поставщики» щелкните левой кнопкой мыши по полю «Код поставщика».
Далее, при нажатой кнопке мыши, протащите ее указатель в поле «Код поставщика» подчиненной таблицы «Товары» и отпустите мышь. Откроется окно Изменение связей. При этом в строке «Тип отношения» автоматически установится один-ко-многим.
В возникшем окне Изменение связи включите флажки «Обеспечение целостности данных», «Каскадное обновление связанных полей» и «Каскадное удаление связанных записей».
При этом программа проверяет наличие значений в поле связи («Код поставщика»), отсутствующих в соответствующем поле главной таблицы, и при несоответствии выдает ошибку. Также, если установка свойства «индексированное поле», не соответствует выбранному типу отношений связи, то нужно просмотреть свойства поле связи «Код поставщика» для обеих таблиц в режиме конструктора и выбрать нужный случай: «допускаются совпадения или нет».
Убедитесь, что связь существует. Для этого, например, в таблице «Поставщики» измените в поле «Код поставщика» номер 1 на 6, при этом в таблице «Товары» в поле «Код поставщика» должны произойти автоматические изменения значений кода с 1 на 6.
1.2.2. Изменим информационно-логическую модель. При этом исходные таблицы удобно скопировать с другим именем в той же БД, хотя по сути это уже другая база данных, но нам важно иметь таблицы разных баз данных в одном окне БД для сравнения.
Пусть теперь каждый поставщик поставляет один и только один товар. В этом случае осуществляется связь один-к-одному.
Наиболее просто получить таблицы новой БД следующим образом:
- щелкните в окне БД по таблице «Товары»;
- выберите Правка - Копировать;
- выберите Правка - Вставить и дайте имя таблице «ТоварыН».
Проделайте аналогичные действия в БД «Магазин» для получения таблицы «ПоставщикиН».
Откройте таблицу «ТоварыН» и отредактируйте записи в поле «Код поставщика» так, чтобы не было повторяющихся цифр в поле «Код поставщика», например, так:
-
Код поставщика
1
5
2
6
7
3
4
8
9
Всех новых поставщиков, имеющих коды 5,6,7,8,9, необходимо описать в таблице «ПоставщикиН». Для этого выполните следующее:
- откройте таблицу «ПоставщикиН»;
- создайте пять новых записей, записав в поле «Код поставщика» последовательно цифры 5, 6, 7, 8, 9;
- заполните записями поля БД, соответствующие значениям 5,6,7,8,9 поля «Код поставщика». При этом можно скопировать предыдущие записи.
Откройте таблицу «ТоварыН» в режиме Конструктора. В свойствах поля «Код поставщика» выберите из падающего меню следующее:
Индексированное поле |
Да (совпадения не допускаются) |
1.2.3.Выберите в главном меню Сервис - Схема данных. Добавьте таблицы «ТоварыН» и «ПоставщикиН». Для этого щелкните правой кнопкой мыши по бланку Схемы данных и выберите Добавить таблицу. Возникнет окно «Добавление таблицы». Из падающего меню выделите таблицу «ТоварыН» и щелкните по кнопке Добавить. Далее выделите «ПоставщикиН» и щелкните Добавить. Закройте окно.
Поставьте мышку на имя поля «Код поставщика» в таблице «ПоставщикиН» и, не отпуская кнопку мыши, перетащите ее указатель на поле «Код поставщика» в таблице «ТоварыН». Отпустите мышь. Появиться окно «Изменение связей». Установите все флажки, как и ранее.
Убедитесь, что связь 1: 1 по полю «Код поставщика» получилась (рис.2а).
Рис.2а. Вид бланка схемы данных со связями между таблицами «Товары» и «Поставщики» а также «ТоварыН» и «ПоставщикиН».
Дополнительное задание
Добавьте таблицу «Продавцы» и установите связь 1:М с таблицей «Товары» по полю «Код» и связь 1:М с таблицей «Поставщики». Рассмотрите отношение связи многие-ко-многим.
Предъявите преподавателю:
1.Таблицы «Товары», «Поставщики» и «ТоварыН», «ПоставщикиН».
2.Схему данных с указанием связей между таблицами «Товары» и «Поставщики»; «ТоварыН» и «ПоставщикиН».
Контрольные вопросы
1. Какими принципами вы руководствовались при расстановке ключей в таблицах для различных инфологических моделей данных?
2. Что произойдет в таблице «Товары», если в таблице «Поставщики» заменить код поставщика 1 на 8?
3. Что произойдет, если в таблице «Товары» есть поставщик с конкретным значением кода поставщика, а в таблице «Поставщики» его нет?
4. Какая разница в инфологических моделях и свойствах таблиц«Товары», «Поставщики» и «ТоварыН», «ПоставщикиН»?