Теоретические азы БД (введение в SQL). Реляционная алгебра, операции реляционной алгебры

02.08.2019

Начинать изучать SQL лучше всего с азов реляционных баз данных. Я дам пояснение что такое реляционная база данных, что такое отношение и какие операции над ними можно производить.

Поехали …

Что такое SQL?

SQL (Structured Query Language) – структурированный язык запросов, универсальный компьютерный язык, применяемый для создания, модификации и управление данными в реляционных базах данных

Что такое реляционная база данных?

Это совокупность взаимосвязанных данных хранящихся в виде отношений

Что такое отношения?

Отношение это некое множество картежей

Что такое кортеж?

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

Продемонстрирую кортеж из двух элементов с помощью графа:

Вершины графа это элементы их некоторого множества, в данном случае, это элемент а1 из множества А и элемент b1 из множества B . Ребро между вершинами обозначает связь между элементами или как говорят элемент а1 находится в отношение с b1 .

Продемонстрирую этот же кортеж с помощью таблицы:

Номер 1 у а1 и b1 , был выбран произвольно.

Итак, мы добрались до элементарного кирпичика, т.е. до кортежа , начнем разматывать нашу логику обратно, что бы понять, что такое реляционная база данных и SQL .

Как я сказал, отношение это множество кортежей , причем ограниченное (если отойти от теории). Представить отношения можно в виде матрицы, графа, таблицы.

Продемонстрирую, как представить отношение в виде графа:

На графике видно, что есть несколько кортежей, причем какой кортеж первый, а какой второй и третий не важно , это просто множество кортежей. В множестве нет такого понятия «первый», «второй» и «третий», это всё сразу и очередность не важна.

Продемонстрирую, как представить отношение в виде таблицы:

Последовательность строк или кортежей в таблице не важна , из графа я их взял в произвольном порядке.

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

Как было сказано в самом начале, что реляционная база данных это совокупность взаимосвязанных данных хранящихся в виде отношений . Если представлять отношения в виде таблиц, то реляционная БД это некий набор взаимосвязанных таблиц . Выходит SQL это язык создания, модификации и управление таблицами в реляционной БД .

Итак, с логической цепочкой мы разобрались: SQL, реляционная БД, отношения, кортеж..Теперь мы затронем язык SQL, т.е. тему манипулирования с отношениями, важно разобраться какие операции мы можем проводить над отношениями .

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

1. Селекция (другие имена операции — выборка, ограничение)

Операция «селекция» или «выборка» выполняется над одним отношением , смысл его заключается в том, что по заданному условию осуществляется выборка подмножества кортежей . Результат операции – отношение отличающиеся от исходного меньшим числом кортежей . Пример:

Пусть есть отношение, назовем его «исходная таблица №1»:

Результат «выборки» из исходной таблицу №1, при условии что А=а3

На языке SQL:

синтаксис — SELECT * FROM имя_таблицы WHERE имя_столбца=значение

SELECT * FROM исходная_таблица WHERE А=a3

2. Проекция

Операция «проекция» выполняется над одним отношением , в результате неё формируется новое отношение с указанными столбцами таблицы .

Например, есть отношение, назовем ее «исходная таблица №2»:

Произведем над данным отношением операцию «проекция» по атрибутам А и С , результат:

В результате мы получили два одинаковых картежа, в отношение такого быть не может, поэтому сократим их (в СУБД сокращения происходят автоматически):

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

На языке SQL:

синтаксис — SELECT список_столбцов FROM имя_таблицы

реализация для данного случая — SELECT А,С FROM исходная_таблица_№2

3. Естественное соединение

Операция «естественное соединение » выполняется над двумя логическими связанными отношениями , в результате неё формируется новое отношение со столбцами первого и второго отношения и с кортежами, которые получаются в результате соединения каждого кортежа первого и второго отношения . На примере должно быть более понятно, пусть есть два отношения, назовем их исходная таблица №3.1 и исходная таблица №3.2:

Исходная таблица №3_1

Исходная таблица №3_2

Проведем операцию «соединения» первого и второго отношения, результат:

Интересно заметить, что мы получили исходное отношение из раздела «2. Проекция», последовательность столбцов в отношение значения не имеет.

На языке SQL:

реализация для данного случая — SELECT исходная_таблица_№3_1.*, исходная таблица №3_2.В FROM исходная_таблица_№3_1, исходная таблица №3_2 WHERE исходная таблица №3_1.A= исходная таблица №3_2.A

4. Объединение

Операция «объединение» выполняется над двумя отношениями имеющих одинаковый набор столбцов и тип данных в этих столбцах , результат операции новое отношение, которое включает в себя все кортежи «первого» и «второго» отношения (повторяющиеся сокращаются).

Исходная таблица №4_1

Исходная таблица №4_2

Произведем операцию «объединения» отношения №4.1 и отношения №4.2 , результат:

На языке SQL:

синтаксис — SELECT список_столбцов_таблицы1 FROM таблица1 UNION SELECT список_столбцов_таблицы2 FROM таблица2

реализация для данного случая — SELECT А,В FROM исходная_таблица_№4_1 UNION SELECT А,В FROM исходная_таблица_№4_2

5. Пересечение

Операция «пересечение» выполняется , результат операции новое отношение, которое включает в себя одинаковые кортежи «первого» и «второго» отношения .

Пример, пусть есть два отношения:

Исходная таблица №5_1

Исходная таблица №5_2

