Тема 3. принципы построения баз данных. жизненный цикл баз данных

Классическая технология проектирования реляционных баз данных связана с теорией нормализации, основанной на анализе функциональных зависимостей между атрибутами отношений. Процесс нормализации имеет своей целью устранение избыточности данных. Нормализация позволяет существенно сократить объем хранимой информации и устранить аномалии в организации хранения данных. Степень нормализации данных может быть различной. Приведение модели к требуемому уровню нормальной формы является основой построения реляционной базы данных.

Нормализа­ция достигается путем проверки соответствия таблиц ряду условий, определенных в трех уровнях нормализации: первой, второй и третьей нормальных формах (суще­ствуют также и другие уровни).

Первая нормальная форматребует, чтобы каждое поле таблицы БД было неделимым и не содержало повторяющихся групп.

Неделимость поля означает, что содержащиеся в нем значения не должны делиться на более мелкие. Например, если в поле «Подразделение» содержится название факультета и кафедры, требование неделимости не соблюдается и необходимо выделить название факультета или кафедры в отдельное поле.

Повторяющимися являются поля, содержащие одинаковые по смыслу значения. Например, если требуется получить статистику продаж четырех товаров по месяцам, можно создать поля для хранения данных о продаже по каждому товару. Однако что делать, если товаров не 4, а 104, и как быть, если количество товаров заранее не известно? Повторяющиеся группы следует устранить, сохранив в таблице единственное поле «Товар». В результате получим запись, содержащую информацию о статистике продаж по одному товару, но этот товар может быть любым.

Вторая нормальная форматребует, чтобы все поля таблицы зависели от первичного ключа, то есть, чтобы первичный ключ однозначно определял запись и не был избыточен. Если же в какой-либо таблице имеется зависимость каких-либо не ключевых полей от части первичного ключа, следует выделить их в отдельную таблицу, сделав первичным ключом новой таблицы ту часть первичного ключа, от которой зависят данные поля, и установить связь "один ко многим" от новой таблицы к старой.

Третья нормальная форматребует, чтобы в таблицах не имелось транзитивных зависимостей между не ключевыми полями, то есть чтобы значение любого поля, не входящего в первичный ключ, не зависело от значения другого поля, также не входящего в первичный ключ.

Результатом нормализации является модель данных, которую легко поддерживать, не содержащая неопределенностей в данных и повторений данных.

После формальных определений трех уровней нормализации разберем конкретный пример и опишем возможные проблемы. В качестве примера будет рассматриваться база данных, содержащая сведения о посещаемых студентами курсах.

Таблицы базы данных до нормализации

В этом примере предполагается, что:

  • студент может записаться на любое число курсов;
  • лекторы могут вести несколько курсов;
  • каждый лектор всегда проводит занятия в одной и той же аудитории;
  • в каждой аудитории читается только один курс.

Пусть для хранения этих сведений используются следующие Таблицы.

Students (студенты)

Таблица 6

Name (имя) Phoneno (телефон) CourseRegistrations (посещаемые курсы)
Maijorie Green Basic Computing, Database Administration
Bun Gringelsby Database Administration, Advanced Hardware Support
Anico Yokamoto Advanced Hardware Support

Courses (курсы)

Таблица 7

Course (курс) Lecturer (лектор) Room (аудитория)
Basic Computing Meander Smith 542 South
Database Administration Dean Straight 221 East
Advanced Hardware Support Dean Straight 221 East

В этом случае появляются следующие логические противоречия:

· если курс Basic Computing будет закрыт, из таблицы будет удален лектор Meander Smith и аудитория 542 South;

· число курсов, на которые может записаться студент, ограничено длиной записи которую допускает поле Course Registrations;

· трудно выполнять поиск значений в поле Course Registrations, а также использовать его в вычислениях;

· в каждой регистрационной записи повторяется полное название курса. В резуль­тате неэффективно используется пространство и растет вероятность появления несогласованных данных, если название курса введено с ошибками. Кроме того, при изменении названия курса потребуется проводить поиск и обновление всех регистрационных записей;

· таблицу Students невозможно индексировать по фамилии, так как в поле name хра­нятся полные имена студентов;

· если лектор сменит аудиторию, придется обновить сведенияобо всех преподаваемыхим курсах.

Проведем нормализацию

