Проектирование базы данных – одна из наиболее сложных и ответственных задач, связанных с созданием информационной системы (ИС). Конечной целью проектирования является построение конкретной БД, воплощающей представление проектировщика о предметной области и задачах, решаемых пользователями с помощью БД.
Целью разработки любой базы данных является хранение и использование информации о какой-либо предметной области.
Предметная область - это часть реального мира, данные о которой нужно отразить в базе данных. На основе анализа предметной области определяются цели разрабатываемой БД и требования к ней, выявляются ее основные сущности (классы объектов) и их атрибуты. Как правило, в предметной области можно выделить несколько сущностей, которые определенным образом связаны между собой. Например, в предметной области Университет можно выделить следующие сущности: студенты, преподаватели, учебный план, экзамены, аудитории, расписание и др. Все они взаимосвязаны: студенты осваивают учебный план, посещают занятия в соответствии с расписанием, сдают экзамены; преподаватели проводят занятия в соответствии с учебным планом и расписанием, принимают экзамены и т.д.
Основным структурным компонентом базы данных является таблица. При определении состава таблиц следует руководствоваться правилом: в каждой таблице должны храниться данные только об одном классе объектов (сущности). Например, в одной таблице нельзя хранить анкетные данные студента и фамилии преподавателей, которымон сдавал экзамены, т.к. это свойства разных классов объектов. Нарушение этого принципа неизбежно приводит к избыточности данных, когда один и тот же атрибут для одного и того же экземпляра сущности многократно повторяется в таблице.
На рисунке 1 приведен пример таблицы с избыточностью данных, где многократно повторяются фамилия студента, название предмета, фамилия преподавателя. Причина этого в том, что в приведенной таблице содержатся сведения сразу о нескольких сущностях: студенте, предмете, преподавателе и результатах сессии. Избежать такой избыточности можно, разбив данную таблицу на несколько взаимосвязанных таблиц, в каждой из которых будут присутствовать атрибуты только одной сущности (например, таблицы Студенты, Дисциплины, Преподаватели и Сессия).
Рисунок 1 Пример таблицы с избыточностью данных
Основная цель проектирования БД – это сокращение избыточности хранимых данных, которое достигается путем нормализации данных.
Процесс нормализации – это разбиение таблицы на две или более таблиц с целью ликвидации избыточности и противоречивости данных. Окончательная цель нормализации сводится к получению такого проекта БД, в котором «каждый факт появляется лишь в одном месте».
Типы связей (отношений) между таблицами
Связи между любыми двумя таблицами реляционной БД относятся к одному из трех типов: один-к-одному (1:1) , один-ко-многим (1:М) и много-ко-многим (М:М).