237/291
\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}