Лекция 3
Реляционная модель
-
Что такое реляционная система
Почти все продукты баз данных, созданные за последние 20 лет, основаны на подходе, который называют реляционным (relational), и подавляющее большинство научных исследований в области баз данных проводилось в этом направлении. Еще в конце 60-х годов появились работы, в которых обсуждались возможности применения табличных моделей данных, т.е. возможности использования привычных и естественных способов представления данных. Наиболее значительной из них была статья сотрудника фирмы IBM д-ра Э.Кодда, где, вероятно, впервые был применен термин "реляционная модель данных". Будучи математиком по образованию Э.Кодд предложил использовать для обработки данных аппарат теории множеств (объединение, пересечение, разность, декартово произведение). Он предложил представлять данные как совокупности двумерных таблиц особого вида, известного в математике как отношение – relation (англ.). Это привнесло в область управления БД ранее недостававшие качества: строгие принципы и точность.
Для начала представим грубое приблизительное определение реляционной системы.
Реляционная система – это система, основанная на принципах:
-
данные пользователю представляются в виде таблиц и никак иначе;
-
пользователем используются операторы обработки данных, генерирующие новые таблицы из старых1.
Из данного определения следует важный вывод: результат любой операции над таблицами – это также таблица. Это свойство называется свойством замкнутости. Это значит, что над результатом операции можно проделать новую операцию, т.е. использовать вложенные выражения. Другой вывод заключается в том, что операции применяются к каждой таблице, участвующей в операции, целиком, т.е. ко всем ее строкам. Такая возможность обработки множества – одна из главных отличительных характеристик реляционных систем. Добавим, что таблицы в реляционной системе являются логическими, а не физическими структурами. На физическом уровне система может использовать любой метод хранения – последовательные файлы, индексирование, хеширование, цепочки указателей и т.п., но все эти детали скрыты от пользователя. Реляционная теория ничего не говорит о внутреннем уровне вообще, оставляя проблемы реализации физического хранения за рамками рассмотрения.
На рис. 3.1 показан простой пример реляционной базы данных групп и студентов.
Группа
Номер группы
Название
Год формирования
D1 1-ИЭ
1999
D2 2-ИЭ
1998
D3 3-ИЭ
1997
D4 1-ЭФ
1999
Студент
Номер студента
Фамилия
Номер группы
Дата рождения
57001 Усманова D2
28.02.81
45002 Хализов D2
23.05.81
34356 Астанина D3
29.09.80
46754 Володин
D3
26.12.79
Рис. 3.1. База данных студентов и групп
Анализируя пример, можно заметить замечательное свойство реляционной БД: все информационное (в т.ч. и связи!) содержимое БД представлено одним и только одним возможным способом, а именно: явным заданием значений данных. В частности, нет никаких указателей, связывающих содержимое одной таблицы с содержимым другой2. А в нереляционных системах такая информация представляется неким указателем, который пользователь видит явно.
Кроме того, все значения данных атомарные, т.е. в "ячейке" таблицы всегда находится только одно значение, хотя можно себе представить таблицу вида:
-
Специальность
Группы
071900
1-ИЭ, 2-ИЭ, 3-ИЭ
…
…
Ее особенность в том, что она содержит группу повторения. Такие таблицы, содержащие группы повторения, в реляционных БД недопустимы.