Jump to content

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

(Перенаправлено из реляционной модели данных )

Реляционная модель ( RM ) — это подход к управлению данными с использованием структуры и языка, согласующихся с логикой предикатов первого порядка , впервые описанный в 1969 году английским ученым-компьютерщиком Эдгаром Ф. Коддом . [1] [2] где все данные представлены в виде кортежей , сгруппированных в отношения . База данных, организованная по реляционной модели, является реляционной базой данных .

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

Большинство реляционных баз данных используют SQL язык определения данных и запросов ; эти системы реализуют то, что можно рассматривать как инженерное приближение к реляционной модели. Таблица в SQL схеме базы данных соответствует переменной-предикату; содержимое таблицы к отношению; ключевые ограничения, другие ограничения и запросы SQL соответствуют предикатам. Однако базы данных SQL во многих деталях отклоняются от реляционной модели , и Кодд яростно выступал против отклонений, которые ставят под угрозу исходные принципы. [3]

Реляционная модель была разработана Эдгаром Ф. Коддом как общая модель данных и впоследствии пропагандировалась, Крисом Дейтом и Хью Дарвеном среди других, . В своем «Третьем манифесте» 1995 года Дейт и Дарвен пытаются продемонстрировать, как реляционная модель может учитывать определенные «желаемые» объектно-ориентированные функции. [4]

Расширения

[ редактировать ]

Через несколько лет после публикации своей модели 1970 года Кодд предложил с трехзначной логикой (True, False, Missing/ NULL ее версию ) для работы с недостающей информацией, и в своей «Реляционной модели для управления базами данных, версия 2 » (1990) он пошел шаг вперед с версией четырехзначной логики (верно, ложно, отсутствует, но применимо, отсутствует, но неприменимо). [5]

Концептуализация

[ редактировать ]

Основные понятия

[ редактировать ]
Отношение с 5 атрибутами (его степенью) и 4 кортежами (его мощностью) можно представить в виде таблицы с 5 столбцами и 4 строками. Однако, в отличие от строк и столбцов таблицы, атрибуты и кортежи отношения неупорядочены.

Отношение . из заголовка и тела состоит Заголовок определяет набор атрибутов , каждый из которых имеет имя и тип данных (иногда называемый доменом ). Количество атрибутов в этом наборе представляет собой степень или арность отношения . Тело представляет собой набор кортежей . Кортеж — это набор из n значений , где n — степень отношения, а каждое значение в кортеже соответствует уникальному атрибуту. [6] отношения Количество кортежей в этом наборе — это мощность . [7] : 17–22 

Отношения представлены реляционными переменными или relvars , которые можно переназначать. [7] : 22–24  База данных представляет собой набор переменных. [7] : 112–113 

В этой модели базы данных следуют принципу информации : в любой момент времени вся информация в базе данных представлена ​​исключительно значениями внутри кортежей, соответствующих атрибутам, в отношениях, определяемых relvars. [7] : 111 

Ограничения

[ редактировать ]

База данных может определять произвольные логические выражения в качестве ограничений . Если все ограничения верны , база данных согласована ; в противном случае это противоречиво . Если изменение relvars базы данных приведет к тому, что база данных окажется в несогласованном состоянии, такое изменение является незаконным и не должно быть успешным. [7] : 91 

Как правило, ограничения выражаются с помощью операторов реляционного сравнения, из которых теоретически достаточно только одного, «является подмножеством» (⊆). [ нужна ссылка ]

Два особых случая ограничений выражаются в виде ключей и внешних ключей :

Ключ -кандидат или просто ключ — это наименьшее подмножество атрибутов, которые гарантированно однозначно различают каждый кортеж в отношении. Поскольку каждый кортеж в отношении должен быть уникальным, каждое отношение обязательно имеет ключ, который может быть его полным набором атрибутов. Отношение может иметь несколько ключей, поскольку может существовать несколько способов уникального различения каждого кортежа. [7] : 31–33 

Атрибут может быть уникальным в кортежах, но не быть ключом. Например, отношение, описывающее сотрудников компании, может иметь два атрибута: ID и Имя. Даже если в настоящее время ни у одного сотрудника нет одинакового имени, если возможно в конечном итоге нанять нового сотрудника с тем же именем, что и у текущего сотрудника, подмножество атрибута {Name} не является ключевым. И наоборот, если подмножество {ID} является ключом, это означает не только то, что ни один из сотрудников в настоящее время не использует общий идентификатор, но и что ни один из сотрудников никогда не будет делиться этим идентификатором. [7] : 31–33 

Внешние ключи

[ редактировать ]

