Национальный исследовательский университет "Высшая Школа Экономики"
Опубликован: 19.11.2012 | Доступ: свободный | Студентов: 2328 / 585 | Длительность: 30:21:00
Специальности: Менеджер, Преподаватель
Лекция 8:

Системы управления базами данных

Установка связей между таблицами

Данные, находящиеся в разработанных таблицах, тесно связаны между собой. Поля разных таблиц, представляющие одинаковые по смыслу свойства объектов (в примере это одноименные поля разных таблиц), должны быть согласованы по типу и размеру. Одно из преимуществ применения базы данных заключается в том, что используя подобные поля, можно для каждой записи одной таблицы просмотреть записи другой, связанной таблицы. Например, в рассматриваемой задаче об оплате звонков, работая с информацией, относящейся к звонкам, можно одновременно обратиться к данным абонента или к данным об услугах и тарифах.

Механизм описания логических связей между таблицами в MS Access реализован в виде объекта, называемого Схемой данных. Схема данных (рис.8.5) представляет собой графическое изображение таблиц и их взаимосвязей. Если таблицы служат для физического хранения данных, то схема данных отражает связи между таблицами базы и возможности доступа к данным таблиц с использованием этих связей, т. е. доступ к данным на логическом уровне.

Схема базы данных

Рис. 8.5. Схема базы данных

Для каждой таблицы, включенной в схему, отражены поля, выделен первичный ключ и связанные поля соединены линиями. Значки на концах линий указывают на тип отношения. На рис.8.5 все таблицы связаны наиболее часто встречающимся отношением "один-ко-многим". Все связываемые таблицы помещаются в окно схемы, при этом размещение всех таблиц базы данных в схеме не является обязательным.

Следует отметить, что одно и то же поле некоторой таблицы может быть использовано для связи этой таблицы с несколькими таблицами. Установка связей между таблицами позволяет получать информацию из нескольких таблиц. Таблица является главной или подчиненной в зависимости от типа установленной связи. Поле связи в главной таблице обычно является первичным ключом таблицы или имеет индекс, тип которого – совпадения не допускаются, и таким образом однозначно определяет запись в этой таблице. Обычно в подчиненной таблице связываемое поле суть первичный ключ или его часть. Оно носит название внешнего ключа. Содержимое внешнего ключа подчиненной таблицы должно совпадать с первичным ключом или индексом главной таблицы. Очевидно, что связь может устанавливаться при совпадении типов полей главной и подчиненной таблиц. Если связующее поле таблицы не характеризует запись однозначно, то таблица не может выступать в качестве главной при связи по этому полю.

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

MS Access автоматически следит за обеспечением целостности данных, если оно установлено (рис.8.6). К нарушению целостности данных приводят следующие действия:

  • добавление записей в подчиненную таблицу при отсутствии соответствующей записи в главной таблице. Например, добавляется запись об абоненте, но информация о выбранном им тарифе отсутствует в базе данных;
  • изменение поля связи в главной таблице, следствием которого будет нарушение связи с данными в подчиненной таблице. Например, если код тарифа в главной таблице будет изменен, то коды в полях связи записей главной и подчиненной таблиц не будут совпадать;
  • удаление записи из главной таблицы при наличии связанных записей в подчиненной таблице. Это приводит к появлению "осиротевших" записей подчиненной таблицы. Так нарушение целостности может возникнуть в случае удаления из таблицы Тарифы записи, соответствующей тарифу, используемому в таблице Абоненты или в таблице Контакты (рис.8.5).

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

В случае необходимости обеспечения целостности данных в MS Access предусмотрено задание дополнительных свойств для устанавливаемой связи (рис.8.6), а именно каскадное обновление значений связанных полей и каскадное удаление связанных записей. Каскадное обновление предусматривает обновление внешнего ключа во всех записях подчиненных таблиц при изменении значения поля связи в главной таблице. Т. е. если изменился бы код услуги в таблице Услуги, то автоматически код услуги заменился бы на новый в связанных записях таблиц Звонки и Контакты. Каскадное удаление приводит к удалению всех записей подчиненных таблиц, связанных с удаляемой записью главной таблицы. Если бы удалялась запись таблицы Услуги, то автоматически удалились бы связанные записи таблиц Звонки и Контакты.

Установка связей между таблицами

Рис. 8.6. Установка связей между таблицами

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

  • Имеется возможность избежать дублирования данных. Однотипные данные хранятся только в одной таблице. Достаточно установить нужные связи между таблицами, и необходимая информация станет доступна.
  • Изменения данных производятся легко. Например, если изменить название тарифа в таблице Тарифы, то эти изменения немедленно отразятся в динамических таблицах, включающих название тарифа (динамические таблицы образуются при выполнении запросов на выборку данных).
  • Можно выполнять запросы или работать с формами и отчетами, которые базируются на данных нескольких таблиц.

Ввод данных в таблицы базы данных

Данные могут быть введены различными способами. Самый простой способ – это ввод данных вручную в режиме Таблицы. При подобном способе выполняется автоматический контроль на соответствие вводимых данных типам полей таблицы. Если данные введены некорректно, то продолжение работы невозможно до тех пор, пока не будет введено правильное значение. Можно копировать уже введенные строки таблицы и корректировать их после добавления в таблицу. Система контролирует допустимость использования повторяющихся значений в ключевых полях в соответствии с заданными свойствами полей.

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

На вкладке Внешние данные в группе Импорт можно выбрать формат импортируемого файла, например, импорт данных из MS Excel (рис.8.7). Желательно, чтобы на рабочем листе импортируемые данные располагались в виде списка, т. е. имели бы обозначения столбцов и окружались пустыми строками и столбцами. Можно импортировать именованные интервалы. Если в импортируемой таблице отсутствуют названия столбцов, то импортируемые поля получают имена по умолчанию. Если данные импортируются в новую таблицу, заголовки столбцов используются в MS Access в качестве имен полей в таблице. Эти имена можно изменить в ходе операции импорта или после ее завершения. Если данные добавляются к существующей таблице, то заголовки столбцов рабочего листа в точности должны совпадать с именами полей таблицы базы данных.

Возможности импорта данных

Рис. 8.7. Возможности импорта данных

Импорт данных можно выполнить, открыв файл необходимого типа (рис.8.8). Импорт возможен и через буфер обмена.

Типы открываемых данных

Рис. 8.8. Типы открываемых данных

Если при вводе данных обнаружено, что структура таблицы спроектирована некорректно, например, имеются лишние поля или, наоборот, некоторые поля пропущены, задан неверный порядок полей или их тип и т.п., то ошибки можно исправить, перейдя в режим конструктора таблиц. Как уже говорилось, важным преимуществом интерфейса СУБД Access является гибкая система перехода от одного режима работы с объектом к другому режиму. Если таблица уже содержит данные, при изменении структуры таблицы они теряются только в исключительных случаях, например, при изменении типа поля. MS Access предупреждает об этом соответствующим сообщением.

Если данные некоторых таблиц должны быть общими в различных базах данных, то вместо дублирования таблицы ее можно сохранять в одной базе данных и создать связи с ней из других баз данных. Естественно, изменить структуру такой таблицы можно только в файле-источнике.

Аннна Миллер
Аннна Миллер
Екатерина Дмитриева
Екатерина Дмитриева