Главная » Статьи » Microsoft Access » Microsoft Access | [ Добавить статью ] |
Конструирование многотабличных запросов
![]() Конструирование многотабличных запросов в Microsoft Access.Реляционная база данных состоит из нормализованных таблиц, соответствующих следующим требованиям нормализации: • Информационный объект (таблица) должен содержать уникальный идентификатор (ключ). • Все описательные поля должны быть взаимонезависимыми. • Все поля, входящие в составной ключ, должны быть также взаимонезависимы. • Каждое описательное поле должно функционально - полно зависеть от ключа, т.е. каждому значению ключа соответствует только одно значение описательного поля. • При составном ключе описательные поля должны зависеть целиком от всей совокупности полей, образующих ключ. • Каждое описательное поле не может зависеть от ключа транзитивно, т.е. через другое промежуточное поле. Выполнение требований нормализации обеспечивает построение реляционной БД без дублирования, в которой обеспечивается однократный ввод данных при первоначальной загрузке и корректировках. В процессе создания БД сначала осуществляется конструирование таблиц, а затем создается схема данных, в которой фиксируются существующие логические связи между таблицами. Схема данных является графическим образом БД. Если поле, по которому устанавливается связь, является уникальным ключом как в главной таблице, так и в подчиненной, Access устанавливает связь один-к-одному (1:1). Такие таблицы легко могут быть объединены в одну. Если поле связи, является уникальным ключом в главной таблице, а в подчиненной таблице является не ключевым или входит в составной ключ, Access устанавливает связь один-ко-многим (1:М) от главной таблицы к подчиненной. При выборе в качестве поля связи в главной таблице не ключевого поля Access сообщает, что тип отношения не может быть определен. В этом случае между таблицами возможно только связи - объединения. Если модель данных разработана в соответствии с требованиями нормализации, в схеме данных могут быть заданы параметры обеспечения целостности базы данных, а именно • В подчиненную таблицу не может быть добавлена запись с несуществующим в главной таблице значением ключа связи. • В главной таблице нельзя удалить запись, если не удалены связанные с ней записи в подчиненной таблице. • Изменение значение ключа связи главной таблицы должно приводить к изменению соответствующих значений в записях подчиненной таблице. Установление между двумя таблицами связи типа 1:1 или 1:М и задание параметров целостности данных возможно только при следующих условиях: • Связываемые поля имеют одинаковый тип данных, при этом имена полей могут быть различны. • Таблицы хранятся в одной БД. • Главная таблица связывается с подчиненной по первичному простому или составному ключу главной таблицы. Access не позволяет создавать связи с параметрами целостности, если ранее введенные в таблицы данные не отвечают требованиям целостности. При вводе некорректных данных в связанные таблицы Access выводит сообщение. Если для выбранной связи обеспечивается поддержание целостности, можно задать режим каскадного обновления и удаления связанных записей. Если условия целостности установлены, то при попытке внесения изменений в данные, которые могут нарушить условие целостности, Access отображает диалоговое окно, препятствующее внесению этих изменений. Если таблица с данными содержит поля с повторяющимися значениями (не нормализована), то расходуется дополнительная память, не может быть обеспечен однократный ввод и корректировка данных в этих полях, велика вероятность возникновения ошибок. С помощью Мастера Access позволяет автоматически или вручную выполнить анализ таблицы и разделить ее на несколько взаимосвязанных таблиц, в которых данные не будут дублироваться. Для полученных таблиц Мастер анализа таблиц автоматически создает схему данных, в которой устанавливаются связи 1:М и определяются параметры обеспечения целостности. После процедуры анализа для исходной таблицы будут получены нормализованные взаимосвязанные таблицы. Однако Мастер анализа таблиц далеко не во всех случаях может правильно выделить повторяющиеся данные в отдельную таблицу. Предусматривается участие пользователя в корректировке предложений мастера по разделению таблицы, особенно если в таблице имеется несколько полей с повторяющимися значениями. Порядок выполнения работы: 1. Выполните нормализацию таблицы, созданной в лабораторной работе №1. Для этого • Откройте свою БД. • Проанализируйте и разбейте таблицу БД в соответствиями с правилами нормализации. Запишите в тетрадь структуры и схему данных для новых взаимосвязанных таблиц. • Для выполнения автоматизированной нормализации таблиц воспользуйтесь командой меню Сервис!Анализ!Таблица. В третьем окне диалога выберите имя таблицы, для которой будет осуществляться анализ. • В следующем окне диалога выберете автоматический способ формирования таблиц. Далее проверьте правильность распределение полей по таблицам, созданных Мастером, сравните со своим вариантом нормализации и внесите коррективы в список полей взаимосвязанных таблиц путем перетаскивания полей из одной таблицы в другую, а при необходимости создайте еще одну таблицу или поменяйте ключевые поля. • Переименуйте таблицы, дважды щелкнув мышью на имени таблицы. • Окончательно определите уникальные ключи таблиц. • В последнем окне на вопрос о необходимости создать запрос, который бы объединил полученные таблицы в одну, соответствующие исходной, выберите "Нет". • Откройте таблицы и ознакомьтесь с их содержимым. • Просмотрите структуру полученных таблиц в режиме конструктора. Обратите внимание, что Мастер анализа в подчиненной таблице по умолчанию определяет свойство Тип элемента управления закладки Подстановка равным значению Поле со списком. В качестве источника строк этого поля мастер выбирает запись главной таблицы со всеми полями. При просмотре в режиме таблицы в этом поле содержатся значения всех полей из соответствующей записи главной таблицы. Измените в строке Тип элемента управления значение Поле со списком на значение Поле, а в общих свойствах введите новое значение в строке Подпись поля . Посмотрите на результаты внесенных изменений в табличном режиме. • На панели инструментов нажмите кнопку Схема данных, а затем на панели окна схемы данных щелкните по кнопке Показать все связи. Эту же команду можно выполнить через главное меню Сервис!Схема данных. Проанализируйте полученные данные. • Щелкните правой мышью на линии связи между двумя таблицами и удалите связь. • Восстановите удаленную связь. Для этого выделите в главной таблице уникальное ключевое поле, по которой устанавливается связь, а затем при нажатой кнопке мыши протащите курсор в соответствующее поле подчиненной таблицы. • В открывшемся окне Связи установите параметры целостности, каскадное обновление связанных полей и каскадное удаление связанных записей. Эти же параметры можно задать командой меню Связи!Изменить связь или через контекстное меню Изменить связь. • Закройте окно схемы данных. 2. Создайте два варианта запроса на выборку по связанным таблицам, в который включите поля каждой из таблиц. Для построения первого варианта запроса воспользуйтесь Мастером создания запросов, для второго варианта - Конструктором. 3. Создайте запрос на обновление данных в связанных таблицах. Поля, требующие обновления и поля, по которым задаются условия отбора, выберите произвольно, но так чтобы они принадлежали разным таблицам. 4. Удалите записи из связанных таблиц, согласно произвольно выбранному критерию. 5. Предварительно просмотрите в режиме таблицы список удаляемых записей, а затем запустите запрос. Удалять записи можно непосредственно из таблицы. 6. Завершите работу с БД Access. | |
Просмотров: 4714 | Комментарии: 1 | Рейтинг: 1.0/1 |
Всего комментариев: 0 | |