Внешний ключ подмножество атрибутов {A} в отношении R1 , которое соответствует ключу другого отношения , R2 тем свойством, что R1 на это проекция { A} является подмножеством проекции R2 ​​обладающее на {А} . кортеж в R1 содержащий должен существовать соответствующий кортеж, содержит значения внешнего ключа, в R2 Другими словами, если те же значения для соответствующего ключа. [7] : 34 

Реляционные операции

[ редактировать ]

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

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

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

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

Нормализация базы данных

[ редактировать ]

Отношения классифицируются на основе типов аномалий, к которым они уязвимы. База данных, находящаяся в первой нормальной форме, уязвима для всех типов аномалий, в то время как база данных, находящаяся в нормальной форме домена/ключа, не имеет аномалий модификации. Нормальные формы имеют иерархическую природу. То есть самый низкий уровень — это первая нормальная форма, и база данных не может удовлетворить требованиям нормальных форм более высокого уровня, не выполнив предварительно все требования меньших нормальных форм. [8]

Логическая интерпретация

[ редактировать ]

Реляционная модель представляет собой формальную систему . Атрибуты отношения определяют набор логических предложений . Каждое предложение можно выразить в виде кортежа. Тело отношения — это подмножество этих кортежей, представляющее, какие утверждения являются истинными. Ограничения представляют собой дополнительные предложения, которые также должны быть истинными. Реляционная алгебра — это набор логических правил, которые позволяют обоснованно делать выводы из этих утверждений. [7] : 95–101 

Определение кортежа позволяет создать уникальный пустой кортеж без значений, соответствующий пустому набору атрибутов. Если отношение имеет степень 0 (т. е. его заголовок не содержит атрибутов), оно может иметь либо мощность 0 (тело, не содержащее кортежей), либо мощность 1 (тело, содержащее один пустой кортеж). Эти отношения представляют собой логические значения истинности . Отношение со степенью 0 и мощностью 0 является ложным , а отношение со степенью 0 и мощностью 1 является истинным . [7] : 221–223 

Если отношение «Сотрудники» содержит атрибуты {Name, ID} , то кортеж {Алиса, 1} представляет предложение: «Существует сотрудник по имени Алиса с идентификатором 1 ». Это предложение может быть истинным или ложным. Если этот кортеж существует в теле отношения, предложение истинно (такой сотрудник есть). Если этого кортежа нет в теле отношения, предложение ложно (такого сотрудника нет). [7] : 96–97 

Более того, если {ID} является ключом, то отношение, содержащее кортежи {Алиса, 1} и {Боб, 1}, будет представлять собой следующее противоречие :

  1. Существует сотрудник с именем Алиса и идентификатором 1 .
  2. Существует сотрудник с именем Боб и идентификатором 1 .
  3. Не существует нескольких сотрудников с одинаковым идентификатором.

Согласно принципу взрыва , это противоречие позволило бы системе доказать, что любое произвольное утверждение истинно. Чтобы предотвратить это, база данных должна обеспечить соблюдение ключевого ограничения. [7] : 104 

База данных

[ редактировать ]

Идеализированный, очень простой пример описания некоторых relvar ( переменных отношения ) и их атрибутов:

  • Клиент ( Идентификатор клиента , Имя)
  • Заказ ( идентификатор заказа , идентификатор клиента , идентификатор счета , дата)
  • Счет ( идентификатор счета , идентификатор клиента , идентификатор заказа , статус)

В этом проекте у нас есть три значения: Клиент, Заказ и Счет. Атрибуты, выделенные жирным шрифтом и подчеркнутые, являются кандидатами на ключи . Атрибуты, не выделенные жирным шрифтом и подчеркнутые, являются внешними ключами .

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

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

Отношения с клиентами

[ редактировать ]
Идентификатор клиента Имя
123 Алиса
456 Боб
789 Кэрол

Если бы мы попытались вставить нового клиента с идентификатором 123 , это нарушило бы дизайн relvar, поскольку идентификатор клиента является первичным ключом , а клиент 123 у нас уже есть . СУБД из - должна отклонить транзакцию подобную , которая может привести к несогласованности базы данных за нарушения ограничения целостности . Однако можно вставить другого клиента по имени Алиса , если этот новый клиент имеет уникальный идентификатор, поскольку поле «Имя» не является частью первичного ключа.

