202/291
\begin{frame}
  \frametitle{Splitting Relations: Computable Columns}

  \begin{alertblock}{}
    Although \emph{computable columns} lead to violations
    of BCNF, splitting the relation is \emph{not} the right solution.
  \end{alertblock}
  \pause
  
  \begin{exampleblock}{}
    E.g. \sql{age} which is derivable from \sql{dateOfBirth}.
    \medskip
    
    As a consequence we have a functional dependency:
    \begin{center}
      \sql{dateOfBirth} $\to$ \sql{age}
    \end{center}
    
    A split would yield a relation:
    \begin{center}
      \sql{R(dateOfBirth, age)}
    \end{center}
    which would try to materialise the computable function.
  \end{exampleblock}
  \pause
  
  \begin{goal}{}
    The \emph{correct solution} is to \emph{eliminate \sql{age}} from the table
    and to \emph{define a view} containing all columns plus the
    \emph{computed} \sql{age}. % (invoking a SQL stored procedure).
  \end{goal}
\end{frame}