2
Реляционная модель базы данных
Бутенко Е.А.
ВВЕДЕНИЕ
В современном обществе уровень информатизации характеризует данный уровень развития государства. 21 век специалисты называют веком компьютерных технологий. Их революционное воздействие касается государственных структур, экономической и социальной сфер, науки и образования, культуры и образа жизни людей. Многие развитые и развивающиеся страны в полной мере осознали колоссальные преимущества, которые несет с собой развитие и распространение информационно коммуникационных технологий. Не у кого не вызывает сомнения тот факт, что движение к информационному обществу - это путь в будущее человеческой цивилизации.
Реляционная модель базы данных представляется в виде совокупности таблиц, над которыми могут выполняться операции, формулируемые в терминах реляционной алгебры и реляционного исчисления. В реляционной модели операции над объектами базы данных имеют теоретикомножественный характер. Концепции реляционной модели данных связаны с именем известного специалиста в области систем баз данных Е. Кодда. Именно поэтому реляционную модель данных часто называют моделью Кодда.
Основанием баз данных является модель данных. Модель данных представляет собой множество структур данных, ограничений целостности и операций манипулирования данными. С помощью модели данных могут быть представлены объекты предметной области и взаимосвязи между ними.
Действительно, база данных - это некоторый набор данных, необходимых для работы. Однако данные - это абстракция; никто никогда не видел "просто данные"; они не возникают и не существуют сами по себе. Данные суть отражение объектов реального мира.
Было бы неправильно считать, что в базе данных отражаются только физические объекты. БД способна вобрать в себя сведения об абстракциях, процессах, явлениях - то есть всё с чем сталкивается человек в своей деятельности и жизни. В бд можно хранить информацию о заказах на поставку деталей на склад. Атрибутами сущности "заказ" будут название поставляемой детали, количество деталей, название поставщика, срок поставки и так далее.
Объекты реального мира связаны друг с другом множеством сложных зависимостей, которые необходимо учитывать в информационной деятельности. Например, детали на склад поставляются их производителями. Следовательно, в число атрибутов детали необходимо включить атрибут "название фирмы-производителя". Однако этого недостаточно, так как могут понадобиться дополнительные сведения о производителе конкретной детали - его адрес, номер телефона и так далее. Значит, база данных должна содержать не только информацию о деталях и заказах на поставку, но и сведения об их производителях. Более того, база данных должна отражать связи между деталями и производителями (каждая деталь выпускается конкретным производителем) и между заказами и деталями (каждый заказ оформляется на конкретную деталь).
Обратим внимание, что в базе данных нужно хранить только актуальные и значимые связи.
ПОНЯТИЕ «РЕЛЯЦИОННОЙ МОДЕЛИ БД»
Итак, получив представление о том, что хранится в базе данных. Теперь необходимо понять, как атрибуты и сущности, и связи отображаются на структуры самих данных. Это определяется моделью данных.
Традиционно все СУБД классифицируются в зависимости от модели данных, которая лежит в их основе. Принято выделять иерархическую, сетевую и реляционную модели данных. Иногда к ним добавляют модель данных на основе инвертированных списков. Соответственно говорят об иерархических, сетевых, реляционных СУБД или о СУБД на базе инвертированных списков.
По распространенности и популярности реляционные СУБД сегодня - вне конкуренции. Они стали фактическим промышленным стандартом, она была разработана Коддом еще в 1969-70 годах на основе математической теории отношений и опирается на систему понятий, важнейшими из которых являются таблица, отношение, строка, столбец, первичный ключ, внешний ключ.
Реляционной считается такая база данных, в которой все данные представлены для пользователя в виде прямоугольных таблиц значений данных, и все операции над базой данных сводятся к манипуляциям с таблицами. Таблица состоит из строк и столбцов и имеет имя, уникальное внутри базы данных. Таблица отражает тип объекта реального мира (сущность), а каждая ее строка - конкретный объект. Так, таблица Деталь содержит сведения о всех деталях, хранящихся на складе, а ее строки являются наборами значений атрибутов конкретных деталей. Каждый столбец таблицы - это совокупность значений конкретного атрибута объекта. Так, столбец Материал представляет собой множество значений "Сталь", "Олово", "Цинк” и так далее. В столбце Количество содержатся целые неотрицательные числа. Значения в столбце Вес - вещественные числа, равные весу детали в килограммах.
Эти значения не появляются из воздуха. Они выбираются из множества всех возможных значений атрибута объекта, которое называется доменом (domain). Так, значения в столбце материал выбираются из множества имен всех возможных материалов - пластмасс, древесины, металлов и т.д. Следовательно, в столбце Материал принципиально невозможно появление значения, которого нет в соответствующем домене, например, "вода" или "песок".
Каждый столбец имеет имя, которое обычно записывается в верхней части таблицы. Оно должно быть уникальным в таблице, однако различные таблицы могут иметь столбцы с одинаковыми именами. Любая таблица должна иметь по крайней мере один столбец; столбцы расположены в таблице в соответствии с порядком следования их имен при ее создании. В отличие от столбцов, строки не имеют имен; порядок их следования в таблице не определен, а количество логически не ограничено.
Так как строки в таблице не упорядочены, невозможно выбрать строку по ее позиции - среди них не существует "первой", "второй", "последней". Любая таблица имеет один или несколько столбцов, значения в которых однозначно идентифицируют каждую ее строку. Такой столбец (или комбинация столбцов) называется первичным ключом (primary key). В таблице Деталь первичный ключ - это столбец Номер детали. В нашем примере каждая деталь на складе имеет единственный номер, по которому из таблицы Деталь извлекается необходимая информация. Следовательно, в этой таблице первичный ключ - это столбец Номер детали. В этом столбце значения не могут дублироваться - в таблице Деталь не должно быть строк, имеющих одно и то же значение в столбце Номер детали. Если таблица удовлетворяет этому требованию, она называется отношением (relation).
Взаимосвязь таблиц является важнейшим элементом реляционной модели данных. Она поддерживается внешними ключами (foreign key). Рассмотрим пример, в котором база данных хранит информацию о рядовых служащих (таблица Служащий) и руководителях (таблица Руководитель) в некоторой организации. Первичный ключ таблицы Руководитель столбец Номер (например, табельный номер). Столбец Фамилия не может выполнять роль первичного ключа, так как в одной организации могут работать два руководителя с одинаковыми фамилиями. Любой служащий подчинен единственному руководителю, что должно быть отражено в базе данных. Таблица Служащий содержит столбец Номер руководителя, и значения в этом столбце выбираются из столбца Номер таблицы Руководитель. Столбец Номер Руководителя является внешним ключом в таблице Служащий.
Таблицы невозможно хранить и обрабатывать, если в базе данных отсутствуют "данные о данных", например, описатели таблиц, столбцов и так далее. Их называют обычно метаданными. Метаданные также представлены в табличной форме и хранятся в словаре данных (data dictionary).
Помимо таблиц, в базе данных могут храниться и другие объекты, такие как экранные формы, отчеты (reports), представления (views) и даже прикладные программы, работающие с базой данных.
Для пользователей информационной системы недостаточно, чтобы база данных просто отражала объекты реального мира. Важно, чтобы такое отражение было однозначным и непротиворечивым. В этом случае говорят, что база данных удовлетворяет условию целостности (integrity).
Для того, чтобы гарантировать корректность и взаимную непротиворечивость данных, на базу данных накладываются некоторые ограничения, которые называют ограничениями целостности (data integrity
constraints).
ОПЕРАЦИИ НАД РЕЛЯЦИОННЫМИ БД
Множество операций над реляционными данными образуют реляционную алгебру. Каждая операция использует одну или две таблицы.
Основных операций восемь, которые разбиты на две группы.
ТРАДИЦИОННЫЕ ОПЕРАЦИИ
Объединение двух отношений (D1 = А U В) предполагает, что на входе задано два односхемных отношения А и В. Результат объединения есть построенное по той же схеме отношение D, содержащее все кортежи А и все кортежи отношения В.
Пересечение двух отношений (D2=А U В) предполагает на входе два односхемных отношения А и В. На выходе создается отношение по той же схеме, содержащее только те кортежи отношения А, которые есть в отношении В.
Вычитание двух отношений (D3=А-В). Все три отношения строятся по одной схеме. В результирующее отношение D3 включаются только те кортежи из А, которых нет в отношении В.
Декартово произведение (D4=А X В). Ее важное отличие от предшествующих состоит в том, что отношения А и В могут быть построены по разным схемам, а схема отношения С4 включает все атрибуты отношении А и В.
СПЕЦИАЛЬНЫЕ ОПЕРАЦИИ
Операция селекция - выполняется по строкам. На входе операции используется одно отношение. Результат выборки - новое отношение, построенное по той же схеме, содержащее подмножество кортежей исходного отношения, удовлетворяющих условию выборки.
Операция проекция. На входе операции используется одно отношение. Результирующее отношение включает подмножество атрибутов исходного. Каждому кортежу исходного отношения соответствует кортеж в результирующем отношении, что значения одинаковых атрибутов этих двух кортежей совпадают. Но при этом в результирующем отношении кортежидубликаты устраняются, в связи с чем мощность результирующего отношения может быть меньше мощности исходного.
Операция соединение естественное. На входе операции используется два отношения; обозначим их А и В. В каждом из отношений выделен атрибут, по которому будет осуществляться соединение; предположим, это атрибуты А1 и Б2). Оба атрибута должны быть определены на одном и том же домене. Схема результирующего отношения включает все атрибуты А и все атрибуты отношения В. Допускается, чтобы в схеме результирующего отношения вместо двух атрибутов, по которым выполняется соединение, был представлен только один. Операция соединение похожа на декартово произведение. Отличие состоит в том, что декартово произведение предполагает сцепление, каждого кортежа из А с каждым кортежем из В, а в операции соединения кортеж из отношения А сцепляется только с теми кортежами из В, для которых выполнено условие: В1=А1.
Операция деление. На входе операции используется два отношения
А и В. Пусть отношение А, называемое делимым, содержит атрибуты (А1,А2, ...,Аn). Отношение В - делитель - содержит подмножество атрибутов А; положим, (А1,А2, ...,Аk), где (k<n). Результирующее отношение С определено на атрибутах отношения А, которых нет и В, т.е. Аk+1, Аk+2 , ..., Аn. Кортеж включается в результирующее отношение только, если его декартово произведение с отношением В содержится в делимом-отношении А.
Операции реляционной модели данных предоставляют возможность произвольно манипулировать отношениями, позволяя обновлять БД, а также выбирать подмножества хранимых данных и представлять их в нужном виде.
Рассмотренные нами операции позволяют пошагово описать процесс получения результирующего отношения.
4.ФОРМЫ РЕЛЯЦИОННОЙ МОДЕЛИ
Одна из глобальных проблем проектирования схемы баз данных заключается в выделении типов записей (отношений), определении состава их атрибутов. Группировка атрибутов должна быть рациональной, то есть. минимизирующей дублирование данных и упрощающей процедуры их обработки и обновления.
Изначально эти вопросы решались неосознанно. Однако интуиция может подвести и опытного специалиста, поэтому Коддом был разработан в реляционной модели данных аппарат, называемый нормализацией отношений. Хоть и, идеи нормализации сформулированы в терминологии реляционной модели данных, они в равной степени применимы и для других моделей данных.
Коддом выделено три нормальных формы отношений. Самая совершенная из них - третья. Предложен механизм, позволяющий любое отношение преобразовать к третьей нормальной форме. В процессе таких преобразований могут выделяться новые отношения.
Вначале введем понятие простого и сложного атрибута. Простым назовем атрибут,, если значения его неделимы. А сложным атрибутом может быть значение, представляющее собой соединение нескольких значений одного или разных доменов. Аналогами сложного атрибута может быть вектор или агрегат данных, или повторяющийся агрегат.
ПЕРВАЯ НОРМАЛЬНАЯ ФОРМА
Отношение называется нормализованным или приведенным к первой нормальной форме если все его атрибуты простые.
Ненормализованное отношение легко сделать нормализованным. Такое преобразование может привести к увеличению мощности отношения и изменению ключа.
Функциональная зависимость. Пусть Х и Y - два атрибута некоторого отношения, Говорят, что Y функционально зависит от X, если в любой момент времени каждому значению Х соответствует не более чем одно значение атрибута Y. Функциональную зависимость можно обозначить так: Х>Y. реляционный база таблица атрибут