Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных ( 2012).doc
Скачиваний:
10
Добавлен:
25.11.2019
Размер:
1.98 Mб
Скачать

7.I. Связь 1:1

Связь вида 1:1 образуется, когда поля связи основной и подчиненной таблицы являются ключевыми.

  1. Создайте новую таблицу «Менеджмент», содержащую следующие поля:

  • Id – числовое (длинное целое), первичный ключ

  • Port – текстовое – порт приписки судна;

  • Flag - текстовое – государство, в котором судно зарегистрировано;

  • Holder - текстовое – владелец судна;

  • Traffic_control - текстовое – компания, осуществляющая управлением работы судна;

  • Crew_control - текстовое – компания, обеспечивающая подбор членов экипажа судна

  1. Введите в созданную таблицу запись, состоящую из следующих значений:

    1. Id = 1

    2. Port =”SPB”

    3. Flag = “Russia”

    4. Holder = “Alpha Ltd”

    5. Traffic_control = “Alpha Ltd”

    6. Crew_control = “Delta crew agency”

  1. В таблицу «Судно» добавьте поле “Code” (длинное целое), перейдите в табличный режим и добавьте в это поле в единственной записи таблицы значение равное 1, перейдите в режим конструктора и объявите это поле первичным ключом.

  2. Откройте схему данных с использованием инструмента «Схема данных» панели «Показать или скрыть» ленты «Работа с базами данных». В окне «Схема данных» выполните команду Связи|Добавить таблицу и в диалоговом окне укажите таблицы «Судно» и «Менеджмент». Закройте окно «Добавление таблицы»

  3. Выделите ключевое поле таблицы «Судно» (это - поле «Code»). Нажмите левую клавишу мышки и «перетащите» ее на поле «Id» таблицы «Менеджмент». Тем самым мы укажем MS Access, что мы хотим связать эти две таблицы по указанным полям. Установите отметку «Обеспечение целостности данных». Нажмите кнопку «Создать». Поскольку поля «Код» в обеих таблицах являются ключевыми, MS Access автоматически определит вид связи как 1:1.

ВНИМАНИЕ! В случае установки отметки «Обеспечение целостности данных» MS Access будет следить за тем, чтобы пользователь не смог удалить из основной таблицы («Судно») запись если в ней указан код судна, который имеется в дополнительной таблице «Менеджмент»). И наоборот, не позволит ввести в таблицу «Менеджмент» запись с кодом судна, который отсутствует в основной таблице.

  1. Закройте окно «Схема данных»

  1. Введите в таблицу «Менеджмент» запись, состоящую из следующих значений

    1. Id = 2

    2. Port =”SPB”

    3. Flag = “Russia”

    4. Holder = “Beta Ltd”

    5. Traffic_control = “Beta Ltd”

    6. Crew_control = “Delta crew agency”

Убедитесь в том, что указанную запись ввести невозможно, поскольку она нарушает правила обеспечения целостности.

7.II. Связь 1:m

Связь вида 1:M может быть установлена тогда, когда одной записи в основой таблице соответствует несколько записей в дополнительной таблице.

  1. Создайте новую таблицу «Порты», содержащую следующие поля:

  • Port – текстовое (4 символа) – аббревиатура названия порта (первичный ключ);

  • Name - текстовое (50 символов) – название порта на английском языке;

  • Country- текстовое (50 символов) – государственная принадлежность порта

  1. Введите в созданную таблицу следующие записи:

Рисунок 10

Port

Name

Country

ANT

Antwerp

Belgium

BRE

Bremen

Germany

HAMB

Hamburg

Germany

HEL

Helsinki

Finland

ROT

Rotterdam

Holland

SPB

Saint-Petersburg

Russia

ВНИМАНИЕ! Таблица «Порты» представляет собой справочник названий портов, который мы будем связывать с другими таблицами, в которых в качестве названий портов используются их аббревиатуры, указанные в первой колонке таблицы.

  1. Откройте окно «Схема данных». В окне «Схема данных» выполните команду Связи|Добавить таблицу и в диалоговом окне укажите таблицы «Порты» и «Каргоплан». Закройте окно «Добавление таблицы»

  2. Выделите ключевое поле таблицы «Порты» (это - поле «Port»). Нажмите левую клавишу мышки и «перетащите» ее на поле «Погружен» таблицы «Каргоплан». Тем самым мы укажем MS Access, что мы хотим связать эти две таблицы по указанным полям.