Внешние ключи — это ограничения целостности, гарантирующие, что значение извлекается набора атрибутов из ключа-кандидата в другом отношении . Например, в отношении «Заказ» атрибут « Идентификатор клиента» является внешним ключом. Соединение операция — это , которая извлекает информацию из нескольких отношений одновременно. Объединив relvars из приведенного выше примера, мы могли бы запросить в базе данных всех клиентов, заказы и счета. Если бы нам нужны были кортежи только для конкретного клиента, мы бы указали это с помощью условия ограничения . Если бы мы хотели получить все заказы для клиента 123 , мы могли бы запросить базу данных, чтобы она вернула каждую строку в таблице заказов с идентификатором клиента 123 .

нашей базы данных, описанной выше, есть недостаток В конструкции . Переменная Invoice содержит атрибут Order ID. Таким образом, каждый кортеж в переменной Invoice будет иметь один идентификатор заказа, что означает, что для каждого счета существует ровно один заказ. Но на самом деле счет-фактура может быть создан для многих заказов или даже ни для одного конкретного заказа. Кроме того, переменная заказа содержит атрибут «Идентификатор счета», подразумевающий, что каждый заказ имеет соответствующий счет-фактуру. Но опять же, это не всегда так в реальном мире. Заказ иногда оплачивается по нескольким счетам, а иногда оплачивается без счета. Другими словами, может быть много счетов-фактур на один заказ и много заказов на один счет-фактуру. Это связь «многие ко многим» между Заказом и Счетом (также называемая неспецифической связью ). Для представления этой связи в базе данных необходимо ввести новую relvar, роль которой заключается в указании соответствия между Заказами и Счетами:

OrderInvoice (Order ID, Invoice ID)

Теперь относительная переменная Order имеет отношение один ко многим к таблице OrderInvoice, как и относительная переменная Invoice. Если мы хотим получить каждый счет-фактуру для определенного заказа, мы можем запросить все заказы, где идентификатор заказа в отношении заказа равен идентификатору заказа в OrderInvoice, а идентификатор счета-фактуры в OrderInvoice равен идентификатору счета-фактуры в счете-фактуре.

Приложение к реляционным базам данных

[ редактировать ]

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

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

базы данных Относительная переменная (переменная отношения) обычно известна как базовая таблица . Заголовок присвоенного ему значения в любой момент соответствует указанному в объявлении таблицы, а его тело — это то, которое было присвоено ему последним оператором обновления (обычно INSERT, UPDATE или DELETE). Заголовок и тело таблицы, полученной в результате оценки запроса, определяются определениями операторов, используемых в этом запросе.

SQL и реляционная модель

[ редактировать ]

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

Согласно реляционной модели, атрибуты и кортежи отношения представляют собой математические наборы , то есть они неупорядочены и уникальны. В таблице SQL ни строки, ни столбцы не являются правильными наборами. Таблица может содержать как повторяющиеся строки, так и повторяющиеся столбцы, а столбцы таблицы явно упорядочены. SQL использует значение Null для обозначения отсутствующих данных, которые не имеют аналога в реляционной модели. реляционной модели Поскольку строка может представлять неизвестную информацию, SQL не соответствует принципу информации . [7] : 153–155, 162 

Теоретико-множественная формулировка

[ редактировать ]

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

Наше первое определение касается понятия кортежа , которое формализует понятие строки или записи в таблице:

Кортеж
Кортеж — это частичная функция от имен атрибутов до атомарных значений.
Заголовок
Заголовок — это конечный набор имен атрибутов.
Проекция
Проекция кортежа на конечном наборе атрибутов является .

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

Связь
Отношение — это кортеж с , заголовок и , тело, набор кортежей, каждый из которых имеет домен .

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

Вселенная отношений
Вселенная отношений над заголовком это непустой набор отношений с заголовком .
Схема отношений
Схема отношения состоит из заголовка и предикат который определен для всех отношений с заголовком . Отношение удовлетворяет схеме отношения если у него есть заголовок и удовлетворяет .

Ключевые ограничения и функциональные зависимости

[ редактировать ]

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

Superkey

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

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

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

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

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

Функциональная зависимость (сокращенно FD) записывается как для конечные наборы имен атрибутов.
Функциональная зависимость находится в отношении если:
  • и
  • кортежи ,
Функциональная зависимость содержится во вселенной отношений если оно справедливо во всех отношениях в .
Тривиальная функциональная зависимость
Функциональная зависимость тривиальна под заголовком если это справедливо во всех вселенных отношений .
Теорема: ФД тривиально под заголовком тогда и только тогда, когда .
Закрытие
Аксиомы Армстронга : Замыкание множества ФД. под заголовком , записанный как , является наименьшим расширенным набором такой, что:
  • (рефлексивность)
  • (транзитивность) и
  • (увеличение)
