Единое окно доступа к образовательным ресурсам

Введение в системы баз данных: Учебное пособие

Голосов: 3

В пособии рассматриваются основные понятия и определения, современное состояние технологий баз данных, архитектура СУБД, концепции проектирования БД, модели данных, реляционная модель данных, проектирование базы данных, физическая организация данных, управление реляционной базой данных, язык SQL, обеспечение функционирования баз данных.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
         Действительно, модификация основного файла в такой ситуации
требует:
   • изменить запись основного файла;
   • исключить старую ссылку на предыдущее значение вторичного
     индекса;
   • добавить новую ссылку на новое значение вторичного индекса.

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

8.1. Реляционная алгебра
      Ранее были определены основные операции по обновлению
информации в реляционной базе данных. Данные операции обновления —
это операции не над отношениями, а над кортежами отношения.
Операторы реляционной алгебры используют одно или два из
существующих отношений для создания нового отношения. Реляционная
алгебра (или алгебра отношений) представляет собой совокупность
операций высокого уровня над отношениями. Реляционная алгебра
определяет следующие операции:
   • объединение;
   • разность;
   • произведение;
   • пересечение;
   • проекция;
   • выбор;
   • соединение;
   • деление.


                                 92


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

     8.1.1. Объединение (Union)
     Пусть имеются отношения г и s, тогда отношение t = r ∪ s
называется объединением r и s, если каждый кортеж, принадлежащий t,
принадлежит или г, или s, или им обоим.

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

     r— Изделие 1                     s — Изделие 2
     Код_дет   Название Вес           Код_дет   Название Вес
     01        А        1             02        Д        2
     03        В        2             03        В        2
     04        С        3             04        С        3

     Необходимо сформировать ответ на следующий запрос: какие типы
деталей входят в состав обоих изделий? Для достижения этой цели
необходимо выполнить операцию t=r ∪ s. Результирующее отношение
содержит все детали, которые входят в состав обоих изделий.

     Код_дет   Название Вес
     01        А        1
     02        Д        2
     03        В        2
     04        С        3

8.1.2. Разность
      Пусть имеются два отношения г и s, тогда отношение t = r—s
называется разностью r и s, если каждый кортеж, принадлежащий t,
принадлежит r, но не принадлежит s. Операция применяется к отношениям
одной арности. Пусть отношение r представляет потребности в некоторых
видах деталей, а отношение s — сведения о тех видах деталей, которые
фирма может произвести сама, тогда отношение t = r—s содержит
сведения о тех видах деталей, которые нужно приобрести.




                                 93


      r - ПОТРЕБНОСТИ                      s - ВОЗМОЖНОСТИ
      Код_дет    Название Вес              Код_дет     Название Bec
      01         А            1            02          Д          2
      02         Д            2            03          В          2
      03         В            2            04          C          3
      04         С            3
      05         Е            1

      t= г- s

      Код Названне        Вес
      _дeт
      01 А                1
      05 Е                1

8.1.3. Декартово произведение
       Эта операция не накладывает никаких ограничений на схемы
исходных отношений, и поэтому она допустима для любых двух
отношений.
       Под декартовым произведением двух отношений понимается