ВНИМАНИЕ! Поле “Port” в таблице «Порты» и поле «Погружен» в таблице «Каргоплан» основаны на одном и том же домене – домене аббревиатур названий портов, поэтому эти поля могут быть использованы в качестве полей связи указанных таблиц.

  1. Установите отметку «Обеспечение целостности данных». Нажмите кнопку «Создать». Поскольку поле «Порт» в таблице «Порты» является ключевыми, а поле «Погружен» в таблице «Каргоплан» ключевым не является, MS Access автоматически определит вид связи как 1:М.

  1. Выделите поле «Port» таблицы «Менеджмент». Нажмите левую клавишу мышки и «перетащите» ее на ключевое поле таблицы «Порты» (это – поле “Port”). Тем самым мы укажем MS Access, что мы хотим связать эти две таблицы по указанным полям.

ВНИМАНИЕ! Поля “Port” в таблицах «Менеджмент» и «Порты» основаны на одном и том же домене – домене аббревиатур названий портов, поэтому эти поля могут быть использованы в качестве полей связи указанных таблиц.

  1. Установите отметку «Обеспечение целостности данных». Нажмите кнопку «Создать». Поскольку поле «Port» в таблице «Менеджмент» не является ключевым, а в таблице «Порты» - является ключевыми, MS Access автоматически определит вид связи как М:1.

ВНИМАНИЕ! Поля таблицы-справочника (например, «Порты») можно подключать с использованием связей вида 1:М или М:1 к любому количеству таблиц базы данных (в данном примере, это таблицы «Каргоплан» и «Менеджмент»).

ВНИМАНИЕ! Поля “Port” в таблицах «Менеджмент» и «Порты» основаны на одном и том же домене – домене аббревиатур названий портов, поэтому эти поля могут быть использованы в качестве полей связи указанных таблиц.

  1. Закройте окно «Схема данных» (с сохранением)

  2. Откройте таблицу «Каргоплан» и измените в первой записи порт погрузки на “NY” (New York). Будьте готовы объяснить полученный при выполнении этой операции эффект. Закройте таблицу «Каргоплан»

  3. Откройте таблицу «Порты» и удалите строчки таблицы, содержащие значения «ANT» и «BRE». Будьте готовы объяснить полученные при выполнении этих операций эффекты. Закройте таблицу «Порты»

  4. Выполните команду создания нового запроса при помощи конструктора. Укажите, что запрос будет строиться на основании данных таблиц «Порты» и «Каргоплан». В верхней строке таблицы формирования запроса укажите поля которые следует использовать в запросе: [Каргоплан.Номер контейнера], [Каргоплан.Тип], [Каргоплан.Вес], [Каргоплан.Погружен], [Порты.Name],

ВНИМАНИЕ! Запись вида [Каргоплан.Тип] обозначает, что используется поле «Тип» таблицы «Каргоплан».

  1. Дайте команду на выполнение запроса. Проанализируйте динамический набор данных, полученный в результате выполнения запроса. Обратите внимание на то, что значения в поле Name запроса строго соответствуют аббревиатурам портов погрузки в поле «Погружен» запроса.

  2. Вернитесь в режим конструктора. Удалите из бланка запроса поле «Погружен». Выполните запрос. Обратите внимание на то, что в поле «Name» по-прежнему корректно отображаются названия потов погрузки.

  3. Вернитесь в режим конструктора. Добавьте в бланк запроса поле [Каргоплан.К выгрузке]. Выполните запрос. Убедитесь, что динамический набор данных, полученный в результате выполнения запроса, оказался пустым. Причина этого в том, что MS Access не позволяет использовать в одном запросе более одной связи с каждым справочником (в данном запросе была попытка связать поля «Погружен» и «К разгрузке» со справочником «Порты»)

  4. Закроите запрос и сохраните его под названием «Груз и порты»