
- •Isbn © СибАгс, 2009
- •Тема 1. Роль и место баз данных в автоматизированных информационных системах 6
- •Тема 2. Модели бд 18
- •Тема 3. Реляционная модель бд 27
- •Предисловие
- •Тема 1. Роль и место баз данных в автоматизированных информационных системах
- •Технология субд
- •Размещение и архитектура субд
- •Функции субд
- •Тема 2. Модели бд
- •Модели организации данных Иерархическая модель хранения данных
- •Сетевая модель данных
- •Типы связей в модели
- •Тема 3. Реляционная модель бд
- •Структура реляционной базы данных
- •Типы данных
- •Ограничения целостности бд
- •Аномалии вставки (insert)
- •Аномалии обновления (update)
- •Аномалии удаления (delete)
- •Тема 4. Проектирование бд
- •Проектирование по методу erd-модели
- •Инфологическое проектирование баз данных
- •Структура бд
- •Количество таблиц и их имена
- •Типы данных и типы полей
- •Тема 5. Работа в субд Access
- •Мастера Access
- •Нормализация
- •Создание таблиц
- •Определение связей и обеспечение целостности данных
- •Создание форм для ввода данных
- •Создание запросов
- •Создание отчетов
- •Варианты заданий для лабораторной работы
- •Заключение
- •Литература Основная литература
- •3.3.2. Дополнительная литература
- •Глоссарий
Определение связей и обеспечение целостности данных
Пример 10: Определить связи для базы, созданной в примерах 8-9.
В ходе проведения нормализации и создания структуры таблиц (См. пример 8) установили следующие связи между таблицами:
Клиенты (Наименование клиента) – Договор (Наименование клиента);
Агенты (Фамилия обсл. Агента) – Договор (Фамилия обсл. Агента);
Офисы (Номер офиса) – Агенты (Номер офиса обсл. Агента).
Все установленные связи являются один-ко-многим.
Определение связей
Для того чтобы определить связь между таблицами, следует добавить таблицы в окно Схема данных и перенести с помощью мыши ключевое поле одной таблицы в другую таблицу.
1. Закройте все открытые таблицы. Создавать или изменять связи между открытыми таблицами нельзя.
2. Переключитесь в окно базы данных.
3. Нажмите кнопку Схема данных на панели инструментов.
4. Если в базе данных не определено никаких связей, то на экран автоматически будет выведено окно Добавление таблицы. Если необходимо добавить таблицы до определения связей, а диалогового окна Добавление таблицы на экране нет, нажмите кнопку Добавить таблицу на панели инструментов. Если же таблицы, которые необходимо связать, отображены на экране, перейдите к шагу 6.
5. Дважды щелкните имена таблиц, для которых требуется определить связи. Затем закройте диалоговое окно Добавление таблицы.
6. Для связывания полей выберите поле в одной таблице и перетащите его на соответствующее поле во второй таблице.
Для связывания сразу нескольких полей переместите их при нажатой клавише CTRL.
В большинстве случаев связывают ключевое поле (представленное в списке полей полужирным шрифтом) одной таблицы с соответствующим ему полем (часто имеющим то же имя), которое называют полем внешнего ключа во второй таблице. Связанные поля не обязательно должны иметь одинаковые имена, но они должны иметь одинаковые типы данных (из этого правила существует два исключения) и иметь содержимое одного типа. Кроме того, связываемые поля числового типа должны иметь одинаковые значения свойства Размер поля.
Существуют следующие два исключения из правила: поле счетчика можно связывать с числовым полем, если:
в числовом поле в свойстве Размер поля задано значение «Длинное целое»;
для обоих полей в свойстве Размер поля задано значение «Код репликации».
7. В диалоговом окне Схема данных, отображенном на экране, проверьте имена полей. В случае необходимости внесите изменения.
Обеспечение целостность данных.
Целостность данных означает систему правил, используемых в Microsoft Access для поддержания связей между записями в связанных таблицах, а также обеспечивает защиту от случайного удаления или изменения связанных данных. Установить целостность данных можно, если выполнены следующие условия.
Связанное поле главной таблицы является ключевым полем или имеет уникальный индекс.
Связанные поля имеют один тип данных. Здесь существует два исключения, касающиеся связывания поля счетчика с числовым полем.
Обе таблицы принадлежат одной базе данных Microsoft Access. Если таблицы являются связанными, то они должны быть таблицами Microsoft Access. Для установки целостности данных база данных, в которой находятся таблицы, должна быть открыта. Для связанных таблиц из баз данных других форматов установить целостность данных невозможно.
Установив целостность данных, необходимо следовать следующим правилам:
Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод пустых значений, показывающих, что записи не являются связанными. Например, нельзя сохранить запись, регистрирующую договор, сделанный несуществующим клиентом (агентом), но можно создать запись для договора, который пока не отнесен ни к одному из клиентов (агентов), если ввести пустое значение в поле Наименование клиента (Фамилия обсл. Агента).
Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. Например, невозможно удалить запись из таблицы «Агенты», если в таблице «Договор» имеются договоры, относящиеся к данному агенту.
Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной. Например, невозможно изменить поле Фамилия обсл. Агента в таблице «Агенты», если в таблице «Договоры» имеются договоры, относящиеся к этому агенту.
Чтобы наложить эти правила на конкретную связь, при ее создании следует установить флажок Обеспечение целостности данных. Если данный флажок установлен, то любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет. Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует установить флажки Каскадное обновление связанных полей и Каскадное удаление связанных полей. Если установлен флажок Каскадное обновление связанных полей, то при изменении ключевого поля главной таблицы автоматически изменяются и соответствующие значения связанных записей. Если установлен флажок Каскадное удаление связанных полей, то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице.
8. Для создания связи нажмите кнопку Создать.
9. Для каждой пары таблиц, которые необходимо связать, выполните шаги 5-8.
При закрытии окна схемы данных на экран будет выведено сообщение, нужно ли сохранять макет. Не зависимо от того, будет он сохранен или нет, связи, созданные в базе данных, будут сохранены.
Задание для самостоятельной работы
Определить связи и обеспечить целостность данных для базы данных (Товар-Накладная) рассмотренной в главе Нормализация.