множество упорядоченных пар кортежей. Пусть имеются два отношения r
и s, тогда отношение t = r * s арности к = к1 + k2, где к1 - арность r, a k2 —
арность s, называется декартовым произведением r и s, если оно состоит из
кортежей, первые k1 компонентов которых образуют кортежи из r, а
остальные k2 — из s.

      Пример
      Пусть r → СТУДЕНТЫ (Ном_зач_кн, ФИО);
      s → ЭКЗАМЕНЫ (Код_дисц, Назв_дисц, Дата, Оценка),
           тогда r * s → ЭКЗАМ_ВЕД (Ном_зач_кн, ФИО, Код_дисц,
      Назв_дисц, Дата, Оценка).

      r – СТУДЕНТЫ                        s - ЭКЗАМЕНЫ
      Ном_зач_кн     ФИО                  Код_дисц   Назв_дисц        Дата     Оценка
      02-Э-01        Иванов И.И.          01         Математика       10.01.03
      02-Э-02        Петров Т.Т.          02         Физика           15.01.03
      02-Э-05        Серов С.С.           03         Ин. язык         20.01.03

      ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ ПО ВСЕМ
      ДИСЦИПЛИНАМ
       Ном_зач_кн    ФИО           Код_дисц     Назв_днсц    Дата     Оценка
       02-Э-01       Иванов И.И.   01           Математика   10.01.03
       02-Э-01       Иванов И.И.   02           Физика       15.01.03
       02-Э-01       Иванов И.И.   03           Ин. язык     20.01.03
       02-Э-02       Петров Т.Т.   01           Математика   10.01.03


                                     94


      02-Э-02        Петров Т.Т.       02             Физика       15.01.03
      02-Э-02        Петров Т.Т.       03             Ин. язык     20.01.03
      02-Э-05        Серов С.С.        01             Математика   10.01.03
      02-Э-05        Серов С.С.        02             физика       15.01.03
      02-Э-05        Серов С.С.        03             Ин. язык     20.01.03

8.1.4. Пересечение
      Пусть имеются два отношения r и s, тогда отношение t = r ∩ s
называется пересечением r и s, если каждый кортеж, принадлежащий t,
одновременно принадлежит r и s. Операция применяется к отношениям
одной арности. Справедлива следующая формула: t = r ∩ s = r - (r - s).

     Пример
     Пусть имеются отношения:

     r - ИЗДЕЛИЕ 1                                     s - ИЗДЕЛИЕ 2
     Код_дет     Название          Вес           Код_дет      Название        Вес
     01          А                 1             02           Д               2
     02          Д                 2             04           С               3
     03          В                 2             03           В               2
     04          С                 3             06           К               1
     05          Е                 1

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

    Код_дет      Название          Вес
    02           Д                 2
    04           С                 3
    03           В                 2

8.1.5. Проекция (Project)
      Оператор проекции (вертикальное подмножество) является унарным
оператором на отношениях. Он осуществляет выбор на множестве
столбцов.
      Пусть в отношении r(R) выделено некоторое множество атрибутов
Y, тогда отношение t = πY(г) называется проекцией отношения r, если оно
является вертикальным подмножеством столбцов отношения r из
множества R.
      Иными словами, проекция R на Y есть также отношение, полученное
вычеркиванием столбцов, соответствующих атрибутам R — Y, и



                                            95


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

      А       B     С
      Р       1     а
      Р       2     b
      Q       2     с


     Тогда:

     πAC(r)
      А       С
      Р       а
      Р       b
      Q       с

8.1.6. Выбор (Select)
      Выбор или селекция — это одна из важнейших операций обработки
информации. Она также как и предыдущая, относится к унарным
операциям над отношением. Результатом ее применения к отношению r
является другое отношение, которое представляет собой подмножество
кортежей отношения r, с определенным значением в выделенном атрибуте.
      Итак, результатом селекции отношения r по некоторому Θ будем
считать отношение t = δΘ (г), которое включает в себя кортежи отношения
r, удовлетворяющие указанному условию Θ.
      Условие Θ — это формула, по которой определяется выборка.
Операндами в такой формуле являются атрибуты отношения, а знаками
операций — логические операции и операции отношений.
      δ C ≠ b(r)                 δ A ≠ q Λ B > 1(r)
      А       B     С        А      В      С
      Р       1     а        Р      2      b
      Q       2     с

8.1.7. Соединение (Join)
      Пусть имеются два отношения r (X, У) и s (Y, Z) и некоторое условие
Θ, где X, У, Z-— непересекающиеся множества атрибутов и Y—
множество атрибутов, общих для r и s, тогда отношение
      t = r >Θ< s



                                   96


       называется Θ-соединением r и s, если каждый кортеж,
принадлежащий t, состоит из кортежей r и s, при выполненном условии Θ.
Справедлива следующая формула:
       t = δΘ (r * s),
       то есть Θ-соединение представляет собой декартово произведение r и
s, над которым выполнена селекция по условию Θ.

      Пример
      Из общей экзаменационной ведомости по всем дисциплинам