Произведем операцию «пересечения» с данными отношениями, результат:

Т.е. в результирующее отношение, попали повторяющиеся кортежи из «первого» и «второго» отношения.

На языке SQL:

синтаксис — SELECT одна_из_таблиц.столбец1, одна_из_таблиц.столбец2, … FROM таблица1,таблица2 WHERE таблица1.столбец1=таблица2.столбец1 AND таблица1.столбец2= таблица2.столбец2 AND …

реализация для данного случая –

SELECT исходная_таблица_№5_1.А, исходная_таблица_№5_1.В FROM исходная_таблица_№5_1, исходная_таблица_№5_2 WHERE исходная_таблица_№5_1.А = исходная_таблица_№5_2.А AND исходная_таблица_№5_1.В = исходная_таблица_№5_2.В

6. Вычитание (разность)

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

Пример, пусть есть два отношения:

Исходная таблица №6_1

Исходная таблица №6_2

Произведем операцию «разность» , т.е. от исходной таблицы №6_1 отнимем исходную таблицу №6_2, результат:

Т.е. результирующее отношение, это «первое» отношение без повторяющихся кортежей «второго» отношения.

На языке SQL:

реализация для данного случая – SELECT исходная_таблица_№6_1.А, исходная_таблица_№6_1.В FROM исходная_таблица_№6_1 WHERE NOT EXISTS (SELECT исходная_таблица_№6_2.А, исходная_таблица_№6_2.В FROM исходная_таблица_№6_2
WHERE исходная_таблица_№6_2.А= исходная_таблица_№6_1.А AND исходная_таблица_№6_2.В= исходная_таблица_№6_1.В)

7. Декартово произведение

Декартово произведение выполняется над двумя произвольными отношениями, результат операции новое отношение с количество столбцов равному сумме количества столбцов «первого» и «второго» отношения, а количество строк равному произведение количеству строк «первого» и «второго» отношения . Кортежи результирующего отношение, если говорить по-простому, получаются путем комбинации каждого кортежа «первого» отношения с кортежами «второго» отношения.

Пример, пусть есть два произвольных отношения:

Исходная таблица №7_1

Исходная таблица №7_2

Произведем «декартово произведение» данных двух отношений, результат:

На языке SQL:

реализация для данного случая – SELECT исходная_таблица_№7_1.А, исходная_таблица_№7_1.В, исходная_таблица_№7_2.А, исходная_таблица_№7_2.В FROM исходная_таблица_№7_1, исходная_таблица_№7_2

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

Что такое ключ?

Ключ – это один или не сколько столбцов таблицы , которые однозначно определяют запись (строку) . Пример, пусть есть отношение представленное в виде таблицы:

Ключом данного отношения может быть столбец А . Т.к. значения только данного столбца в отношение , например: а3 определяет запись «а3 b1 d3» , a2 определят запись «a2 b2 d3» , a1 определяет запись «a1 b2 d1» . Другие столбцы данную функцию нести не могут.

Если ключ состоит из одного столбца , то его называют простым , если из нескольких его называют составным . В данной таблице, помимо простого ключа, есть еще один – составной, состоящий из столбцов B и D . Значения этих столбцов однозначной определят запись (строки), пример: b1 и d3 однозначно определяет запись «a3 b1 d3» , b2 и d3 однозначной определяет запись «a2 b2 d3» , b2 и d1 однозначно определяет запись «a1 b2 d1» .

На практике обычно выбирают один ключ , причем самый простой , в данном случае это столбец А . Такой ключ также называют «первичный ключ ».

Вам будет интересно:

Реляционная алгебра - это язык операций, выполняемых над отношениями - таблицами реляционной базы данных. Операции реляционной алгебры позволяют на основе одного или нескольких отношений создавать другое отношение без изменения самих исходных отношений. Полученное другое отношение обычно не записывается в базу данных, а существует в результате выполнения SQL-запроса - массиве, создаваемом функциями для работы с базами данных в языках программирования. Для каждой операции реляционной алгебры будет дана её реализация в виде запросов на языке SQL.

Рассмотрим операции реляционной алгебры. Чтобы Вам не отвлекаться на содержание таблиц не Ваших баз данных, таких как "Продукты", "Водители", "сливы", "груши", "чай", "кофе", Владимиры, Сергеи и т.п. будем выполнять операции над отношениями (таблицами) с абстрактными данными, такими как R1, R2 (названия таблиц - отношений) и т.д. и А1, А2, А3 (названия атрибутов - столбцов) и h15, w11 и т.п. (содержание записей таблиц базы данных).

Приоритеты выполнения операций реляционной алгебры (в порядке убывания пунктов списка, а в одном пункте - операции с равными приоритетами):

  • селекция, проекция
  • декартово произведение, соединение, пересечение, деление
  • объединение, разность.

Операция выборки

Операция выборки работает с одним отношением и определяет результирующее отношение R , которое содержит только те кортежи (или строки, или записи), отношения , которые удовлетворяют заданному условию (предикату P ).

Таким образом, операция выборки - унарная операция - и записывается следующим образом:

где P - предикат (логическое условие).

Запрос SQL

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

R3
A1 A2 A3 A4
3 hh yl ms
4 pp a1 sr
1 rr yl ms

Просматриваем столбец А3 и устанавливаем, что предикату A3>"d0" удовлетворяют записи в первой и третьей строках исходного отношения (так как номер буквы y в алфавите больше номера буквы d). В результате получаем следующее новое отношение, в котором две строки:

