Проектирование БД начинается с определения всех объектов, сведения о которых будут включены в базу, и определения их атрибутов. Затем атрибуты сводятся в одну таблицу - исходное отношение.
Пример. Формирование исходного отношения.
Предположим, что для учебной части факультета создается БД о преподавателях. На первом этапе проектирования БД в результате общения с заказчиком (заведующим учебной частью) должны быть определены содержащиеся в базе сведения о том, как она должна использоваться и какую информацию заказчик хочет получать в процессе ее эксплуатации. В результате устанавливаются атрибуты, которые должны содержаться в отношениях БД, и связи между ними. Перечислим имена выделенных атрибутов и их краткие характеристики.
ФИО - фамилия и инициалы преподавателя. Исключаем возможность совпадения фамилии и инициалов у преподавателей.
Должн - должность, занимаемая преподавателем.
Оклад - оклад преподавателя.
Стаж - преподавательский стаж.
Д_Стаж - надбавка за стаж.
Кафедра - номер кафедры, на которой числится преподаватель.
Предм - название предмета (дисциплины), читаемого преподавателем.
Группа - номер группы, в которой преподаватель проводит занятия.
ВидЗан - вид занятий, проводимых преподавателем в учебной группе.
Одно из требований к отношениям заключается в том, чтобы все атрибуты отношения имели атомарные (простые) значения. В исходном отношении каждый атрибут кортежа также должен быть простым. Пример исходного отношения ПРЕПОДАВАТЕЛЬ приведен на рис. 19.7.
Указанное отношение имеет следующую схему: ПРЕПОДАВАТЕЛЬ(ФИО, Должн, Оклад, Стаж, Д_Стаж, Каф, Предм, Группа, ВидЗан).
Исходное отношение ПРЕПОДАВАТЕЛЬ содержит избыточное дублирование данных, которое и является причиной аномалий редактирования. Различают избыточность явную и неявную.
Явная избыточность заключается в том, что строки с данными о преподавателях,
ПРЕПОДАВАТЕЛЬ
ФИО | Должн | Оклад | Стаж | Д_Стаж | Каф | Предм | Группа | ВидЗан |
Иванов И.М. | преп | 500 | 5 | 100 | 25 | СУБД | 256 | Практ |
Иванов И.М. | преп | 500 | 5 | 100 | 25 | ПЛ/1 | 123 | Практ |
Петров М.И. | ст. преп | 800 | 7 | 100 | 25 | СУБД | 256 | Лекция |
Петров М.И. | ст. преп | 800 | 7 | 100 | 25 | Паскаль | 256 | Практ |
Сидоров Н.Г. | преп | 500 | 10 | 150 | 25 | ПЛ/1 | 123 | Лекция |
Сидоров Н.Г. | преп | 500 | 10 | 150 | 25 | Паскаль | 256 | Лекция |
Егоров В.В. | преп | 500 | 5 | 100 | 24 | ПЭВМ | 244 | Лекция |