получим экзаменационную ведомость по дисциплине математика. Для
этого выполним операцию соединение (Join) при условии Код_дисц = “01”

     ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ ПО ДИСЦИПЛИНЕ
     МАТЕМАТИКА
       Ном_зач_кн     ФИО        Код_дисц    Назв_дисц            Дата     Оценка
      02-Э-01     Иванов И.И.   01        Математика            10.01.03
      02-Э-02     Петров Т.Т.   01        Математика            10.01.03
      02-Э-05     Серов С.С.    01        Математика            10.01.03

8.1.8 Деление
      Деление — это также бинарная несимметричная операция для
получения некоторого отношения из двух исходных, причем степень
результирующего отношения не совпадает со степенью ни одного из
операндов, а вычисляется как разность между степенью отношения-
делимого и степенью отношения-делителя.
      Пусть имеются отношения r(Х, У) арности k1 и p(Z) арности k2, где Y
и Z определены на одном домене, тогда отношение t = r ÷ p арности k1 – k2
называется делением r на p, если любой кортеж из t вместе с любым
кортежем из p образуют кортеж, имеющийся в r.

     Пример
     Даны отношения, содержащие сведения об экзаменах, которые
должны были сдавать студенты, и сведения о результатах сдачи этих
экзаменов:

     VEDOM                                          RASP
      Ном_зач_кн Фамилия Назв_дисц         Дата     Назв_дисц     Дата
      02-Э-01    Иванов    Физика        10.01.03   Химия       14.01.03
      02-Э-01    Иванов    Химия         14.01.03   Физика      10.01.03
      02-Э-02    Сидоров   Физика        10.01.03
      02-Э-02    Сидоров   Химия         14.01.03
      02-Э-05    Коровин   Химия         14.01.03


                                    97


     Сформируем ответ на такой запрос: дать сведения о студентах,
сдавших все экзамены. Для получения ответа на данный запрос
необходимо выполнить следующую операцию деления:
     t=r÷p

     STUD = VEDOM ÷ RASP
     Ном_зач_кн Фамилия
     02-Э-01      Иванов
     02-Э-02      Сидоров

8.2. Реляционное исчисление
      Большинство работающих языков запросов основано на
реляционном исчислении. Реляционные исчисления — непроцедурные
системы. Исчисления выражают только то, каким должен быть результат
вычисления, но не то, каким образом проводить вычисления. Эта
обязанность возлагается на процессор языка запросов данной СУБД.
      Различают реляционное исчисление кортежей и реляционное
исчисление доменов. Поскольку реляционное исчисление доменов сходно
с реляционным исчислением кортежей за исключением того, что
переменные принимают значения в доменах, а не являются кортежами, а
исчисление кортежей используется чаще, рассмотрим только исчисление
кортежей. В дальнейшем, когда речь будет идти о реляционном
исчислении, будет подразумеваться именно реляционное исчисление
кортежей.
      Реляционное исчисление кортежей является, по сути, формализацией
системы обозначений, предназначенной для образования множеств. В
реляционном исчислении используются булевы операции (И, ИЛИ, НЕ)
над условиями, которые могут быть истинными или ложными. В нем
также используются кванторы существования и всеобщности,
означающие, соответственно, что элемент определенного типа существует
или что условие истинно для каждого элемента определенного типа.
      Рассмотрим отношение:

     r — Деталь
     Код_дет       Назв_дет   Вес
     01            А          1
     02            Д          2
     03            В          2
     04            С          3


     Запрос: Какие детали имеют вес, равный 2?



                                    98


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

      Код_дет     Назв_дет   Вес
      02          Д          2
      03          В          2

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

      Назв_дет
      Д
      В

     В реляционном же исчислении формулировка этого запроса должна
иметь следующий вид:
     { t.Назв_дет ⎟ t in r and t.Bec = 2},
     где t — это переменная, обозначающая произвольную строку.
Отношение, из которого берется t, определяется выражением “ in r”которое
означает, что t— строка отношения.
     t.Назв_дет — значение атрибута Назв_дет в строке r; символ (|) —
