Определение модели данных предусматривает указание множества допустимых информационных конструкций, множества допустимых операций и множества ограничений для хранимых значений данных.
При разработке баз данных используются реляционная, сетевая и иерархическая модели данных. При этом реляционная модель данных является наиболее распространенной.
Реляционная модель данных характеризуется следующими компонентами:
- информационная конструкция – отношение с двухуровневой структурой;
- допустимые операции – проекция, выборка, соединение и некоторые другие;
- ограничения – функциональные зависимости между атрибутами отношения.
Реляционная база данных представляет собой множество отношений, а ее схема содержит следующие компоненты:
где – множество имен атрибутов,
– множество имен отношений,
– вхождение атрибутов в домены – области определения,
– вхождение атрибутов в отношения (описание структуры отношений),
– множество ограничений в базе данных (в том числе функциональных зависимостей).
Данные в реляционной модели представляются в виде таблицы, при этом:
- название таблицы и перечень названий граф соответствует схеме отношения;
- каждое значение отношения соответствует строке таблицы;
- все строки таблицы различны;
- порядок строк и столбцов произвольный.
Описание процессов обработки отношений может быть выполнено двумя способами:
- указание перечня операций, выполнение которых приводит к требуемому результату (процедурный подход);
- описание свойств, которым должно удовлетворять результирующее отношение (декларативный подход).
Приводимые далее операции над отношениями ориентированы на процедурное описание алгоритмов обработки данных.
|
Система отношений и операций над ними образуют реляционную алгебру. Для реляционной модели данных определены следующие операции.
1. Проекция – операция, которая переносит в результирующее отношение те столбцы исходного отношения, которые указаны в условии операции. Алгебраическая запись проекции имеет вид:
,
где – исходное отношение;
– результирующее отношение;
– список атрибутов в структуре отношения (условие проекции).
2. Выборка – операция, которая переносит в результирующее отношение те строки исходного отношения, которые удовлетворяют условию выборки. Алгебраическая запись выборки имеет вид:
,
где – исходное отношение;
– результирующее отношение;
– условие выборки.
Условие выборки может иметь вид:
ИМЯ_АТРИБУТА <знак сравнения> ЗНАЧЕНИЕ (например, ЦЕНА > 30);
ИМЯ_АТРИБУТА1 <знак сравнения> ИМЯ_АТРИБУТА2 (например, ФАКТ> ПЛАН).
Допустимые знаки сравнения: "=", "<>", ">", "<", "≤", "≥".
3. Объединение содержит строки, присутствующие либо в отношении , либо в .
4. Пересечение содержит строки, присутствующие в отношениях и одновременно.
5. Вычитание содержит те строки из , которые отсутствуют в .
6. Соединение – операция, при которой каждая строка первого исходного отношения сопоставляется по очереди со всеми строками второго исходного отношения, и если для этой пары строк соблюдается условие соединения, то они сцепляются и образуют очередную строку в результирующем отношении.
Алгебраическая запись имеет вид:
|
,
где – исходные отношения,
– результирующее отношение,
– условие соединения.
Условие соединения имеет вид:
ИМЯ_АТРИБУТА1 <знак сравнения> ИМЯ_АТРИБУТА2, где имена атрибутов находятся в разных отношениях.
7. Натуральное соединение - это соединение, для которого:
знаком сравнения в условии соединения является "=",
ИМЯ_АТРИБУТА1 и ИМЯ_АТРИБУТА2 должны совпадать и содержать пересечение списков атрибутов исходных отношений.
Обозначение натурального соединения не содержит условия соединения и имеет вид:
.
При этом, в отличие от простого соединения, в результирующем отношении, полученном с помощью натурального соединения, графы таблицы не будут повторяться. Количество строк в результирующем отношении равно произведению от количества строк, удовлетворяющих условию соединения в двух исходных отношениях.
Натуральное соединение определено и в тех случаях, когда соединяемые отношения совпадают по структуре или не содержат общих атрибутов. Если структура отношений и одинакова, то натуральное соединение фактически выполняет пересечение отношений: . Если структура отношений и такова, что они не содержат общих атрибутов, то считается, что условие соединения выполнено для любой пары сопоставляемых строк и натуральное соединение сцепляет каждую строку из отношения с каждой строкой из отношения .
8. Операция взятия образа. В отношении образом значения атрибута является множество значений атрибута , и каждый элемент этого множества образует вместе с некоторую строку (или часть строки) отношения :
|
где – знак операции "образ",
– значение, образ которого вычисляется,
– имя атрибута для значения .
9. Деление. Результатом операции деления является отношение , содержащее пересечение образов всех строк отношения-делителя , вычисленных на основе отношения-делимого :
Необходимо отметить, что любое результирующее отношение, полученное с помощью перечисленных выше операций, не содержит одинаковых строк.
Ниже рассмотрены примеры выполнения перечисленных выше операций.
Пусть даны два отношения и :
Завод | Продукция | План | Факт |
Луч | Ч-15 | ||
Луч | Ч-17 | ||
Чайка | Ч-15 | ||
Чайка | Ч-20 |
Продукция | Цена | Комплектующие |
Ч-15 | БАТ | |
Ч-15 | РК | |
Ч-20 | БАТ | |
Ч-20 | РК | |
Ч-17 | РК |
На основе отношения может быть получена проекция:
:
Завод | Продукция | Факт |
Луч | Ч-15 | |
Луч | Ч-17 | |
Чайка | Ч-15 | |
Чайка | Ч-20 |
Так как порядок столбцов в результирующем отношении может быть произвольным, то возможно выполнение проекции вида: .
На основе отношения может быть получена проекция, представляющая собой справочник цен на продукцию:
:
Продукция | Цена |
Ч-15 | |
Ч-20 | |
Ч-17 |
Как видно из примера, результат проекции в реляционной алгебре не содержит одинаковые строки.
Отношение с заданной структурой может быть получено из различных отношений исходной базы данных. Однако результаты проекций могут не совпадать между собой.
Пусть, например, требуется сформировать список отделов некоторого учреждения, используя базу данных, в которой имеются отношения:
Служащий(Фамилия, Отдел,…)
и
Технолог(Фамилия, Отдел,…).
Проекции Служащий[Отдел] и Технолог[Отдел], вообще говоря, не будут совпадать между собой, так как в некоторых отделах может не быть технолога. Поэтому для поучения корректного списка всех отделов проекция должна выполняться с использованием отношения Служащий[Отдел], которое содержит в себе больший объем информации.
На основе отношения с помощью операции выборки могут быть получены следующие отношения:
и
:
Завод | Продукция | План | Факт |
Луч | Ч-15 | ||
Чайка | Ч-15 |
Завод | Продукция | План | Факт |
Луч | Ч-15 | ||
Луч | Ч-17 | ||
Чайка | Ч-15 |
Пусть дано отношение :
Продукция | Цена |
Ч-25 | |
Ч-26 |
Тогда при объединении отношений и можно получить расширенный справочник цен на продукцию:
:
Продукция | Цена |
Ч-15 | |
Ч-20 | |
Ч-17 | |
Ч-25 | |
Ч-26 |
Обычное соединение отношений и в виде:
дает некорректные результаты соединения, так как столбец ПРОДУКЦИЯ повторяется в отношении дважды:
Завод | Продукция | План | Факт | Продукция | Цена |
Луч | Ч-15 | Ч-15 | |||
Луч | Ч-17 | Ч-17 | |||
Чайка | Ч-15 | Ч-15 | |||
Чайка | Ч-20 | Ч-20 |
Натуральное соединение по условию равенства атрибутов «Продукция» в отношениях и дает корректные результаты:
Завод | Продукция | План | Факт | Цена |
Луч | Ч-15 | |||
Луч | Ч-17 | |||
Чайка | Ч-15 | |||
Чайка | Ч-20 |
Пусть отношение содержит информацию о студентах, владеющих теми или иными языками программирования:
Фамилия | Язык программирования |
Горюшкин | Си |
Горюшкин | Java |
Горюшкин | Паскаль |
Мальцев | Си |
Мальцев | Паскаль |
Пыленок | Си |
Пыленок | Java |
Селиверсткин | VBA |
Селиверсткин | Паскаль |
Для получения списка студентов, знающих одновременно языки программирования Си и Java, необходимо использовать операцию деления отношений, заключающуюся в нахождении образов для языков программирования Си и Java и в последующем пересечении этих образов:
;
;
.
Таким образом, одновременно знают языки программирования Си и Java только два студента: Горюшкин и Пыленок.
Следует отметить, что операция выборки для решения данной задачи неприменима, поскольку выборка выполняется только по какому-либо одному атрибуту при построчном анализе отношения.