R
A1 A2 A3 A4
3 hh yl ms
1 rr yl ms

Комбинировать всевозможные логические условия для выборок Вам поможет материал "Булева алгебра (алгебра логики)" .

Запрос SQL

SELECT A1, A2, A3 from R1 UNION SELECT A1, A2, A3 from R2

Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Теперь даны два отношения, так как операция объединения - бинарная операция:

R1 R2
A1 A2 A3 A1 A2 A3
Z7 aa w11 X8 pp k21
B7 hh h15 Q2 ee h15
X8 pp w11 X8 pp w11

Объединяем строки первого и второго отношения и видим, что третья строка, которая является третьей и в первом, и во втором отношении - идентичны, поэтому её включаем в новое отношение только один раз. Получаем следующее отношение:

R
A1 A2 A3
Z7 aa w11
B7 hh h15
X8 pp w11
X8 pp k21
Q2 ee h15

Важно следующее: операция объединения может быть выполнена только тогда, когда два отношения обладают одинаковым числом и названиями атрибутов (столбцов), или, говоря формально, совместимы по объединению.

Операция пересечения

Результатом пересечения двух множеств (отношений) А и В () будет такое множество (отношение) С, которое включает в себя те и только те элементы, которые есть и во множестве А, и во множестве В. Операция пересечения реляционной алгебры идентична операции .

Запрос SQL

SELECT A1, A2, A3 from R1 INTERSECT SELECT A1, A2, A3 from R2

В некоторых диалектах SQL отсутствует ключевое слово INTERSECT. Его заменой, например, в MySQL и других, является INNER JOIN. О том, как работает оператор SQL JOIN вообще и его разновидности INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN и FULL OUTER JOIN - на уроке SQL JOIN - соединение таблиц базы данных .

Запрос MySQL

Теперь посмотрим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:

R1 R2
A1 A2 A3 A1 A2 A3
Z7 aa w11 X8 pp k21
B7 hh h15 Q2 ee h15
X8 pp w11 X8 pp w11

Просматриваем все записи в двух отношениях, и обнаруживаем, что и в первом, и во втором отношении есть одна строка - та, которая является третьей и в первом, и во втором отношении. Получаем новое отношение:

R
A1 A2 A3
X8 pp w11

Операция разности

Разность двух отношений R1 и R2 () состоит из кортежей (или записей, или строк), которые имеются в отношении R1, но отсутствуют в отношении R2. Отношения R1 и R2 должны быть совместимы по объединению. Операция разности реляционной алгебры идентична операции .

Запрос SQL

SELECT A1, A2, A3 from R2 EXCEPT
SELECT A1, A2, A3 from R1

Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Вновь даны два отношения R1 и R2:

R1 R2
A1 A2 A3 A1 A2 A3
Z7 aa w11 X8 pp k21
B7 hh h15 Q2 ee h15
X8 pp w11 X8 pp w11

Из отношения R2 исключаем строку, которая есть также в отношении R2 - третью - и получаем новое отношение:

R
A1 A2 A3
X8 pp w11
Q2 ee h15

Операция декартова произведения

Операция декартова произведения () определяет новое отношение R, которое является результатом конкатенации каждого кортежа отношения R1 с каждым кортежем отношения R2.

Запрос SQL

SELECT * from R3, R4

Установим, что получится в результате выполнения этой операции реляционной алгебры и соответствующего ей запроса SQL. Даны два отношения R3 и R4:

R3 R4
A1 A2 A3 A4 A5 A6
3 hh yl ms 3 hh
4 pp a1 sr 4 pp
1 rr yl ms

В новом отношении должны присутствовать все атрибуты (столбцы) двух отношений. Сначала первая строка отношения R3 сцепляется с каждой из двух строк отношения R4, затем вторая строка отношения R3, затем третья. В результате должно получиться 3 Х 2 = 6 кортежей (строк). Получаем такое новое отношение:

R
A1 A2 A3 A4 A5 A6
3 hh yl ms 3 hh
3 hh yl ms 4 pp
4 pp a1 sr 3 hh
4 pp a1 sr 4 pp
1 rr yl ms 3 hh
1 rr yl ms 4 pp
Добавить - внести запись в БД и, в зависимости от режима включения, либо включить ее в групповое отношение, где она объявлена подчиненной, либо не включать ни в какое групповое отношение.
Включить в групповое отношение - связать существующую подчиненную запись с записью-владельцем.
Переключить - связать существующую подчиненную запись с другой записью-владельцем в том же групповом отношении.
Обновить - изменить значение элементов предварительно извлеченной записи.
Извлечь - извлечь записи последовательно по значению ключа, а также используя групповые отношения - от владельца можно перейти к записям - членам, а от подчиненной записи к владельцу набора.
Удалить - убрать из БД запись. Если эта запись является владельцем группового отношения, то анализируется класс членства подчиненных записей. Обязательные члены должны быть предварительно исключены из группового отношения, фиксированные удалены вместе с владельцем, необязательные останутся в БД.
Исключить из группового отношения - разорвать связь между записью-владельцем и записью-членом.

Реляционная модель базы данных

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

Второй элемент модели - реляционно-полный язык. Полнота языка в приложении к реляционной модели означает, что он должен выполнять любую операцию реляционной алгебры . Более того, язык должен описывать любой запрос в виде операций с таблицами, а не с их строками. Одним из таких языков является SQL .

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

