Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД ACCESS (3).doc
Скачиваний:
3
Добавлен:
06.12.2018
Размер:
1.28 Mб
Скачать

Обеспечение (поддержка) целостности данных

При занесении или обновлении данных СУБД должна выполнять следующие правила:

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

2. После удаления записи из главной таблицы должны быть удалены связанные с ними записи подчиненных таблиц.

3. Нельзя заносить в поле связи подчиненной таблицы значение, которое отсутствует среди значений ключа главной таблицы. (Иначе владелец машины может отсутствовать в таблице «Жители».)

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

Дополнительные замечания по созданию связей:

1. Если в БД несколько таблиц, то подчиненных таблиц может быть больше одной.

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

Типы связей

В реляционных БД связи между таблицами могут быть трех типов:

1. В случае таблиц «Жители» и «Машины» одному значению ключа «ФИО» главной таблицы может соответствовать более одного значения внешнего ключа, так как один человек может владеть более чем одной машиной. В общем случае: если значению ключа главной таблицы может соответствовать одно, несколько или ни одного значения внешнего ключа, то такая связь между таблицами называется связью «Один–ко–многим». Такая связь возможна, когда поле связи является ключом только в главной таблице.

2. Связь «Один-к-Одному» можно установить, если поля связи в обеих таблицах являются ключами. Как следует из раздела «Таблицы реляционной БД», каждое значение ключа может встречаться в записях только один раз. Поэтому при связи по ключевым полям каждой записи в одной таблице может найтись только одна соответствующая запись или ее не найдется. Такой тип связи называется связью «Один-к-Одному». Разберем этот тип связи подробнее на примере. Предположим, что в Красноярске проведен выборочный социологический опрос (опрошены не все жители). В результате появилась таблица «Опрос» (рисунок 5). Пусть поля «ФИО» выбраны полями связи для таблиц «Жители» и «Опрос». Число опрошенных меньше числа жителей, поэтому каждой записи в таблице «Жители» будет соответствовать одна запись в «Опросе» или ни одной. Для записи в «Опросе» также всегда найдется одна соответствующая запись в «Жители». (Отметим, что удаление записи из «Жители» требует удаления записи из «Опроса». Потому таблица «Жители» при связи по полю «ФИО» является главной. Однако, при задании рассматриваемого типа связи это не существенно.)

3. Еще один тип связи «Многие-ко-Многим» между двумя таблицами осуществляется с помощью третьей, «промежуточной» таблицы. Этот, более сложный, вид связи мы не рассматриваем. Используйте «Справку» Access для получения сведений на эту тему: вызовите «Справку», введите в текстовое поле «Мастера ответов» текст «Связи между таблицами».

ФИО

адрес

возраст

За/Против

…………………….

…………..

Кулев Иван Иваныч

Рис. 5. Таблица «Опрос»

*

С помощью СУБД Access можно создать БД, состоящую из таблиц «Жители», «Машины» и «Опрос». Если задать описанные выше, в пунктах 1 и 2, два типа связи, то они изобразятся в окне «Схема данных» как это показано на рисунке 6.

Рис. 6