Введение в базы данных

Реляционная модель и функциональные зависимости

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

Содержание

Отношения

  • Имя
  • Заголовок отношения
    • Описание данных
    • Множество пар {имя: тип}
  • Тело отношения
    • Данные
    • Множество множеств пар {имя: значение}
  • Пример отношения
    • {id: int, name: string}
      {{id: 10, name: Иванов}, {id: 20}}
      

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

  • Как соотносятся реляционные и математические отношения?
    • $\begin{split} R = (&\{&a_1: T_1, a_2: T_2, ..., a_n: T_n\},\\ &\{\\ &&\{a_1: v_1, a_2: v_2, ..., a_n: v_n\},\\ &&\dots\\ &\})\\ \end{split}$
    • $\begin{split} R(a_1, a_2, ..., a_n) \subset T_1 \times T_2 \times \cdots \times T_n \\ (v_1, v_2, ..., v_n) \in T_1 \times T_2 \times \cdots \times T_n \end{split}$

Отношения и таблицы

  • Столбцы и атрибуты
    • Столбцы – список
    • Атрибуты – множество
  • Строки и кортежи
    • Строки – элемент расширенного декартова произведения
    • Кортежи – элемент декартова произведения
  • Таблицы и отношения
    • Таблица – список строк
    • Отношение – множество кортежей

Ключи

Содержание

Надключ

  • Множество атрибутов
    • В отношении нет кортежей с одинаковыми значениями атрибутов
    • В проекции на надключ нет повторяющихся кортежей.
  • Надключ является идентификатором кортежа
  • У всех отношений существует надключ?
    • Множество всех атрибутов – надключ

Сколько надключей?

  • 16 + 8 − 4 = 20
    • 16 для SId
    • 8 для {PassS, PassNo}
    • 4 для {SId, PassS, PassNo}

Ключ

  • Минимальный по включению надключ
  • Ключ является минимальным идентификатором кортежа
  • У всех отношений существует ключ?
    • Можно минимизировать полный надключ

Выбор ключей

  • Большинство СУБД умеют проверять ограничения на ключи
  • Требования к ключам
    • Уникальность
    • Неизменность
  • Натуральные ключи vs. суррогатные
    • Натуральные – соответствуют бизнес-правилам, часто составные
    • Суррогатные – простые и эффективные

Функциональные зависимости

Содержание

Определение

Содержание

Функциональная зависимость

  • $X → Y$
    • Каждому $X$ соответствует ровно один $Y$
    • $X$ и $Y$ – множества атрибутов
  • Все атрибуты функционально зависят от (над)ключа
  • Функциональные зависимости нельзя «вычислить»

Примеры ФЗ (1)

  • Возможные функциональные зависимости
    • CId → Name Lecturer Phone
    • Name → CId Lecturer Phone
    • Name → Lecturer Phone
    • Lecturer → Phone

Примеры ФЗ (2)

  • Функциональные зависимости
    • CId SId → RMark EMark
    • EMark → RMark

Тривиальные ФЗ

  • Правая часть – подмножество левой части
    • Выполняются всегда
    • Не несут информации
  • Примеры
    • CId → CId
    • Lecturer Phone → Phone

ФЗ и ограничения

  • Функциональные зависимости задают ограничения для БД
    • Многие СУБД не поддерживают произвольные ФЗ
    • Большинство СУБД поддерживают ключи
    • Больше ограничений $\Rightarrow$ меньше производительность
  • Задачи
    • Минимизировать число проверяемых ФЗ
    • Преобразовать ФЗ в ограничения ключей

Пример минимизации ФЗ

  • Исходные ФЗ
    • CId → Name, CId → Lecturer, CId → Phone
    • Name → CId, Name → Lecturer, Name → Phone
    • Lecturer → Phone
    • CId Lecturer → Phone
    • ...
  • Минимизированные ФЗ
    • CId → Name
    • Name → CId
    • CId → Lecturer
    • Lecturer → Phone

Правила вывода

Содержание

Правила Армстронга

  • Задают простейшие правила вывода
  • Правило рефлексивности
    • $A \subset B ⇒ B → A$
  • Правило дополнения
    • $A → B ⇒ A~C → B~C$
  • Правило транзитивности
    • $A → B, B → C ⇒ A → C$
  • Позволяют построить замыкание

Дополнительные правила

  • Правило самоопределения
    • $A → A$
  • Правила расщепления и объединения
    • $A → B~C ⇔ A → B, A → C$
  • Правило композиции
    • $A → B, C → D ⇒ A~C → B~D$
  • Позволяют минимизировать проверяемые ФЗ

Пример вывода ФЗ

  • Дано
    • Отношение (LId, Lecturer, Phone, Table, DeptHead, Dept)
    • LId → Lecturer Phone (1)
    • Phone Table → DeptHead Dept (2)
  • Вывод
    • LId → Lecturer Phone (1)
    • ⇒ (расщепление) LId → Phone
    • ⇒ (дополнение) LId Table → Phone Table
    • ⇒ (2, транзитивность) LId Table → DeptHead Dept
    • ⇒ (сокращение) LId Table → Dept