Объектно-ориентированная модель.

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

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

Объектно-реляционные СУБД

Разница между объектно-реляционными и объектными СУБД : первые являют собой надстройку над реляционной схемой, вторые же изначально объектно-ориентированы. Главная особенность и отличие объектно-реляционных (как и объектных) СУБД от реляционных заключается в том, что ОРСУБД интегрированы с Объектно-Ориентированным (OO) языком программирования, внутренним или внешним как C++, Java .

Объектно-реляционными СУБД являются, например, широко известные Oracle Database , Microsoft SQL Server , PostgreSQL, Microsoft Access.

Реляционный подход к построению модели предметной области.

· предметная область моделируется совокупностью отдельных информационных объектов (сущностей), каждый из которых описывается своей двумерной таблицей;

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

· каждый элемент таблицы - один элемент данных;

· все столбцы в таблице однородные, т.е. все элементы в столбце имеют одинаковый тип (числовой, символьный и т.д.) и длину;

· каждый столбец описывает один атрибут сущности;

· каждый столбец имеет уникальное имя;

· строка содержит значения атрибутов для одного экземпляра сущности;

· одинаковые строки в таблице отсутствуют (наличие первичного ключа);

· порядок следования строк и столбцов может быть произвольным.

Нормализация отношений - формальный аппарат ограничений на формирование отношений (таблиц), который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в базе данных, уменьшает трудозатраты на ведение (ввод, корректировку) базы данных.

Первая нормальная форма

Отношение (таблица) называется нормализованным или приведенным к первой нормальной форме , если все его атрибуты простые (далее неделимы).

Преобразование отношения к первой нормальной форме может привести к увеличению количества реквизитов (полей) отношения и изменению ключа.

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

· таблица должна содержать данные об одном типе объектов;

· каждая таблица должна содержать одно поле или несколько полей, образующих уникальный идентификатор (или первичный ключ) для каждой строки;

· все неключевые поля должны определяться полным уникальным идентификатором данной таблицы.

Третья нормальная форма

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

Типы связей. Свойства отношений

· Отношение "один-к-одному" (1:1) означает, что каждая запись в одной таблице соответствует не более чем одной записи в другой таблице.

· Отношение "один-ко-многим" (1:М) означает, что каждой записи в одной таблице соответствует 0 или 1 или несколько записей в другой таблице.

· Отношение "многие-к-одному" (М:1) аналогично рассмотренному ранее типу "один-ко-многим". Тип отношения между объектами зависит от точки зрения.

· Отношение "многие-ко-многим" (М:М). возникает между двумя таблицами тогда, когда каждой записи в одной таблице соответствует 0 или более записей в другой таблице и наоборот.

Простые и составные ключи

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

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

Такой первичный ключ называют составным ключом

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

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

Связь "многие-ко-многим " реализуется через дополнительную таблицу, с помощью которой эта связь будет сведена к двум связям типа "один-ко-многим ".

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

Так что если вы собираетесь начать свое обучение в этой области или вам просто стало интересно, прошу под кат.

Реляционная база данных

Для начала введем понятие реляцинной базы данных, в которой будем выполнять все действия.

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

Таблица PRODUCTS

ID NAME COMPANY PRICE
123 Печеньки ООО ”Темная сторона” 190
156 Чай ООО ”Темная сторона” 60
235 Ананасы ОАО ”Фрукты” 100
623 Томаты ООО ”Овощи” 130

Таблица состоит из 4х строк, строка в таблице является кортежем в реляционной теории. Множество упорядоченных кортежей называется отношением.
Перед тем как дать определение отношения, введем еще один термин - домен. Домены применительно к таблице это столбцы.

Для ясности, теперь введем строгое определение отношения.

Пусть даны N множеств D1,D2, …. Dn (домены), отношением R над этими множествами называется множество упорядоченных N-кортежей вида , где d1 принадлежит D1 и тд. Множества D1,D2,..Dn называются доменами отношения R.
Каждый элемент кортежа представляет собой значение одного из атрибутов, соответствующего одному из доменов.

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

Таблица DRIVERS

Видно, что в организации может быть несколько водителей, и чтобы однозначно идентифицировать водителя необходимо и значение из столбца “Название организации” и из “Имя водителя”. Такой ключ называется составным.

В реляционной БД таблицы взаимосвязаны и соотносятся друг с другом как главные и подчиненные. Связь главной и подчиненнной таблицы осуществляется через первичный ключ (primary key) главной таблицы и внешний ключ (foreign key) подчиненной таблицы.
Внешний ключ это атрибут или набор атрибутов, который в главной таблице является первичным ключем.

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

Операции реляционной алгебры

Основные восемь операций реляционной алгебры были предложены Э.Коддом .
  • Объединение
  • Пересечение
  • Вычитание
  • Декартово произведение
  • Выборка
  • Проекция
  • Соединение
  • Деление
Первая половина операций аналогична таким же операциям над множествами. Часть операций можно выразить через другие операции. Рассмотрим большую часть операций с примерами.

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

Таблица SELLERS

ID SELLER
123 OOO “Дарт”
156 ОАО ”Ведро”
235 ЗАО “Овоще База”
623 ОАО ”Фирма”

Условимся, что в этой таблице ID это внешний ключ, связанный с первичным ключом таблицы PRODUCTS.

Для начала рассмотрим самую простую операцию - имя отношения. Её результатом будет такое же отношение, то есть выполнив операцию PRODUCTS, мы получим копию отношения PRODUCTS.

