СУБД MS Access 2003 (960526), страница 14
Текст из файла (страница 14)
Процесс созданиякомбинированного списка на основе данных другой таблицы проследим после рассмотрения связывания таблиц в БД.5. Связывание таблицAccess позволяет строить РБД, отдельные таблицы которыхмогут быть связаны между собой отношениями.В нашем примере нужно объявить связь между таблицей предлагаемых моделей и таблицей клиентов. Для этого из меню Сервисследует выбрать команду Схема данных. На экране появится окноСхема данных. При первом открытии оно будет пустым.Чтобы добавить таблицы или запросы в окно Схема данных,необходимо выбрать опцию Добавить таблицу в меню Связи илинажать кнопку Добавить таблицу, расположенную в строке пиктограмм.В списке таблиц раздела Таблицы окна Добавление таблицы(рис. 37) маркируйте таблицу Предлагаемые модели, для которойнеобходимо установить связь, и нажмите клавишу Добавить.Ту же операцию проделайте с таблицей Клиенты.
Затем нажмитеклавишу Закрыть.Проектирование баз данных. СУБД MS Access:Добавление таблицыТаблицы j Запросы | Таблицы и запросыЗакрытьiРис. 37. Добавление таблицы в схему данныхСвязь между таблицами следует организовать так, чтобы приработе с таблицей клиентов было достаточно ввести только соответствующий код модели, после чего вся необходимая информация по желаемому типу автомобиля будет извлечена из таблицымоделей.С помощью мыши перенесите поле, которое следует использовать для установки связи, из списка одной таблицы к соответствующему полю другой таблицы. В данном случае таковым является поле Код модели.На экране появится диалоговое окно Изменение связей(рис. 38), в котором будет предложена связь между таблицамиПредлагаемые модели и Клиенты через поле Код модели (для обеих таблиц).
Несколько клиентов вполне могут заказать один и тотже тип автомобиля, а значит, одной записи в таблице моделей будет соответствовать несколько записей в таблице клиентов. Теперьпосредством установления типа отношений между таблицами необходимо определить параметры связи. Установите опцию Обеспечение целостности данных. Для данных таблиц будет установлено отношение типа Один ко многим, что отразится в областиТип отношения. Это означает, что одной записи главной или первичной таблицы Предлагаемые модели могут быть поставленыв соответствие несколько записей связанной (подчиненной) таблицы Клиенты.
Данное отношение является наиболее распространенным в РБД.Тема 3. ТаблицыИзменение связейТаблица/запрос:Связанная таблица/запрос:IКод модели...". 1 Код поделиЛОтменаОбъединение...V-у Обеспечение целостности денных. Гкаскадное обновление связанных полей'каскадное удаление связанных записейТип отношения;Новое..один-ко-многимРис. 38. Объявление связи между таблицамиПосле нажатия кнопки Создать в окне Схема данных (рис. 39)будет графически показана созданная связь между таблицамиПредлагаемые модели и Клиенты.Примечание. Поля, через которые осуществляется связь,в первичной и связанной таблицах могут иметь разные имена.Необходимым условием установления связи является совпадениетипа данных и значений характеристик (в особенности размера).|i Кед моделиI How ер заказа| Обращение|Ммя;) ОтчествоJФамилия•IПочтовый адрес|Почтовый индекс3 Нас елейный пунктj Тепе фонИ Дата заказаIСкидкаМодельМощность двигателяЦветКоробка передач| Количеств о дверей| ОбивкаДругое оснащениеЗаводская ценаТранспортные издержкиПредпродажная подготовкаСпециальная модельРис.
39. Схема данных с установленной связью90Проектирование баз данных. СУБД MS AccessНаконец, установление опции проверки ссылочной целостности Обеспечение целостности данных обеспечивает проверкуссылочной целостности связи между обеими таблицами. Эта проверка позволяет избежать ряда ошибок, допускаемых при удалении записей из первичной таблицы и вводе информации в связанную таблицу.
Благодаря проверке ссылочной целостности можноизбежать следующих ошибочных ситуаций:•добавления в связанную таблицу записей, для которых отсутствует соответствующая запись в первичной таблице;•осуществления изменений в главной таблице, которые приведут к появлению «осиротевших» записей в связанной таблице;•удаления записей в главной таблице, на которые ссылаются записи из связанной таблицы.5.1. Что означает целостность данныхПримечание. Между двумя таблицами может быть объявленотолько одно отношение. Если дается определение другому отношению между теми же таблицами, то оно заменит уже имеющеесяотношение.Как указывалось ранее, под целостностью данных понимаетсявыполнение логических ограничений на данные.
Эти ограничениявытекают из свойств ПО и свойств модели данных. Одни ограничения определяются неявно и зависят от выбранной модели данных, для реляционной модели они рассмотрены в [1]. Другие ограничения указываются пользователем явно с использованиемсредств Access. К таким ограничениям относятся ограничения наОДЗ атрибутов таблиц, которые задаются при определении типовданных и характеристик полей таблицы. Процесс введения такихограничений рассмотрен в предыдущих разделах. Второй тип ограничений - это ограничения на связи между таблицами. Рассмотрим особенности задания таких ограничений.Целостность данных означает систему правил, используемыхв Access для поддержания связей между записями в связанныхтаблицах, а также обеспечивает защиту от случайного удаленияТема 3. Таблицы91или изменения связанных данных.
Установить целостность данных можно, если выполнены следующие условия:1. Связанное поле главной таблицы является ключевым полемили имеет уникальный индекс.2. Связанные поля имеют один тип данных. Здесь существует дваисключения. Поле счетчика может быть связано с числовымполем формата Длинное целое. А также поле счетчика можносвязать с числовым полем, если в обоих полях для свойстваРазмер поля задано значение Код репликации.3. Обе таблицы принадлежат одной БД Access. Если таблицы являются связанными, то они должны быть таблицами Access.Для установки целостности данных БД, в которой находятсятаблицы, должна быть открыта.
Для связанных таблиц из БДдругих форматов установить целостность данных невозможно.4.Установив целостность данных, необходимо действовать в соответствии со следующими правилами.5. Невозможно ввести в поле внешнего ключа связанной таблицызначение, не содержащееся в ключевом поле главной таблицы.Однако в поле внешнего ключа возможен ввод пустых значений, показывающих, что записи не являются связанными. Например, нельзя сохранить запись, регистрирующую заказна несуществующую в БД модель машины «Toyota», но можносоздать запись для заказа, в котором клиент пока не определился, какую модель машины он предпочтет, если ввести пустое значение в поле Код модели.6.Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице.
Например, невозможно удалить запись из таблицы Модели, еслив таблице Клиенты имеются заказы, относящиеся к данной модели.7.Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данным значением.Например, невозможно изменить код модели в таблице Модели, если в таблице Клиенты имеются заказы, относящиесяк этой модели.92Проектирование баз данных. СУБД MS AccessЧтобы наложить эти правила на конкретную связь, при ее создании следует установить флажок Обеспечение целостностиданных.
Если данный флажок установлен, то любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действиевыполнено не будет. Чтобы преодолеть ограничения на удалениеили изменение связанных записей, сохраняя при этом целостностьданных, следует установить флажки Каскадное обновление связанных полей и Каскадное удаление связанных полей. Если установлен флажок Каскадное обновление связанных полей, то приизменении ключевого поля главной таблицы автоматически изменяются и соответствующие значения связанных записей.
Если установлен флажок Каскадное удаление связанных полей, то приудалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице.5.2. Доработка таблицы клиентовТеперь пришло время рассмотреть построение комбинированного списка (поля со списком) для поля Код модели таблицы Клиенты на основе связанной таблицы Предлагаемые модели. Какуже было сказано выше, логично было бы представить списокимеющихся моделей (и/или их кодов) при заполнении поля Кодмодели таблицы Клиенты. Это избавило бы пользователя от вводаданных с клавиатуры и, следовательно, от допущения ошибок.Выберите в окне БД таблицу Клиенты и нажмите кнопку Конструктор. В открывшемся окне проектирования таблицы щелкните в колонке Тип поля поля Код модели и из списка доступныхтипов полей выберите строку Мастер подстановок.В первом диалоговом окне мастера (рис. 40) выберите опциюстолбец подстановки использует значения из таблицы или запроса, которая позволяет создать список значений для поля на основе другой таблицы, и нажмите кнопку Далее.В следующем окне из приведенного списка таблиц (или запросов) следует выбрать таблицу Предлагаемые модели, так какименно эта таблица является для нас источником списка кодов моделей.
Нажав кнопку Далее, перейдите к следующему окну мастера.Тема 3. Таблицы93.Создание подстановкиВыберите таблицу или запрос со значениями, которые будетсодержать столбец подстановки.Таблица: Предлагаемые моделиПоказатьfi" 1аблиць!С ЗапросыОтменаС Таблицы и запросы< Назад[ Далее >|Рис.
40. Выбор таблицы для создания поля со спискомВ этом окне (рис. 41) из предложенного списка полей Доступные поля выберите поля, значения которых будут фигурироватьв списке. В нашем случае достаточно выбрать поле Модель, таккак ключевое поле Код модели автоматически присоединитсяк списку. Это можно увидеть в следующем диалоговом окне мастера (рис. 42), если отключить опцию Скрыть ключевой столбец.Создание подстановкиm «ex ххх яихm та ш хххКакие поля содержат значения, которые следует включить встолбец подстановки? Отобранные попя станут столбцами вобъекте "столбец подстановки".ах act ж mДоступные поля;Выбранные поля;Код моделиЦветКоробка передачКоличество дверейОбивкаЗаводская иенаТранспортные издержкиОтмена|< Назад| Далее >Рис.
41. Выбор полей для формирования спискаПроектирование баз данных. СУБД MS Access94Создание подстановкиЗадайте ширину столбцов, которые содержит столбец подстановки.Перетащите правую границу заголовка столбца на нужную ширину или дваждыщежните ее для автоматического подбора шириш.Г Ккрить ключевой столбец (рекомендуется)Отмена< НазадРис. 42. Установка показа или скрытия ключевого столбцаОставим опцию отключенной и перейдем к следующему окну(рис. 43), где предстоит выбрать столбец, значение которого будетсохранено в поле Код модели.Создание подстановкиПри выборе строки в объекте 'столбец подстановки" можносохранить значение из этой строки в базе данных: илииспользовать это значение в дальнейшем для выполнениядействия.