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