Проекция
Проекция является операцией, при которой из отношения выделяются атрибуты только из указанных доменов, то есть из таблицы выбираются только нужные столбцы, при этом, если получится несколько одинаковых кортежей, то в результирующем отношении остается только по одному экземпляру подобного кортежа.
Для примера сделаем проекцию на таблице PRODUCTS выбрав из нее ID и PRICE.

Синтаксис операции:
π (ID, PRICE) PRODUCTS

В условии выборки мы можем использовать любое логическое выражение. Сделаем еще одну выборку с ценой больше 90 и ID товара меньше 300:

σ (PRICE>90 ^ ID<300) PRODUCTS

Умножение
Умножение или декартово произведение является операцией, производимой над двумя отношениями, в результате которой мы получаем отношение со всеми доменами из двух начальных отношений. Кортежи в этих доменах будут представлять из себя все возможные сочетания кортежей из начальных отношений. На примере будет понятнее.

Получим декартово произведения таблиц PRODUCTS и SELLERS.
Синтаксис операции:

PRODUCTS × SELLERS
Можно заметить, что у двух этих таблиц есть одинаковый домен ID. В подобной ситуации домены с одинаковыми названиями получают префикс в виде названия соответствующего отношения, как показано ниже.
Для краткости перемножим не полные отношения, а выборки с условием ID<235

(цветом выделены одни и те же кортежи)

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печеньки ООО ”Темная сторона” 190 123 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 156 ОАО ”Ведро”
123 Печеньки ООО ”Темная сторона” 190 156 ОАО ”Ведро”
156 Чай ООО ”Темная сторона” 60 123 OOO “Дарт”

Для примера использования этой операции представим себе необходимость выбрать продавцов с ценами меньше 90. Без произведения необходимо было бы сначала получить ID продуктов из первой таблицы, потом по этим ID из второй таблицы получить нужные имена SELLER, а с использованием произведения будет такой запрос:

π (SELLER) σ (RODUCTS.ID=SELLERS.ID ^ PRICE<90) PRODUCTS × SELLERS

В результате этой операции получим отношение:

SELLER
ОАО ”Ведро”
Соединение и естественное соединение
Операция соединения обратна операции проекции и создает новое отношение из двух уже существующих. Новое отношение получается конкатенацией кортежей первого и второго отношений, при этом конкатенации подвергаются отношения, в которых совпадают значения заданных атрибутов. В частности, если соединить отношения PRODUCTS и SELLERS, этими атрибутами будут атрибуты доменов ID.

Также для понятности можно представить соеднинение как результат двух операций. Сначала берется произведение исходных таблиц, а потом из полученного отношения мы делаем выборку с условием равенства атрибутов из одинаковых доменов. В данном случае условием явлется равенство PRODUCTS.ID и SELLERS.ID.

Попробуем соединить отношения PRODUCTS и SELLERS и получим отношение.

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печеньки ООО ”Темная сторона” 190 123 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 156 ОАО ”Ведро”
235 Ананасы ОАО ”Фрукты” 100 235 ЗАО “Овоще База”
623 Томаты ООО ”Овощи” 130 623 ОАО ”Фирма”

Натуральное соединение получает схожее отношение, но в случае, если у нас корректно настроена схема в базе (в данном случае первичный ключ таблицы PRODUCTS ID связан с внешним ключем таблицы SELLERS ID), то в результирующем отношении остается один домен ID.

Синтаксис операции:
PRODUCTS ⋈ SELLERS;

Получится такое отношение:

PRODUCTS.ID NAME COMPANY PRICE SELLER
123 Печеньки ООО ”Темная сторона” 190 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 ОАО ”Ведро”
235 Ананасы ОАО ”Фрукты” 100 ЗАО “Овоще База”
623 Томаты ООО ”Овощи” 130 ОАО ”Фирма”
Пересечение и вычитание.
Результатом операции пересечения будет отношение, состоящее из кортежей, полностью входящих в состав обоих отношений.
Результатом вычитания будет отношение, состоящее из кортежей, которые являются кортежами первого отношения и не являются кортежами второго отношения.
Данные операции аналогичны таким же операциям над множествам, так что, я думаю, нет необходимости подробно их расписывать.
Источники информации
  • Основы использования и проектирования баз данных - В. М. Илюшечкин
  • курс лекций Introduction to Databases - Jennifer Widom, Stanford University

Буду благодарен за аргументированные замечания

Каждая операции включает выделение данных (селекцию) и те действия, которые будут выполняться над выделенными данными. Основными операциями в реляционной базе являются операции обновления базы данных и операции обработки отношений.

К операциям обновления базы данных относятся те операции, которые выполняют вставку новых кортежей, удаление ненужных, корректировку значений атрибутов существующих кортежей, а именно: это операции Включить , Удалить, Обновить.

Операция Включить требует задания имени отношения и предварительного формирования значений атрибутов нового кортежа. Обязательно должен быть задан ключ кортежа.

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

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

Что касается операций обработки, то они позаимствованы из реляционной алгебры. По подходу Э. Кодда реляционная алгебра включает восемь операций, пять из которых являются базовыми: Выборка , Проекция, Умножение, Объединение, Вычитание.

Выборка - выбрать из отношения только те кортежи, которые удовлетворяют заданному условию.

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

При Умножении (декартовом произведении) двух отношений получается новое отношение, кортежи которого являются сцеплением кортежей первого и второго отношений.

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

