Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб№5_Access.doc
Скачиваний:
4
Добавлен:
04.08.2019
Размер:
387.58 Кб
Скачать

Связь типа "один-к-одному"

При отношении «один-к-одному» запись в таблице 1 может иметь не более одной связанной записи в таблице 2, и, наоборот. Этот тип свя­зи используется редко, поскольку такие данные могут быть помещены в одну таблицу. Связь с отношением «один-к-одному» используют для разделения очень широких таблиц, для отделения части таблицы по со­ображениям защиты, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице. Например, такой тип связей между таблицами подходит для хранения конфиденциальных кадровых сведений о сотрудниках.

Допустим, Вы хотите в Вашей БД Студенты указать еще адреса студентов, а также данные о родителях каждого студента. Конечно, можно было бы ввести эти данные в саму таблицу, но она уже довольно большая, и станет совсем неудобной для пользователя. Можно создать в БД еще одну таблицу Адреса и связать ее с таблицей Студенты при помощи связи типа "один-к-одному". Создайте таблицу Адреса, запол­ните ее самостоятельно. Обратите внимание: у Вас должны быть в ней поля: Адрес, Данные о родителях. Закройте таблицу. Щелкните правой кнопкой мыши по свободному месту в окне БД. Раскроется контекстное меню, в нем выберите Схема данных, щелкните правой кноп­кой, появится контекстное меню

выберите из него Добавить таблицу, щелкните. Раскроется окно До­бавление таблицы, в котором надо выбрать Адреса и нажать кнопку Добавить. Раскроется окно

в котором надо нажать мышью поле Код в таблице Студенты и, не от­пуская, перетащить к полю Код в таблице Адреса. Снова раскроется окно Связи, в нем, как и в прошлый раз, надо выбрать Обеспечение целостности данных, далее выбрать пункт 1. Объединение только тех записей, в которых связанные поля обеих таблиц совпадают. Нажмите ОК, обратите внимание, в нижней части окна написан тип связи: один-к-одному. Нажмите кнопку Создать. Должно получиться окно

Связь :'один-к-одному" удобна для разбиения одной таблицы на не­сколько. Иногда это удобно для пользователя, хотя не уменьшает раз­мер БД. Каждая таблица хранит данные из определенной области, в этом случае таблицы проще редактировать. Кроме того, одну таблицу можно заменить другой, модифицированной. Это — принцип модуль­ности БД. На следующих занятиях Вы будете работать со связанными таблицами.

Мастер анализа таблиц (связь типа "многие-к-одному")

В Access существует средство для автоматического выполнения операции нормализации. Это так называемый Мастер по анализу таблиц. Если Вы не знаете, насколько рационально спроектирована таблица, то можете прогнать ее через эту программу. При использова­нии данного Мастера следует иметь в виду, что пользователь не всегда владеет всей информацией о своих данных. Например, если таблица большая, то человек просто не в состоянии запомнить все ее особенно­сти.

Рассмотрим следующий пример. Создайте новую БД, назовите ее Анализ. В этой БД создайте таблицу, введите в нее следующие данные:

Магазин

Директор

Номер накладной

"Океан"

Иванов

2

"Подарки"

Петров

19

Гастроном

Сидоров

7

''Подарки'1

Петров

15

Гастроном

Сидоров

22

"Океан"

Иванов

4

"'Подарки"

Петров

3

Гастроном

Сидоров

11

"Океан"

Иванов

8

"Океан"

Иванов

9

Самостоятельно продумайте типы и форматы полей. Назовите таб­лицу Таблица1, сохраните ее.

Видно, что таблица имеет повторяющиеся данные. Для запуска Мастера в строке меню выберите Сервис, в раскрывшемся меню выбе­рите Анализ, затем Таблица. Раскроется окно

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

Внимательно рассмотрите окно, посмотрите примеры. Второй шаг Мастера показывает, к чему стремится программа. Предполагается, что разбиение одной таблицы на несколько позволит усовершенствовать БД. На Мастера возлагается также задача определить связи между таблицами. Он оставляет в неприкосновенности исходную таблицу и создает новые для размещения тех же самых данных. Разработчик БД должен сам впоследствии решить, как ему поступать с таблицами: какие из них стереть, а какие оставить. Нажмите кнопку Далее.

Настоящая работа Мастера начинается с третьего шага. Данное окно предназначено для выбора таблицы, но в нашем случае она одна, выбирать не из чего. Нажмите кнопку Далее.

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

Получили первые результаты: Мастер разбил исходную таблицу на две. Теперь он предлагает дать новые имена вновь созданным таблицам. Для этого в окне Мастера имеется кнопка Переименовать таблицу.

