Базы данных

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

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

Содержание

Отношения

  • Имя
  • Заголовок отношения
    • Описание данных
    • Множество пар имя: тип
  • Тело отношения
    • Данные
    • Множество множеств пар имя: значение
  • Пример отношения
    • {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) ⊆ 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}

Ключ

  • Минимальный по включению надключ
  • Ключ является минимальным идентификатором кортежа
  • У всех отношений существует ключ?
    • Можно минимизировать полный надключ
  • Можно ли использовать минимальность по числу атрибутов?
    • Нет, могут существовать ключи разной мощности: {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

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

Содержание

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

  • Задают простейшие правила вывода
  • Правило рефлексивности
    • $X ⊆ Y ⇒ Y → X$
  • Правило дополнения
    • $X → Y ⇒ X~Z → Y~Z$
  • Правило транзитивности
    • $X → Y, Y → Z ⇒ X → Z$
  • Позволяют построить замыкание

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

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

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

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

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

  • $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^{+} ⊆ 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 $Y → Z$ in $S$
              if $Y ⊆ X_S^\times$ then $X_S^\times = X_S^\times \cup Z$
      while (есть изменения)
      
  • Теорема. $X_S^{+} = X_S^{\times}$
    • $X_S^{+} ⊇ X_S^{\times}$ – по построению
    • $X_S^{+} ⊆ 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}⁺

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

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

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

Содержание

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

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

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

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

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

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

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

  • Расщепление правых частей
    • Линейно по размеру правых частей
  • Удаление атрибута $X \cup \{A\} → Y$
    • $Y ⊆ X^+_S$
    • Может породить несколько ФЗ
  • Удаление правила $X → Y$
    • $Y ⊆ X^+_{S \setminus \{X → Y\}}$

Наблюдение

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

Литература

Содержание

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

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

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

  • Armstrong W.W. Dependency Structures of Data Base Relationships
  • 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
  • Maier D. Minimum covers in the relational database model