При Вычитании выдаются лишь те кортежи первого отношения, которые остались от вычитания второго отношения, то есть из первого отношения выбрасываются все кортежи второго.

Остальные три операции являются производными, они могут быть получены из основных операций, их называют дополнительными: Соединение, Пересечение , Деление.

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

Пересечение двух отношений является отношение, включающее все кортежи, входящие в оба отношения.

Операция Деления предполагает, что имеется два отношения: одно – бинарное (содержащее два атрибута), другое – унарное (содержащее один атрибут). В результате получается отношение, состоящее из кортежей, включающих значения первого атрибута кортежей первого отношения, но только таких, для которых множество значений второго атрибута первого отношения совпадает с множеством значений атрибутов второго отношения.

Отличительная особенность операций обработки отношений заключается в том, что единицей обработки в них являются не кортежи, а отношения: на входе каждой операции используется одно или два отношения, а результат выполнения операций – новое отношение.

Рассмотрим некоторые, наиболее часто используемые операции реляционной алгебры, подробнее.

Операция Объединение - на входе задано два совместимых отношения, одинаковой размерности: А и В. Результат – отношение той же структуры, содержащее все кортежи А и все кортежи В

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

Деление. На входе операции используется два отношения: А и В. Пусть отношение А, называемое делимым, содержит атрибуты (А 1, А 2 , А 3 ,…, А n). Отношение В – делитель и содержит подмножество атрибутов А: (А 1, А 2 , …, А к), где k

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

При проектировании баз данных и работе с ними этих восьми операций обычно не достаточно. Поэтому добавляются такие операции как: переименование атрибутов, образование новых вычисляемых атрибутов, операции присваивания, сравнения и др.

Аномалии модификации

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

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

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

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

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

При разбиении отношения на два так же возникают проблемы. Например, можно ли записать студента на несуществующий пока курс? Эти проблемы должны решаться путем обсуждения бизнес-правил. Если бизнес-правилами будет предусмотрено требование наличия информации о курсе и стоимости при записи на этот курс студента, то при записи студента на курс будет производиться проверка на существование требуемого курса. Подобного рода проверки называются ограничениями ссылочной целостности или ограничениями целостности по внешнему ключу.

Целостность сущностей - ни одно значение первичного ключа не должно содержать null.

Этапы проектрирования:

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

Логическое - создается логическая структура БД. Для этого определяют, как данные будут сгруппированы логически. Структура БД на этом этапе выражается в терминах прикладных объектов и отношений между ними. Зависит от целевой СУБД, проверки на избыточность, нормализация.

Физическое - логическая структура БД преобразуется в физическую с учетом аспектов производительности. Элементы данных на этом этапе получают атрибуты и определяются как столбцы в таблицах выбранной для реализации БД СУБД. Основные отношения организации файлов и индексов, ограничения целостности и средства защиты.

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

Метод сущность-связь.

Метод моделирования "сущность-связь" дает абстрактную модель предметной области, используя следующие основные понятия: сущности (entities), взаимосвязи (relationships) между сущностями и атрибуты (attributes) для представления свойств сущностей и взаимосвязей.

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

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

Набор сущностей - множество сущностей одного типа (обладающих одинаковыми свойствами). Примеры: все люди, предприятия, праздники и т.д. Наборы сущностей не обязательно должны быть непересекающимися. Например, сущность, принадлежащая к набору МУЖЧИНЫ, также принадлежит набору ЛЮДИ.

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

Ключ сущности - это один или более атрибутов уникально определяющих данную сущность.

Связь - это ассоциация, установленная между несколькими сущностями. Примеры:

  • поскольку каждый сотрудник работает в каком-либо отделе, между сущностями СОТРУДНИК и ОТДЕЛ существует связь "работает в" или ОТДЕЛ-РАБОТНИК;

К сожалению, не существует общих правил определения, что считать сущностью, а что связью. В рассмотренном выше примере мы положили, что "руководит" - это связь. Однако, можно рассматривать сущность "руководитель", которая имеет связи "руководит" с сущностью "отдел" и "является" с сущностью "сотрудник".

Связь также может иметь атрибуты. Например, для связи ОТДЕЛ-РАБОТНИК можно задать атрибут СТАЖ_РАБОТЫ_В_ОТДЕЛЕ.

Роль сущности в связи - функция, которую выполняет сущность в данной связи. Например, в связи РОДИТЕЛЬ-ПОТОМОК сущности ЧЕЛОВЕК могут иметь роли "родитель" и "потомок". Указание ролей в модели "сущность-связь" не является обязательным и служит для уточнения семантики связи.

Набор связей - это отношение между n (причем n не меньше 2) сущностями, каждая из которых относится к некоторому набору сущностей.

Хотя, сторого говоря, понятия "связь" и "набор связей" различны (первая является элементом второго), их, тем не менее, очень часто смешивают.

В случае n=2 , т.е. когда связь объединяет две сущности, она называется бинарной. Доказано, что n -арный набор связей (n>2 ) всегда можно заменить множеством бинарных, однако первые лучше отображают семантику предметной области.

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

  • один к одному (обозначается 1: 1 ). Это означает, что в такой связи сущности с одной ролью всегда соответствует не более одной сущности с другой ролью.

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

