\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}
\theme{\\Preservation of Functional Dependencies}