93/291
\begin{frame}
  \frametitle{Canonical Set of Functional Dependencies}
  
  \begin{block}{Computing a Canonical Set of Functional Dependencies}
    Let a set of FDs $\mathcal{F}$ be given.
    Determine a \emph{minimal} (\emph{canonical}) set of FDs that is
    equivalent to $\mathcal{F}$ by transforming $\mathcal{F}$ as follows:
    \begin{enumerate}
    \pause\smallskip
    \item
      \emph{Make the right-hand sides singular}\\[1ex]
      Replace every FD $\alpha \to B_1, \dots, B_m$ by $\alpha \to B_i$, $1 \leqslant i \leqslant m$.
    \pause\medskip
    \item
      \emph{Minimise left-hand sides}\\[1ex]
      For each FD $\alpha \to B$ and attribute $A \in \alpha$:\\[.5ex]
      If $B \in (\alpha - \{\, A \,\})_{\mathcal{F}}^+$, 
      replace $\alpha \to B$ by $(\alpha - \{\, A \,\}) \to B$ in $\mathcal{F}$.
      %       For each $A_1, \dots, A_n \to B$ and each $i = 1,\dots,n$:
      %       \begin{itemize}
      %         \item If the cover $\{A_1,\dots,A_{i-1},A_{i+1},\dots,A_n\}^+_{\mathcal{F}}$ contains $B$, then
      %           \begin{itemize}
      %             \item drop \;\;$A_1,\dots,A_n \to B$\;\; from $\mathcal{F}$, and
      %             \item add \;\;$A_1,\dots,A_{i-1},A_{i+1},\dots,A_n \to B$\;\; to $\mathcal{F}$.
      %           \end{itemize}
      %       \end{itemize}
    \pause\medskip
    \item \emph{Remove implied FDs}\\[1ex]
      For each FD $\alpha \to B$:\\[.5ex]
      If $B \in \alpha^+_{\mathcal{G}}$ for
      $\mathcal{G} = \mathcal{F} - \{ \alpha \to B \}$,
      then drop $\alpha \to B$ from $\mathcal{F}$.
    \pause\medskip
    \end{enumerate}
    Repeat steps 2 and 3 until nothing can be removed.
  \end{block}
\end{frame}