\begin{frame} \frametitle{BCNF Synthesis Algorithm} \begin{block}{BNCF Synthesis Algorithm} \emph{Input:} a relation $R$ and a set of FDs for $R$. \begin{enumerate} \medskip \item Compute a \emph{canonical set} of FDs $\mathcal{F}$. \smallskip \item \emph{Maximise the right-hand sides of the FDs:}\\ Replace every FD \;\;$X \to Y \in \mathcal{F}$\;\; by \;\;$X \to X^+ - X$\;\;. \smallskip \item \emph{Split off violating FDs one by one:}\\ Start with $\mathcal{S} = \{\,R\,\}$. \\[1ex] For every $R_i \in \mathcal{S}$ and $X \to Y \in \mathcal{F}$: if \begin{itemize} \item $X$ is contained in $R_i$ ($X \subseteq R_i$), and \item $X$ is not a key of $R_i$ ($R_i \not\subseteq X^+$), and \item $Y$ overlaps with $R_i$ ($Y \cap R_i \ne \emptyset$), \end{itemize} then, let $Z = Y \cap R_i$ and \begin{itemize} \item remove attributes $Z$ from the relation $R_i$, and \item add a relation with attributes $X \cup Z$ to $\mathcal{S}$. \end{itemize} \medskip \end{enumerate} \end{block} \end{frame}