"СОТРУДНИК" имеет обязательный класс принадлежности (этот факт обозначается также указанием интервала числа возможных вхождений сущности в связь, в данном случае это 1,1), а сущность "ОТДЕЛ" имеет необязательный класс принадлежности (0,1). Теперь данную связь мы можем описать как 0,1:1,1 .

  • один ко многим (1: n ). В данном случае сущности с одной ролью может соответствовать любое число сущностей с другой ролью.

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

  • много к одному (n: 1 ). Эта связь аналогична отображению 1: n .

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

  • многие ко многим (n: n ). В этом случае каждая из ассоциированных сущностей может быть представлена любым количеством экземпляров.

Если существование сущности x зависит от существования сущности y, то x называется зависимой сущностью (иногда сущность x называют "слабой", а "сущность" y - сильной). В качестве примера рассмотрим связь между ранее описанными сущностями РАБОЧАЯ_ГРУППА и КОНТРАКТ. Рабочая группа создается только после того, как будет подписан контракт с заказчиком, и прекращает свое существование по выполнению контракта. Тогда РАБОЧАЯ_ГРУППА является зависимой от сущности КОНТРАКТ. Зависимую сущность будем обозначать двойным прямоугольником, а ее связь с сильной сущностью линией со стрелкой (у нас был овал для зависимой)

Кардинальность связи для сильной сущности всегда будет (1,1). Класс принадлежности и степень связи для зависимой сущности могут быть любыми.

12. Иерархическая и сетевая модели данных.

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

К основным понятиям иерархической структуры относятся уровень, узел и связь. Узел - это совокупность атрибутов данных, описывающих некоторый объект. На схеме иерархического дерева узлы представляются вершинами графа. Каждый узел на более низком уровне связан только с одним узлом, находящимся на более высоком уровне. Иерархическое дерево имеет только одну вершину, не подчиненную никакой другой вершине и находящуюся на самом верхнем - первом уровне. Зависимые (подчиненные) узлы находятся на втором, третьем и т. д. уровнях. Количество деревьев в базе данных определяется числом корневых записей. К каждой записи базы данных существует только один иерархический путь от корневой записи.

Организация данных в СУБД иерархического типа определяется в терминах: элемент, агрегат, запись (группа), групповое отношение, база данных.

  • Атрибут (элемент данных) - наименьшая единица структуры данных. Обычно каждому элементу при описании базы данных присваивается уникальное имя. По этому имени к нему обращаются при обработке. Элемент данных также часто называют полем.
  • Запись - именованная совокупность атрибутов. Использование записей позволяет за одно обращение к базе получить некоторую логически связанную совокупность данных. Именно записи изменяются, добавляются и удаляются. Тип записи определяется составом ее атрибутов. Экземпляр записи - конкретная запись с конкретным значением элементов
  • Групповое отношение - иерархическое отношение между записями двух типов. Родительская запись (владелец группового отношения) называется исходной записью, а дочерние записи (члены группового отношения) - подчиненными. Иерархическая база данных может хранить только такие древовидные структуры.

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

При графическом изображении групповые отношения изображают дугами ориентированного графа, а типы записей – вершинами.

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

Пример: предприятие состоит из отделов, в которых работают сотрудники. В каждом отделе может работать несколько сотрудников, но сотрудник не может работать более чем в одном отделе.

Поэтому, для информационной системы управления персоналом необходимо создать групповое отношение, состоящее из родительской записи ОТДЕЛ (НАИМЕНОВАНИЕ_ОТДЕЛА, ЧИСЛО_РАБОТНИКОВ) и дочерней записи СОТРУДНИК (ФАМИЛИЯ, ДОЛЖНОСТЬ, ОКЛАД). (Для простоты полагается, что имеются только две дочерние записи). - рис а(дальше)

Для автоматизации учета контрактов с заказчиками необходимо создание еще одной иерархической структуры: заказчик - контракты с ним - сотрудники, задействованные в работе над контрактом. Это дерево будет включать записи ЗАКАЗЧИК(НАИМЕНОВАНИЕ_ЗАКАЗЧИКА, АДРЕС), КОНТРАКТ(НОМЕР, ДАТА,СУММА), ИСПОЛНИТЕЛЬ (ФАМИЛИЯ, ДОЛЖНОСТЬ, НАИМЕНОВАНИЕ_ОТДЕЛА) - рис. б.

Недостатки иерархических БД:

  • Частично дублируется информация между записями (такие записи называют парными), причем в иерархической модели данных не предусмотрена поддержка соответствия между парными записями.
  • Иерархическая модель реализует отношение между исходной и дочерней записью по схеме 1:N, то есть одной родительской записи может соответствовать любое число дочерних. Допустим теперь, что исполнитель может принимать участие более чем в одном контракте (т.е. возникает связь типа M:N). В этом случае в базу данных необходимо ввести еще одно групповое отношение, в котором ИСПОЛНИТЕЛЬ будет являться исходной записью, а КОНТРАКТ дочерней.Таким образом, мы опять вынуждены дублировать инфу.(рис С)
  • достаточно сложные логические связи и соответствующая громоздкость в обработке данных

Достоинства:

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

Операции над данными, определенные в иерархической модели:

  • ДОБАВИТЬ в базу данных новую запись. Для корневой записи обязательно формирование значения ключа.
  • ИЗМЕНИТЬ значение данных предварительно извлеченной записи. Ключевые данные не должны подвергаться изменениям.
  • УДАЛИТЬ некоторую запись и все подчиненные ей записи.
  • ИЗВЛЕЧЬ :
    • извлечь корневую запись по ключевому значению, допускается также последовательный просмотр корневых записей
    • извлечь следующую запись (следующая запись извлекается в порядке левостороннего обхода дерева)

