\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}