Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Белобжеский_Лекции_по_ББД.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5.5 Mб
Скачать

Проблемы, вызываемые использованием единственного отношения (аномалии обновления)

Начинающий проектировщик будет использовать отно­шение КОНСУЛЬТАНТ (рис. 15.3) в качестве завер­шенной БД. Это выглядит достаточно последователь­ным. Зачем разбивать отношение КОНСУЛЬТАНТ на несколько более мелких отношений, если оно способ­но заключать в себе все данные? Существует не­сколько причин, почему не следует использовать дан­ное отношение в качестве единственного в БД. Это обусловлено тем, как будет использоваться БД, и ка­кое воздействие на данные в отношении КОНСУЛЬ­ТАНТ будут оказывать определенные операции. Раз­личаются три специфичные проблемы: проблема, свя­занная с обновлением (модификацией) данных в БД; проблема, обусловленная необходимостью удаления кортежей; проблема, обусловленная необходимостью включения новых кортежей. Выделенные проблемы обычно называют аномалиями вставки, удаления и обновления, понимая под аномалией отклонение от нормы. Общее название этих аномалий – аномалии обновления.

Проблема вставки

Если у консультанта появляется новый консульти­руемый им студент, еще не закончивший курс, для него необходимо включить в БД кортеж с нулевыми (пустыми) значениями атрибутов Курс, Семестр и Оценка. Как уже не раз отмечалось, нулевых значе­ний следует избегать. Следовательно, включение в БД нового студента невозможно вплоть до завершения им курса.

На рис. 15.4(а) показан пример того, как будет вы­глядеть отношение КОНСУЛЬТАНТ в случае прину­дительного включения в него информации о студенте, не завершившем ни одного курса (для случая исполь­зования dBASE II). Пустые символьные строки пред­ставляются пробельными полями (Курс и Семестр), в то время как нулевое численное значение в поле Оценка интерпретируется dBASE II как 0.0. Рис. 15.4(6) иллюстрирует возможные последствия появле­ния 0.0 при отсутствии информации. Получен ответ на запрос "Выдать список Сном и Сфам для всех студентов, получивших хотя бы одну оценку ниже 2.0". В число таких студентов попал ХоумерХ, хотя он не закончил ни одного курса.

Рис. 15.4. а - результат вставки записи с пустыми полями; б - ошибочный результат выполнения запроса, вызванный наличием пустых полей

Проблема обновления

В отношении КОНСУЛЬТАНТ большое число избыточных данных. Избыточность данных всегда свидетельствует о возможности модификации только части требуемых данных с помощью операции обновления.

Отношение КОНСУЛЬТАНТ характеризуется как явной, так и неявной избыточностью. Явная избыточ­ность заключается в том, что фамилия данного сту­дента, номер комнаты и номер телефона могут поя­виться в отношении несколько раз. В экземпляре от­ношения КОНСУЛЬТАНТ, приведенном на рис. 15.3, номер комнаты ДжонсГ появляется четырежды. Если она обратится к своему консультанту и сообщит ему об изменении номера ее комнаты, то консультант бу­дет вынужден проследить изменение этого номера во всех четырех кортежах во избежание противоречиво­сти данных.

Неявная избыточность обнаруживается в том, что один и тот же номер телефона имеют все студенты, живущие в одной комнате. На рис. 15.3 телефонный номер для комнаты 120DH появляется в сочетании с именами ДжонсГ и ХаузДж. Допустим, ДжонсГ изве­стит своего консультанта о том, что ее номер теле­фона изменен на 7777, забыв при этом сообщить о подруге по комнате. Если консультант изменит теле­фонный номер только в тех кортежах, которые содер­жат номер телефона ДжонсГ, то правильный номер телефона, расположенного в комнате 120DH, будет фактически утерян, поскольку в отношении будут присутствовать два различных телефонных номера для одной комнаты.

Рис. 15.5 иллюстрирует последнюю аномалию обнов­ления. На рис. 15.5 (а) телефонный номер для ДжонсГ изменяется на 7777. На рис. 15.5 (б) приво­дится ответ dBASE II на запрос "Вывести перечень номеров телефонов для комнаты 120DH". В ответе на запрос содержатся два номера, что свидетельствует об ошибке, поскольку в каждой комнате имеется один телефон с одним телефонным номером. Обратите вни­мание, что dBASE II вывела на печать дублирован­ные ответы на запрос. Каждый из телефонных номе­ров 2136 и 7777 содержится в трех различных корте­жах экземпляра обсуждаемого отношения КОНСУЛЬ­ТАНТ, и все шесть значений были распечатаны СУБД. При программировании некоторых СУБД в них закладывается функция подавления дублирования в ответах -на -запросы—если необходимость дублирования не оговаривается специально

Рис. 15.5. а - изменение номера телефона некоторого студента, б - ошибочный результат выполнения запроса, вызванный изменением номера телефона