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