Таблицы базы данных после нормализации

Students (студенты)

Таблица 8

StudentsID(код студента) Firstname (имя) Lastname (фамилия) Phoneno (телефон)
Maijorie Green
Bun Gringelsby
Anico Yokamoto

Регистрационные записи (Registrations)

Таблица 9

RegID (код записи) StudentsID(код студента Courses (курсы)

Courses (курсы)

Таблица 10

Course ID(курс) Course (курс) LecturerID (код лектора)
Basic Computing
Database Administration
Advanced Hardware Support

Lecturers (лектор)

Таблица 11

LecturerID (код лектора) Firstname (имя) Lastname (фамилия) Room (аудитория)
Meander Smith 542 South
Dean Straight 221 East

Между таблицами существуют следующие связи:

Students (студенты) — Courses (курсы): отношение «многие ко многим» через промежуточную таблицу Registrations (регистрационные записи), другими словами это отношение сведено к двум отношениям «одинкомногим»;

Students (студенты) — Registrations (регистрационные записи): отношения «одинкомногим»;

Courses (курсы) — Registrations (регистрационные записи): отношение «одинкомногим»;

Lecturers (лекторы) — Courses (курсы): отношение «один ко многим».

Очевидные преимущества нормализации этих таблиц:

· каждая таблица содержит только один набор связанных данных. Например, в таблице Students теперь нет сведений о посещаемых курсах;

· в каждой таблице имеется первичный ключ: в таблице Students — это поле StudentID, в таблице Registrations — RegID, в таблице Courses — CourseID и в таблице Lecturers — LecturerW,

· отсутствуют составные поля. Каждое поле описывает только один атрибут. Например, поле, содержавшее имя и фамилию студента, разбито на отдельные поля, которые содержат имя и фамилию студента;

· отсутствуют повторяющиеся данные. Так, теперь имена лекторов записываются только один раз;

· отсутствуют поля, содержащие несколько значений. Например, каждая регистрационная запись курса теперь расположена в отдельной строке таблицы Registrations. Для сравнения взгляните на поле Course Registrations (посещаемые курсы) предыдущего варианта таблицы Students;

· каждое поле полностью зависит от первичного ключа. Например, в таблице Courses нет поля Room. Это связано с тем, что аудитория зависит не от кода курса (CourseID), а от кода лектора (LecturerID).

Вот основные преимущества нормализации:

· облегчается сортировка и создание индекса, поскольку таблицы стали более компактными;

· индексы становятся более компактными;

· меньшее число индексов в одной таблице позволяет быстрее выполнять обновления записей;

· в таблицах содержится меньше значений NULL и избыточных данных, что повышает компактность базы данных;

· уменьшается вероятность конфликтов блокировоктаблиц, поскольку блокировать приходится ограниченные наборы данных.

Проект реляционной базы данных - это набор взаимосвязанных отношений, для которых определены все атрибуты, заданы первичные ключи отношений и заданы еще некоторые дополнительные свойства отношений, которые относятся к принципам поддержки целостности. Фактически проект базы данных - это фундамент будущего программного комплекса, который будет использоваться достаточно долго и многими пользователями. Этапы жизненного цикла базы данных (см рис 1) аналогичны, в ос­новном, развитию любой программной системы, однако в них есть определен­ная специфика, касающаяся только баз данных.

тема 3. принципы построения баз данных. жизненный цикл баз данных - student2.ru

Рис. 1. Этапы жизненного цикла БД

Процесс проектирования БД представляет собой последовательность переходов от неформального словесного описания информационной структуры предметной области к формализованному описанию объектов предметной области в терми­нах некоторой модели. Можно выделить следующие этапы про­ектирования:

1. Системный анализи словесное описание информационных объектов пред­метной области.

2. Проектирование инфологической модели предметной области - частично фор­мализованное описание объектов предметной области в терминах некоторой семантической модели, например, в терминах ЕR-модели.

3. Даталогическое или логическое проектирование БД,то есть описание БД в терминах принятой дата логической модели данных.

4. Физическое проектирование БД, то есть выбор эффективного размещения БД на внешних носителях для обеспечения наиболее эффективной работы приложения.

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

 
  тема 3. принципы построения баз данных. жизненный цикл баз данных - student2.ru

Рис. 2. Этапы проектирования БД

Наши рекомендации