разделяет целевой список и определяющее выражение. В данном случае:
     t.Назв_дет — целевой список;
     t in r and t.Bec = 2 — определяющее выражение;
     t.Bec = 2 означает, что значение атрибута Вес в строке t равно 2.
     Фигурные скобки "{}", в которые заключено выражение, определяют
результат запроса, как множество значений данных. Что именно входит в
это множество, описывает выражение в скобках. Приведенное здесь
решение иллюстрирует почти все элементы реляционного исчисления.

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


                                   99


      В предыдущем примере Назв_дет берется из строки и помешается в
строку решения, если строка t удовлетворяет условию
      t in r and t. Вес = 2.
      Система просматривает строки отношения r одну за другой. Первой
строке временно присваивается имя t и проверяется истинность
определяющего выражения. Поскольку в этом случае t.Вес = 1,
определяющее выражение, ложно, поэтому А — значение атрибута
t.Hазв_дет в этой строке не помещается в отношение решения. Затем
система переходит к следующей строке, дает ей имя t и снова проверяет
истинность определяющего выражения. На этот раз выражение истинно,
поэтому Д помещается в отношение решения. Процесс повторяется для
каждой строки отношения r. В результате получается следующее
отношение, идентичное полученному ранее:

      Назв_дет
      Д
      В

     Целевой список может состоять из нескольких              атрибутов,
разделенных запятыми.
     {t.Код_дет, t.Назв_дет, t.Вес ⎟ t in r and t.Bec = 2}.
     Рассмотрим еще один пример. Пусть даны отношения:

     г - ИЗДЕЛИЕ 1                 s -ИЗДЕЛИЕ 2
     Код_дет     Назв_дет   Вес     Код_дет    Назв_дет   Вес
     01          А          1       02         Д          2
     02          Д          2       04         С          3
     03          В          2       03         B          2
     04          C          3       06         K          1
     05          Е          1



     Согласно алгебраическому выражению πНазв_дет(r ∩ s) реляционной
алгебры, содержащему операции пересечения и проецирования, получим
отношение:

     Назв_дет
     Д
     С
     В




                                  100


      В реляционном же исчислении, если t кортеж r, а у кортеж s, этот
запрос может включать в себя следующие компоненты:
      t.Назв_дет - целевой список;
      t in r and у in s and t.Кoд_дет = у.Код_дет and t.Bec = у.Вес and
t.Hазв_дет = у.Назв_дет — определяющее выражение.
      В рассмотренных примерах были использованы операции выбора,
пересечении и проецирования реляционной алгебры. Аналогично можно
получить конструкции реляционного исчисления, соответствующие ряду
других операций: объединению, разности и произведению.
      Несколько иначе выглядят аналоги только двух операций
реляционной алгебры — операций соединения и деления. Для построения
аналогов этих операций требуются кванторы: квантор существования для
соединения и квантор всеобщности для деления.

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

     ПОТРЕБНОСТИ                             СКЛАД
     Код_дет   Назв_дет   Количество         Код_дет   Стеллаж   Кол_дет
     01        А          1                  01        05        100
     02        Д          2                  03        10        250
     03        В          2                  04        02        2
     04        С          3
     05        Е          1

      Запрос: Перечислить названия деталей, потребности в которых
покрываются деталями, хранящимися на складе.
      Очевидно, что решением этой задачи будет отношение, содержащее
названия некоторых деталей. Это отношение состоит из одного столбца,
так что в этом случае целевым списком является:
      t.Назв_дет,
      где t— строка из отношения ПОТРЕБНОСТИ.
      Пусть s — строка отношения СКЛАД.
      Формирование определяющего выражения осуществляется, исходя
из следующего. Для того чтобы деталь вошла в отношение решения,
должно удовлетворяться условие, что на складе эта деталь имеется в
достаточном количестве. Другими словами, если Код_дет встречается в
строке отношения СКЛАД с Кол_дет > Количество в строке отношения
ПОТРЕБНОСТИ, то эта деталь должна быть включена в решение. Таким
образом, условие таково: существует хотя бы одна строка в отношении

                                       101



    
Яндекс цитирования Яндекс.Метрика