228/291
\begin{frame}
  \frametitle{3NF Synthesis Algorithm}

  \begin{goal}{}
    The \emph{3NF synthesis algorithm} produces a lossless decomposition of a relation into 3NF that \emph{preserves the FDs}.
  \end{goal}
  \pause
  
  \begin{block}{3NF Synthesis Algorithm}
    \emph{Input:} relation $R$ and a set of FDs for $R$.
    \begin{enumerate}
    \smallskip
    \item Compute a \emph{canonical set} of FDs $\mathcal{F}$.
    \smallskip
    
    \item \textbf{Merge} $\alpha \to \beta_1$ and $\alpha \to \beta_2$ with the \emph{same left-hand side} 
      in $\mathcal{F}$ to the single functional dependency $\alpha \to \beta_1 \cup \beta_2$ .
    \smallskip
    
    \item For all $\alpha \to \beta \in \mathcal{F}$ \emph{create a relation} with attributes $\alpha \cup \beta$.
      %$\mathcal{A} = \alpha \cup \{ B\,|\, \alpha \to B \in \mathcal{F}\}$.
    \smallskip
    
    \item If none of the created relations contains a \emph{key of $R$}, 
      add a relation with the attributes of a minimal key of $R$.
    \smallskip
    
    \item Finally, drop relations $R_i(\alpha)$ if there is $R_j(\beta)$ with $\alpha \subsetneq \beta$.
    \medskip
    \end{enumerate}
  \end{block}
\end{frame}