Теорема: аксиомы Армстронга верны и полны; учитывая заголовок и набор FD, которые содержат только подмножества , тогда и только тогда, когда сохраняется во всех вселенных отношений в котором все ФД в держать.
Завершение
Завершение конечного набора атрибутов при конечном наборе ФД , записанный как , является наименьшим расширенным набором такой, что:
Завершение набора атрибутов можно использовать для вычисления того, находится ли определенная зависимость в замыкании набора FD.
Теорема: Дан набор ФД, тогда и только тогда, когда .
Несократимое покрытие
Неприводимое покрытие множества ФД представляет собой набор таких ФД, что:
  • не существует такой, что
  • представляет собой одноэлементный набор и
  • .

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

[ редактировать ]
algorithm derive candidate keys from functional dependencies is
    input: a set S of FDs that contain only subsets of a header H
    output: the set C of superkeys that hold as candidate keys in
            all relation universes over H in which all FDs in S hold

    C := ∅         // found candidate keys
    Q := { H }      // superkeys that contain candidate keys
    while Q <> ∅ do
        let K be some element from Q
        Q := Q – { K }
        minimal := true
        for each X->Y in S do
            K' := (K – Y) ∪ X   // derive new superkey
            if K' K then
                minimal := false
                Q := Q ∪ { K' }
            end if
        end for
        if minimal and there is not a subset of K in C then
            remove all supersets of K from C
            C := C ∪ { K }
        end if
    end while

Альтернативы

[ редактировать ]

Другие модели включают иерархическую модель и сетевую модель . Некоторые системы, использующие эти старые архитектуры, до сих пор используются в центрах обработки данных с потребностями в больших объемах данных или там, где существующие системы настолько сложны и абстрактны, что переход на системы, использующие реляционную модель, будет непомерно затратным. Также следует отметить новые объектно-ориентированные базы данных . [9] и журнал данных . [10]

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

В отличие от реляционной модели, которая не может выражать рекурсивные запросы без введения оператора наименьшей фиксированной точки, [11] рекурсивные отношения могут быть определены в Datalog без введения каких-либо новых логических связок или операторов.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Кодд, Э.Ф. (1969), Выводимость, избыточность и согласованность отношений, хранящихся в больших банках данных , Отчет об исследовании, IBM .
  2. ^ Кодд, Э.Ф. (1970). «Реляционная модель данных для больших общих банков данных» . Коммуникации АКМ . Классика. 13 (6): 377–87. дои : 10.1145/362384.362685 . S2CID   207549016 . Архивировано из оригинала 12 июня 2007 г.
  3. ^ Кодд, Э. Ф. (1990), Реляционная модель управления базами данных , Аддисон-Уэсли, стр. 371–388, ISBN  978-0-201-14192-4 .
  4. ^ «Оказывал ли «Третий манифест» Дэйта и Дарвена длительное влияние?» . Обмен стеками в области компьютерных наук . Проверено 3 августа 2024 г.
  5. ^ Дата, Кристофер Дж. (2006). «18. Почему не работает трех- и четырехзначная логика». Дата в базе данных: Сочинения 2000–2006 гг . Апресс. стр. 329–41. ISBN  978-1-59059-746-0 .
  6. ^ «Кортеж в СУБД» . Гики для Гиков . 12 февраля 2023 г. Проверено 3 августа 2024 г.
  7. ^ Перейти обратно: а б с д и ж г час я дж к л м Дата, Крис Дж. (2013). Реляционная теория для компьютерных специалистов: что на самом деле представляют собой реляционные базы данных (1-е изд.). Севастополь, Калифорния: O'Reilly Media. ISBN  978-1-449-36943-9 .
  8. ^ Дэвид М. Кроенке, Обработка баз данных: основы, проектирование и реализация (1997), Prentice-Hall, Inc., страницы 130–144
  9. ^ Аткинсон М., Девитт Д., Майер Д., Банкилхон Ф., Диттрих К. и Здоник С., 1990. Манифест объектно-ориентированной системы баз данных. В книге «Дедуктивные и объектно-ориентированные базы данных» (стр. 223-240). Северная Голландия.
  10. ^ Майер Д., Текле К.Т., Кифер М. и Уоррен Д.С., 2018. Журнал данных: концепции, история и перспективы. В декларативном логическом программировании: теория, системы и приложения (стр. 3–100).
  11. ^ Ахо, А.В. и Ульман, JD, 1979, январь. Универсальность языков поиска данных. В материалах 6-го симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования (стр. 110-119).

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4305fdfc4d1dd481c44d5faf35384e02__1722699600
URL1:https://arc.ask3.ru/arc/aa/43/02/4305fdfc4d1dd481c44d5faf35384e02.html
Заголовок, (Title) документа по адресу, URL1:
Relational model - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)