\begin{frame} \frametitle{Example: Books and Authors} \booksexample \pause\medskip \only<2-15>{ \begin{itemize}\setlength{\itemsep}{0.3ex} \item $\sql{isbn} \to \pause \sql{title}, \sql{publisher}$ \iremark{(ISBN uniquely identifies a book)} \pause \item $\sql{isbn} \to \sql{author}$ \;\;? \pause \iremark{\alert{Does not hold.}} \pause \item $\sql{author} \to \sql{title}$ \;\;? \pause \iremark{\alert{Does not hold in general.}} \pause \item $\sql{title} \to \pause \varnothing$ \iremark{(There may be books with the same title)} \pause \item $\sql{isbn}, \sql{no} \to \pause\sql{author}$ \pause \item $\sql{isbn}, \sql{author} \to \sql{no}$ \;\;? \pause \iremark{\alert{questionable} (e.g. Smith \& Smith)} \pause \item $\sql{publisher}, \sql{title}, \sql{no} \to \sql{author}$ \;\;? \pause \iremark{\alert{questionable}}\vspace{-0.5ex} \remark{Authorship sequence might change in a new edition of a book!} \end{itemize} } \only<16>{ \bigskip \begin{goal}{} During database design, \emph{only unquestionable conditions should be used as functional dependencies}. \end{goal} \begin{alertblock}{} Database normalization \emph{alters the table structure} depending on the specified functional dependencies. \end{alertblock} Later hard to change: needs creation/deletion of tables! } \vspace{10cm} \end{frame}