русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Создание поля подстановок


Дата добавления: 2013-12-23; просмотров: 1968; Нарушение авторских прав


Установление связей с помощью окна схема данных

Межтабличные связи

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

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

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

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



В Access есть два способа образования связей: созданием поля подстановок или путем установления прямых связей в окне Схема данных.

Окно Схема данных можно открыть с помощью пункта меню Сервис, Схема данных(рис. 16).

 

Рисунок 16. Установление связи один ко многим

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

Рисунок 17. Диалоговое окно Изменение связей

Обеспечение условий целостности данных

Условие целостности служит для обеспечения соответствия записей в подчинен­ной таблице записям главной таблицы. Условие целостности предотвратит непред­намеренное удаление пользователем тех записей в главной таблице, которые связаны с записями в подчиненной таблице. Если при создании связи между таблицами Студенты и Успеваемость мы задали требование соблюдения условий целостности, то при работе с данными система Access наложит три ограничения:

Во-первых, СУБД не позволит в таблице Успеваемость зарегистрировать студента, № студенческого которого не встречается в таблице Студенты.

Во-вторых, значения внешнего ключа № студенческого билета, использованные в подчиненной таблице Успеваемость, защитят соответствующие записи в главной таблице Студенты, так что пользователи не смогут удалить в главной таблице записи о студентах, которые сдали экзамены, т. е. тех которые встречаются в таблице Успеваемость.

В-третьих, сами данные первичного ключа защищены. Нельзя изменить № студенческого студента в таблице Студенты, если на него есть ссылка в таблице Успеваемость. Если попробовать ввести, удалить или изменить данные, нарушающие условие целостности, программа Access выдаст на экран предупреждение и проигнорирует внесенные изменения.

Каскадное обновление и каскадное удаление данных

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

Принимать решение о том, надо ли использовать условие сохранения целостностей данных и разрешать каскадное обновление и каскадное удаление, необходимо самостоятельно. Рассматривая такую возможность, необходимо ответить на следующие вопросы.

1. Надо ли ограничивать значения в подчиненной таблице только теми значениями, которые уже включены в главную таблицу? Например, нужна ли уверенность в том, что при вводе в таблицу Успеваемость сведений о студенте, этот студент уже присутствует в таблице Студенты? Если ответ положительный, то надо использовать условие сохранения целостности данных.

2. Имеет ли поле первичного ключа тип данных Счетчик? Если ответ положительный, то нет смысла допускать использование каскадного обновления связанных полей, поскольку мы все равно не сможем изменить значения в поле типа Счетчик. Надо ли предоставлять возможность изменения существующих значений в поле первичного ключа? Если необходимо сохранить информацию о № студенческого студента на все время его учебы в вузе, не предоставляйте возможность изменять значение первичного ключа: оставьте каскадное обновление связанных полей недоступным. Если же изменение № студенческого допустимо, тогда предоставьте возможность каскадного обновления.

3. Можно ли разрешить удалять записи в главной таблице и все свя­занные записи в подчиненной таблице? Если ответ отрицательный, не предоставляйте возможность каскадного удале­ния связанных записей.

Большинство баз данных содержат два типа таблиц: одни таблицы хранят основные данные (Студенты и Успеваемость), а другие только списки, используемые в основных таблицах (Специальность, Предмет). Такие вспомогательные таблицы называются ссылочными таблицами.

Чтобы создать поле подстановок для таблицы Успеваемость нужно

  1. Создать таблицу Специальность и заполнить ее (рис. 18).
  2. Создать поле подстановок с помощью мастера подстановок,который запускается в конструкторе с помощью раскрывающегося списка в полеТип данных (рис 19).

Рисунок 18. Ссылочная таблица Специальность

 

Схема данных будет иметь вид:

 

Рисунок 19. Схема данных с полем подстановок



<== предыдущая лекция | следующая лекция ==>
Реализация межтабличных связей | Запрос как объект БД


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.002 сек.