02. Реляционная модель данных. Структурная, целостная, манипуляционная части. Реляционная алгебра. Исчисление кортежей. - KattyOG/Database GitHub Wiki

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

Основы реляционной модели данных были впервые изложены в статье Е.Кодда в 1970 г. Эта работа послужила стимулом для большого количества статей и книг, в которых реляционная модель получила дальнейшее развитие. Наиболее распространенная трактовка реляционной модели данных принадлежит К.Дейту. Согласно Дейту, реляционная модель состоит из трех частей:

  • Структурной части.
  • Целостной части.
  • Манипуляционной части.

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

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

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

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

Манипуляционная часть описывает два эквивалентных способа манипулирования реляционными данными - реляционную алгебру и реляционное исчисление.

Реляционная алгебра

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

  1. Традиционные операции над множествами: объединение (UNION), пересечение (INTERSECT), разность (MINUS) и декартово произведение (TIMES). Все операции модифицированы, с учетом того, что их операндами являются отношения, а не произвольные множества.
  2. Специальные реляционные операции: ограничение (WHERE) , проекция (PROJECT), соединение (JOIN) и деление (DIVIDE BY).

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

Объединение A UNION B
Результатом операции объединения является отношение, содержащее все кортежи, принадлежащие одному из двух или обоим отношениям.

Пересечение A INTERSECT B
Результатом операции пересечения является отношение, содержащее кортежи, которые принадлежат обоим отношениям.

Вычитание A MINUS B
Результатом операции вычитания является отношение, которое содержит все кортежи, принадлежащие первому отношению и не принадлежащие второму отношению.

Декартово произведение A TIMES B
Результатом является отношение, содержащее все возможные кортежи, которые являются сочетанием двух кортежей, принадлежащих двум отношениям.

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

Проекция PROJECT A {x, y, …, z}
Результатом проекции является отношение, содержащее все кортежи после удаления из них некоторых атрибутов.

Соединение A JOIN c
Результат соединения – это отношение, кортежи которого являются сочетанием двух кортежей, принадлежащих двум начальным отношениям и имеющих общие значения для одного или нескольких атрибутов (общее значение в результирующем отношении появляется только один раз). Если в отношениях имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.

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

Переименование R RENAME Atr1 AS NewAtr1
где R — отношение
Atr1 — исходное имя атрибута
NewAtr1 — новое имя атрибута
В результате применения операции переименования получаем новое отношение, с измененными именами атрибутов.

Исчисление кортежей

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

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

Выражение исчисления кортежей содержит заключенный в скобки список целевых элементов и выражение WНERE, содержащее формулу WFF ("правильно построенную формулу"). Такая формула WFF составляется из кванторов (EXISTS и FORALL), свободных и связанных переменных, литералов, операторов сравнения, логических (булевых) операторов и скобок. Каждая свободная переменная, которая встречается в формуле WFF, должна быть также перечислена в списке целевых элементов.

Синтаксис исчисления кортежей

объявление-кортежной-переменной ::=                     
          RANGE OF переменная IS список-областей  
                  
область ::=                 
          отношение |               
          реляционное-выражение                 

реляционное-выражение ::=                     
          (список-целевых-элементов)[WHERE wff]                

целевой-элемент ::=               
          переменная |               
          переменная.атрибут [AS атрибут]                     

wff ::=              
          условие |             
          NOT wff |                   
          условие AND wff |               
          условие OR wff |               
          IF условие THEN wff |               
          EXISTS переменная (wff) |               
          FORALL переменная (wff) |               
          (wff)               

условие ::=               
          (wff) |               
          компаранд операция-отношения компаранд      

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

  1. Квадратные скобки здесь указывают на компоненты, которые по умолчанию могут быть опущены.
  2. Категории отношение, атрибут и переменная – это идентификаторы (т. е. имена).
  3. Реляционное выражение содержит заключенный в скобки список целевых элементов и выражение WHERE, содержащее формулу wff («правильно построенную формулу»). Такая формула wff составляется из кванторов (EXISTS и FORALL), свободных и связанных переменных, констант, операторов сравнения, логических (булевых) операторов и скобок. Каждая свободная переменная, которая встречается в формуле wff, должна быть также перечислена в списке целевых элементов.
  4. Категория условие представляет или формулу wff, заключенную в скобки, или простое скалярное сравнение, где каждый компаранд оператора сравнения – это либо скалярная константа, либо значение атрибута в форме переменная.атрибут.