Видно, что в таблице1 главное — номер накладной, поэтому ее стоит назвать Накладная. Вторую же таблицу можно назвать Магазины.

Щелкните по окну таблицы, которую хотите переименовать, нажмите на кнопку , в открывшемся окне введите новое имя таблицы, нажмите ОК. Если Вы передумали, можно отменить название, нажав на кнопку .

Мастер связал две таблицы с помощью операции подстановки. Связь между двумя таблицами носит название "многие-к-одному", т.к. много записей из таблицы Накладные связаны с одной записью из таб­лицы Магазины. Графически "много" обозначается символом бесконечности , а один — цифрой 1.

При установке связи между таблицами одна из них является глав­ной, а другая — подчиненной, связанной. В данном случае выполнена подстановка в Накладные, а Магазины является источником данных для нее. Должно ли так быть по смыслу? Надо заметить, что данные распре­делились по таблицам более рационально, но с позиции здравого смыс­ла структура данных претерпела изменение в худшую сторону. Очевид­но, что во второй таблице (Магазины) собраны основные сведения об объектах, а в первой (Накладные) — частные. Возможна ситуация, ко­гда в базу данных будет добавлена еще одна таблица с информацией, и ее надо будет связать с таблицей Магазины. Поэтому таблица Магазины должна занимать центральное место в БД, и связи к другим таблицам должны идти от нее, а не к ней. Как это сделано, рассмотрим позже. Обратите внимание, в таблице Магазины создано новое поле Уникальный код сделано клю­чевым автоматически. По смыслу это верно, т.к. в списке организаций названия не должны повторяться. Сейчас щелкните по кнопке Далее, раскроется окно

На этом шаге необходимо определить ключевые поля, если они не зада­ны или не удовлетворяют требованию однозначности в отношении со­ответствующих им записей. Например, на рисунке в таблице Магазины ключевым полем автоматически сделано поле Директор, а это не очень верно, т.к. среди директоров могут быть однофамильцы. Лучше сделать ключевым поле Магазины. Для этого щелкните по этой таблице, чтобы

сделать ее активной, щелкните по кнопке Задать ключ .Поле Магазины стало ключевым. Кнопка Добавить ключ — нужна для создания в таблице нового поля, которое будет использовано в качестве ключевого. Например, можно в таблице Магазины создать новое поле Код. Сделайте это! Нажмите кнопку Далее.

Если установить переключатель в строке Да, следует создать запрос, то помимо таблиц Мастер построит таблицу-запрос, которая будет доступна на вкладке Запросы. Имя запроса будет совпадать с названием исходной таблицы. Можете отключить вывод справки, а можете вывести ее на экран. Нажмите кнопку Готово. Появится сообщение

Нажмите кнопку ОК. Посмотрите на окно Вашей БД, оно имеет вид

Таблица1 — это исходная таблица. Магазины и Накладные - созданные таблицы. Посмотрите, они должны иметь вид

Щелкните по вкладке Запросы, там расположен запрос Табли-ца1_новая. Откройте этот запрос, перед Вами откроется окно

Мастер анализа таблиц устранил дублирование данных путем создания таблицы, в которой перечислены названия магазинов. То есть физиче­ски название каждого магазина и связанная с ним фамилия директора встречается только один раз. Поле Подстановка Магазины предпола­гает возможность выбора значения поля из списка, а это искажает смысл приведенных данных: каждой накладной соответствует только одна организация. В таблице Накладные эта однозначность нарушена. В каждую ее запись можно подставить название любой ее точки. Следо­вательно, в данном случае связь типа "многие к одному" нас не устраи­вает.

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

Таким образом Вы будете использовать для операции подстановки значения ключевого поля Код из таблицы Магазины. Откройте табли­цу Накладные для просмотра. Теперь в столбце Подстановка Магази­ны должны быть числа — коды поля Код из таблицы Магазины. Сравните Вашу таблицу с рисунком

Переименуйте теперь поле Подстановка Магазины, назовите его Код магазина. Тип этого поля должен быть числовым, а формат — длин­ное целое. Закроем окно таблицы.

Удалим связь между таблицами. Для этого в строке меню выбе­рите Сервис, в раскрывшемся меню выберите Схема данных, щелкни­те. Раскроется окно

Щелкните по связи мышкой, нажмите клавишу Del. Появится преду­преждение

Если Вы вдруг передумали удалять связь — нажмите кнопку Нет, сей­час нажмите Да. Связь пропала. Теперь самостоятельно проделайте ос­тавшуюся работу по созданию подчиненной формы следующего вида

Результат покажите преподавателю.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]