Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 31
Текст из файла (страница 31)
Наиболее важной здесь является проблема структуризации данных, на пей мы сосредоточим основное внимание.При проектировании структур данных для автоматизированных системможно выделить три основных подхода:1. Сбор информации об объектах решаемой задачи в рамках одной таблицы (одного отношения) и последующая декомпозиция ее на несколько взаимосвязанных таблиц на основе процедуры нормализации отношений.2. Формулирование знаний о системе (определение типов исходных данных иих взаимосвязей) и требований к обработке данных, получение с помощью CASEсистемы (системы автоматизации проектирования и разработки баз данных) готовой схемы БД или далее готовой прикладной информационной системы.3.
Структурирование информации для использования в информационнойсистеме в процессе проведения системного анализа на основе совокупностиправил и рекомендаций.Часть 2. Проектирование и использование БД150Ниже мы рассмотрим первый из названных подходов, являющийся классическим и исторически первым. Прежде всего охарактеризуем основныепроблемы, имеющие место при определении структур данных в отношенияхреляционной модели.ИзбыточноедублированиеданныхианомалииСледует различать простое (неизбыточное) и избыточное дублированиеданных. Наличие первого из них допускается в базах данных, а избыточноедублирование данных может приводить к проблемам при обработке данных.Приведем примеры обоих вариантов дублирования.Пример пеызбыточного дублирования данных представляет приведенное нарис.
5.1 отношение С_Т с атрибутами Сотрудник и Телефон. Для сотрудников,находящихся в одном помещении, номера телефонов совпадают. Номер телефона 4328 встречается несколько раз, хотя для каждого служащего номер телефона уникален. Поэтому ни один из номеров не является избыточным. Действительно, при удалении одного из номеров телефонов будет утеряна информация о том, по какому номеру можно дозвониться до одного из служащих.С_ТСотрудникТелефонИванов И.М.3721Петров М.И.4328Сидоров Н.Г.4328Егоров В.В.4328Рис. 5.1. Неизбыточное дублированиеПример избыточного дублирования (избыточности) представляет приведенное на рис. 5.2а отношение С_Т_Н, которое, в отличие от отношения С_Т, дополнено атрибутом Н_комн (номер комнаты сотрудника).
Естественно предположить, что все служащие в одной комнате имеют один и тот же телефон. Следовательно, в рассматриваемом отношении имеется избыточное дублирование данпых. Так, в связи с тем, что Сидоров и Егоров находятся в той же комнате, ч то иПетров, их номера можно узнать из кортежа со сведениями о Петрове.На рис. 5.26 приведен пример неудачного отношения С_Т_Н, в которомвместо телефонов Сидорова и Егорова поставлены прочерки (неопределенные значения). Неудачность подобного способа исключения избыточностизаключается в следующем. Во-первых, при программировании придется потратить дополнительные усилия на создание механизма поиска информации5. Проектирование баз данных151с_т_нСотрудникТелефон Н_комнИванов И.М.3721Петров М.И.б)С_Т_НСотрудникТелефонН_комн109Иванов И.М.37211094328111Петров М.И.4328111Сидоров Н.Г. 4328111Сидоров Н.Г.—111Егоров В.В.111Егоров В.В.—1114328Рис.
5.2. Избыточное дублированиедля прочерков таблицы. Во-вторых, память все равно выделяется под атрибуты с прочерками, хотя дублирование данных и исключено. В-третьих, чтоособенно важно, при исключении из коллектива Петрова кортеж со сведениями о нем будет исключен из отношения, а значит, уничтожена информацияо телефоне 111-й комнаты, что недопустимо.Возможный способ выхода из данной ситуации приведен на рис, 5.3.
Здесьпоказаны два отношения С_Н и Н_Т, полученные путем декомпозиции исходного отношения С_Т_Н. Первое из них содержит информацию о номерахкомнат, в которых располагаются сотрудники, а второе - информацию о номерах телефонов в каждой из комнат. Теперь, если Петрова и уволят из учреждения и, как следствие этого, удалят всякую информацию о нем из базданных учреждения, это не приведет к утере информации о номере телефонав 111-й комнате.Т_НС_НТелефонН_комнСотрудникН_комн3721109Иванов И.М.1094328111Петров М.И.111Сидоров Н.Г.111Егоров В.В.111Рис.
5.3. Исключение избыточного дублированияПроцедура декомпозиции отношения С_Т_Н на два отношения С_Н и Н_Тявляется основной процедурой нормализации отношений.Избыточное дублирование данных создает проблемы при обработке кортежей отношения, названные Э. Коддом «аномалиями обновления отношения». Он показал, что для некоторых отношений проблемы возникают припопытке удаления, добавления или редактирования их кортежей.Часть 2. Проектирование и использование БД152Аномалиями будем называть такую ситуацию в таблицах БД, которая приводит к противоречиям в БД либо существенно усложняет обработку данных.Выделяют три основные вида аномалий: аномалии модификации (или редактирования), аномалии удаления ^ а н о м а л и и добавления.Аномалии модификации проявляются в том, что изменение значения одного данного может повлечь за собой просмотр всей таблицы и соответствующее изменение некоторых других записей таблицы.Так, например, изменение номера телефона в комнате 111 (рис.
5.2а), чтопредставляет собой один единственный факт, потребует просмотра всей таблицы С _ Т _ Н и изменения поля Н_комн согласно текущему содержимомутаблицы в записях, относящихся к Петрову, Сидорову и Егорову.Аномалии удаления состоят в том, что при удалении какого-либо данного изтаблицы может пропасть и другая информация, которая не связана напрямую судаляемым данным.В той же таблице С_Т_Н удаление записи о сотруднике Иванове (например, по причине увольнения или ухода на заслуженный отдых) приводит к исчезновению информации о номере телефона, установленного в 109-й комнате.Аномалии добавления возникают в случаях, когда информацию в таблицунельзя поместить до тех пор, пока она неполная, либо вставка новой записитребует дополнительного просмотра таблицы.Примером может служить операция добавления нового сотрудника все в ту жетаблицу С_Т_Н.
Очевидно, будет противоестественным хранение сведений в этойтаблице только о комнате и номере телефона в ней, пока никто из сотрудников непомещен в нее. Более того, если в таблице С_Т_Н поле Служащий является ключевым, то хранение в ней неполных записей с отсутствующей фамилией служащего просто недопустимо из-за неопределенности значения ключевого поля.Вторым примером возникновения аномалии добавления может быть ситуация включения в таблицу нового сотрудника.
При добавлении таких записей для исключения противоречий желательно проверить номер телефонаи соответствующий номер комнаты хотя бы с одним из сотрудников, сидящих с новым сотрудником в той же комнате. Если же окажется, что у нескольких сотрудников, сидящих в одной комнате, имеются разные телефоны, товообще не ясно, что делать (то ли в комнате несколько телефонов, то ли какой-то из номеров ошибочный).ФормированиеисходногоотношенияПроектирование БД начинается с определения всех объектов, сведения окоторых будут включены в базу, и определения их атрибутов.
Затем атрибуты сводятся в одну таблицу - исходное отношение.Пример. Формирование исходного отношения.Предположим, что для учебной части факультета создается БД о преподавателях. На первом этапе проектирования БД в результате общения с за-5. Проектирование баз данных153казчиком (заведующим учебной частью) должны быть определены содержащиеся в базе сведения о том, как она должна использоваться и какую информацию заказчик хочет получать в процессе ее эксплуатации.
В результате устанавливаются атрибуты, которые должны содержаться в отношениях БД, и связи между ними. Перечислим имена выделенных атрибутов иих краткие характеристики:ФИО - фамилия и инициалы преподавателя. Исключаем возможность совпадения фамилии и инициалов у преподавателей.Должн - должность, занимаемая преподавателем.Оклад - оклад преподавателя.Стаж - преподавательский стаж.Д_Стаж - надбавка за стаж.Каф - помер кафедры, на которой числится преподаватель.Предм - название предмета (дисциплины), читаемого преподавателем.Группа - номер группы, в которой преподаватель проводит занятия.ВидЗан - вид занятий, проводимых преподавателем в учебной группе.Одно из требований к отношениям заключается в том, чтобы все атрибутыотношения имели атомарные (простые) значения.
В исходном отношениикаждый атрибут кортежа также должен быть простым. Пример исходногоотношения ПРЕПОДАВАТЕЛЬ приведен на рис, 5.4.ПРЕПОДАВАТЕЛЬФИОДолжнОкладСтаж Д_СтажКафПредмГруппаВидЗанИванов И.М.преп500510025СУБД256ПрактИванов И.М.преп500510025ПЛ/1123ПрактПетров М.И.ст.преп800710025СУБД256ЛекцияПетров М.И.ст. преп800710025Паскаль256ПрактСидоров Н.Г.преп5001015025ПЛ/1123ЛекцияСидоров Н.Г.преп5001015025Паскаль256ЛекцияЕгоров В.В.преп500510024ПЭВМ244ЛекцияРис. 5Л. Исходное отношение П Р Е П О Д А В А Т Е Л ЬУказанное отношение имеет следующую схему П Р Е П О Д А В А Т Е Л Ь( Ф И О , Должн, Оклад, Стаж, Д_Стаж, Каф, Предм, Группа, ВидЗан).Исходное отношение ПРЕПОДАВАТЕЛЬ содержит избыточное дублирование данных, которое и является причиной аномалий редактирования. Различают избыточность явную и неявную.Часть 2.
Проектирование и использование БД154Явная избыточность заключается в том, что в отношении ПРЕПОДАВАТ Е Л Ь строки с данными о преподавателях, проводящих занятия в нескольких группах, повторяются соответствующее число раз. Например, в отношении П Р Е П О Д А В А Т Е Л Ь все данные по Иванову повторяются дважды. Поэтому, если Иванов И.М. станет старшим преподавателем, то этот факт должен быть отражен в обеих строках. В противном случае будет иметь местопротиворечие в данных, что является примером аномалии редактирования,обусловленной явной избыточностью данных в отношении.Неявная избыточность в отношении П Р Е П О Д А В А Т Е Л Ь проявляется водинаковых окладах у всех преподавателей и в одинаковых добавках к окладу за одинаковый стаж. Поэтому, если при изменении окладов за должность с500 на 510 это значение изменят у всех преподавателей, кроме, например, Сидорова, то база станет противоречивой.