Базы данных | страница 69
Для того чтобы наглядно в сравнении продемонстрировать работу ненормализованной и нормализованной базы данных, рассмотрим следующий пример.
Пусть у нас имеется базовое отношение, содержащее информацию о результатах экзаменационной сессии. Такую базу данных мы уже рассматривали раньше.
Итак, вариант 1 схемы базы данных.
В этом отношении, как видно из изображения схемы базового отношения, задан составной первичный ключ:
Primary key (№ зачетной книжки, Предмет);
Также в этом отношении задана система функциональных зависимостей:
{№ зачетной книжки} → {Фамилия, Имя, Отчество};
Приведем табличный вид небольшого фрагмента базы данных с данной схемой отношения. Этот фрагмент мы уже применяли в рассмотрении ограничений функциональных зависимостей, поэтому на его примере нам будет довольно легко понять и данную тему.
Здесь для поддержания целостности данных по состоянию, т. е. для выполнения ограничения системы функциональной зависимости {№ зачетной книжки} → {Фамилия, Имя, Отчество} при изменении, например, фамилии необходимо просматривать все кортежи этого базового отношения и последовательно вводить необходимые изменения. Однако так как это довольно громоздкий и трудоемкий процесс (особенно если мы имеем дело с базой данных большого учебного заведения), разработчики систем управления базами данных пришли к выводу, что этот процесс необходимо автоматизировать, т. е. сделать автоматическим. Теперь контроль выполнения этой (и любой другой) функциональной зависимости можно организовывать автоматически при помощи правильного объявления в базовом отношении различных ключей и так называемой декомпозиции (т. е. разбиения чего-либо на несколько самостоятельных частей) этого отношения.
Итак, нашу имеющуюся схему отношения «Сессия» разобьем на две схемы: схему «Студенты», содержащую только информацию о студентах данного учебного заведения, и схему «Сессия», содержащую информацию о последней прошедшей сессии. А затем объявим ключи таким образом, чтобы можно было без труда получить любую необходимую информацию.
Покажем, как будут выглядеть эти новые схемы отношений со своими ключами.
Вариант 2 схемы базы данных.
Студенты (№ зачетной книжки, Фамилия, Имя, Отчество),
Primary key (№ зачетной книжки).
Сессия (№ зачетной книжки, Предмет, Оценка),
Primary key (№ зачетной книжки, Предмет),
Foreign key (№ зачетной книжки) references Студенты (№ номер зачетной книжки).