В операции ИЗВЛЕЧЬ допускается задание условий выборки.

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

Ограничения целостности.

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

Первые системы управления базами данных, появившиеся в середине 60-х годов, позволяли работать с иерархической базой данных. Наиболее известной была иерархическая система IMS фирмы IBM. Известны также другие системы: PC/Focus, Team-Up, Data Edge и наши: Ока, ИНЭС, МИРИС.

Сетевая модель данных.

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

Сетевая модель данных определяется в тех же терминах, что и иерархическая. Она состоит из множества записей, которые могут быть владельцами или членами групповых отношений. Связь между между записью-владельцем и записью-членом также имеет вид 1:N .

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

Иерархическая структура с картинки выше. преобразовывается в сетевую следующим образом

Деревья (a) и (b), заменяются одной сетевой структурой, в которой запись СОТРУДНИК входит в два групповых отношения; для отображения типа M:N вводится запись СОТРУДНИК_КОНТРАКТ, которая не имеет полей и служит только для связи записей КОНТРАКТ и СОТРУДНИК

Каждый экземпляр группового отношения характеризуется следующими признаками:

  • способ упорядочения подчиненных записей :

произвольный,

хронологический /очередь/,

обратный хронологический /стек/,

сортированный.

Если запись объявлена подчиненной в нескольких групповых отношениях, то в каждом из них может быть назначен свой способ упорядочивания.

  • режим включения подчиненных записей :

автоматический - невозможно занести в БД запись без того, чтобы она была сразу же закреплена за неким владельцем;

ручной - позволяет запомнить в БД подчиненную запись и не включать ее немедленно в экземпляр группового отношения. Эта операция позже инициируется пользователем).

  • режим исключения Принято выделять три класса членства подчиненных записей в групповых отношениях:

Фиксированное. Подчиненная запись жестко связана с записью владельцем и ее можно исключить из группового отношения только удалив. При удалении записи-владельца все подчиненные записи автоматически тоже удаляются. В примере фиксированное членство предполагает групповое отношение "ЗАКЛЮЧАЕТ" между записями "КОНТРАКТ" и "ЗАКАЗЧИК", поскольку контракт не может существовать без заказчика.

Обязательное. Допускается переключение подчиненной записи на другого владельца, но невозможно ее существование без владельца. Для удаления записи-владельца необходимо, чтобы она не имела подчиненных записей с обязательным членством. Таким отношением связаны записи "СОТРУДНИК" и "ОТДЕЛ". Если отдел расформировывается, все его сорудники должны быть либо переведены в другие отделы, либо уволены.

Необязательное. Можно исключить запись из группового отношения, но сохранить ее в базе данных не прикрепляя к другому владельцу. При удалении записи-владельца ее подчиненные записи - необязательные члены сохраняются в базе, не участвуя более в групповом отношении такого типа. Примером такого группового отношения может служить "ВЫПОЛНЯЕТ" между "СОТРУДНИКИ" и "КОНТРАКТ", поскольку в организации могут существовать работники, чья деятельность не связана с выполненинем каких-либо договорных обязательств перед заказчиками.

Операции над данными.

ДОБАВИТЬ - внести запись в БД и, в зависимости от режима включения, либо включить ее в групповое отношение, где она объявлена подчиненной, либо не включать ни в какое групповое отношение.

ВКЛЮЧИТЬ В ГРУППОВОЕ ОТНОШЕНИЕ - связать существующую подчиненную запись с записью-владельцем.

ПЕРЕКЛЮЧИТЬ - связать существующую подчиненную запись с другой записью-владельцем в том же групповом отношении.

ОБНОВИТЬ - изменить значение элементов предварительно извлеченной записи.

ИЗВЛЕЧЬ - извлечь записи последовательно по значению ключа, а также используя групповые отношения - от владельца можно перейти к записям - членам, а от подчиненной записи к владельцу набора.

УДАЛИТЬ - убрать из БД запись. Если эта запись является владельцем группового отношения, то анализируется класс членства подчиненных записей. Обязательные члены должны быть предварительно исключены из группового отношения, фиксированные удалены вместе с владельцем, необязательные останутся в БД.
ИСКЛЮЧИТЬ ИЗ ГРУППОВОГО ОТНОШЕНИЯ - разорвать связь между записью-владельцем и записью-членом.

Ограничения целостности.

Как и в иерархической модели обеспечивается только поддержание целостности по ссылкам (владелец отношения - член отношения).

Основное достоинство сетевой модели – это высокая эффективность затрат памяти и оперативность. Недостаток – сложность и жесткость схемы базы, а также сложность понимания. Кроме того, в этой модели ослаблен контроль целостности, так как в ней допускается устанавливать произвольные связи между записями. Сложность реализации СУБД, сложность механизма доступа к данным., также необходимость на физическом уровне четко определять связи данных

К известным сетевым системам управления базами данных относятся: DBMS, IDMS, TOTAL, VISTA, СЕТЬ, СЕТОР, КОМПАС и др.

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

Графовые (иерархические и сетевые) модели реализованы в качестве моделей данных в системах управления базами данных, работающих на больших ЭВМ. Для персональных компьютеров больше распространены реляционные базы данных, хотя имеются и системы управления базами данных, поддерживающих сетевую модель.