36/77
\begin{frame}
  \frametitle{Valid Database States}
  
  \begin{goal}{Primary goal of database design}
    Database should model \textbf{the relevant part of the real world}.
  \end{goal}

  The plain definition of tables often
  allows \textbf{too many} (meaningless, illegal) database states.

  \pause
  \begin{exampleblock}{A valid database state?}
    \centering{\small\ttfamily
      \colorbox{rellight}{%
        \begin{tabular}[t]{|r|r|r|r|r|}
          \multicolumn{5}{c}{Customer}        \\ \hline
          \hd{number} & \hd{name} & \hd{birth\_year} & \hd{city} &
          \hd{\dots}\\ \hline 
          1 & Smith & 1936 & Pittsburgh   & \dots \\
          2 & Jones & 1965 & Philadelphia & \dots \\
          3 & Brown &   64 & New York     & \dots \\
          3 & Ford  & 2015 & Washington   & \dots \\
          \hline
        \end{tabular}%
      }}
    \medskip
    \begin{itemize}
  \pause
    \item customer numbers must be unique
    \item the year of birth must be greater than \sql{1870}
    \item customers must be at least 18 years old
    \end{itemize}
  \end{exampleblock}
\end{frame}