\begin{frame}
\frametitle{Efficiency Considerations: BCNF vs 3NF}
\begin{goal}{}
BCNF does not retain all FDs, therefore 3NF is popular.
\end{goal}
\pause
\bigskip
Database systems are good at checking \emph{key} constraints,
because they create an index on the key columns.
\begin{alertblock}{}
If we leave a table in 3NF (and not BCNF), we have non-key constraints.
Namely those FDs that are not implied by keys.
\end{alertblock}
\medskip
Sometimes we can enforce non-key constraints
as key constraints on \emph{materialised views}.
% Sometimes we can enforce non-key constraints as follows:
% \begin{itemize}
% \pause
% \item create a \emph{materialised view} that contains the non-key FD
% (a selection of the columns of the FD)
% \pause
% \smallskip
% \item define the key constraint on the materialised view
% \begin{itemize}
% \item updates to the table will cause updates to the view through
% % \emph{incremental view maintenance}.
% \item constraint checking is index-based, hence efficient
% \end{itemize}
% \end{itemize}
\end{frame}