Замыкания

Содержание

Замыкание множества ФЗ

  • $S^{+}$
    • Множество всех ФЗ, которые следуют из $S$
  • Пример
    • $S = \{CId → Lecturer, Lecturer → Phone\}$
    • $\begin{split} S^{+} = \{\\ &CId → Lecturer, \\ &Lecturer → Phone,\\ &CId → Phone,\\ &CId~~Lecturer → Phone,\\ &\text{19 тривиальных ФЗ}\\ &\}\end{split}$

Эквивалентные множества ФЗ

  • $S$ слабее $P$ ($P$ накрывает $S$)
    • $S \sqsubset P \Leftrightarrow S^{+} \subset P^{+}$
  • $S$ эквивалентно $P$
    • $S \equiv P \Leftrightarrow S \sqsubset P \wedge P \sqsubset S \Leftrightarrow P^{+} = S^{+}$
  • Задача
    • Найти минимальное множество ФЗ эквивалентное заданному

Мощность замыкания

  • Оценить мощность замыкания
  • Мощность тривиальных ФЗ на $n$ атрибутах?
    • $\Sigma_{k=1}^{n}C_n^k (2^{ |K| } - 1) = O(3^n)$
  • Тривиальная ФЗ + нетривиальная ФЗ $\Rightarrow$ нетривиальная ФЗ
  • Мощность замыкания в реальных приложениях слишком велика

Замыкания атрибутов

Содержание

Замыкание атрибутов

  • Замыкание множества атрибутов $X$ над множеством функциональных зависимостей $S$
    • $X_S^{+}$ – множество атрибутов, функционально зависящих от $X$
  • Пример
    • $S = \{CId → Lecturer, Lecturer → Phone\}$
    • $X = \{CId\}$
    • Замыкание?
      • $X_S^{+} = \{CId, Lecturer, Phone\}$

Алгоритм вычисления $X_S^{+}$

  • Обход графа подмножеств
    • $X_S^\times = X$
      do
          for each $A → B$ in $S$
              if $A \subset X_S^\times$ then $X_S^\times = X_S^\times \cup B$
      while (есть изменения)
      
  • Теорема. $X_S^{+} = X_S^{\times}$
    • $X_S^{+} \supset X_S^{\times}$ – по построению
    • $X_S^{+} \subset X_S^{\times}$ – от противного

Пример вычисления $X_S^{+}$

  • Дано S
    • A → B C
    • E → C F
    • B → E
    • C D → E F
  • Найти {A, B}⁺
    • {A, B}
    • {A, B, C}
    • {A, B, C, E, F}
    • {A, B, C, E, F} = {A, B}⁺

Свойства замыканий атрибутов

  • Теорема $A → B \in S^{+} \Leftrightarrow B \subset A_S^{+}$
    • Позволяет проверять эквивалентность множеств ФЗ без вычисления замыканий
  • $X$ надключ $\Leftrightarrow$$X^{+}$ – множество всех атрибутов
    • Позволяет формально выделять ключи

Неприводимые множества ФЗ

Содержание

Неприводимые множества ФЗ

  • Множество ФЗ $S$ неприводимо
    • Каждая правая часть ФЗ содержит один атрибут
    • Каждая левая часть ФЗ минимальна по включению
    • $S$ минимально по включению
  • При проверке минимальности проверяется эквивалентность

Пример построения

  • Дано
    • LId → Lecturer Phone
    • Lecturer → Phone
    • LId → DeptHead
    • Lecturer Phone Table → DeptHead
  • Неприводимое множество ФЗ
    • LId → Lecturer
    • Lecturer → Phone
    • Lecturer Table → DeptHead

∃ неприводимого множества ФЗ

  • Теорема. Для любого множества ФЗ существует эквивалентное неприводимое множество ФЗ
    • По правилу расщепления делаем все правые части единичными
    • Для левой части каждого правила пытаемся удалить по одному атрибуту
    • Пытаемся удалить по одному правилу

Вычисление НМФЗ

  • Расщепление правых частей
    • Линейно по размеру правых частей
  • Удаление атрибута $A \cup {X} → B$
    • $A^+_S = A^+_{S \setminus \{A \cup {X} → B\} ∪ \{A → B\}}$
  • Удаление правила $A → B$
    • $B \subset A^+_{S \setminus \{A → B\}}$

Наблюдение

  • Неприводимые множества ФЗ обычно много меньше множеств исходного множества ФЗ
  • Неприводимое множество ФЗ может не являться минимальным
    • Ни в каком смысле

Литература

Содержание

Основная литература 2

  • Дейт К. Введение в системы баз данных (главы 9 и 11)
  • Уидом Д., Ульман Д. Основы реляционных баз данных (глава 3)

Дополнительная литература

  • Fagin R. Functional Dependencies in a Relational Database and Propositional Logic
  • Beeri C., Fagin R., Howard J. A complete axiomatization for functional and multivalued dependencies in database relations