11/77
\begin{frame}[fragile]
  \frametitle{Data Types and Domains}

  \begin{block}{}
    The \emph{domain} $\dom{D}$ of a type $D$ is the set of possible values.
  \end{block}

  \begin{exampleblock}{}
    \begin{malign}
    \dom{\sql{int}} &= \{ \sql{-2147483648}, \dots, \sql{2147483647} \} \\
    \dom{\sql{numeric(2,0)}} &= \{ \sql{-99}, \dots, \sql{99} \} 
    \end{malign}
  \end{exampleblock}
  \pause\smallskip
  
  SQL allows to define \textbf{application-specific domains} 
  as subsets of standard data types:
  \begin{center}
    \begin{code}{.8\textwidth}{}
      \small
      \sql{create domain ExampleDomain as numeric(2,0)}
    \end{code}
  \end{center}
    
  We may even add constraints:
  \begin{center}
  \begin{code}{.94\textwidth}{}
      \small
%###
\begin{verbatim}
create domain ExampleDomain as numeric(2,0) check(value > 0)
\end{verbatim}
%###
  \end{code}
  \end{center}
  \pause
  Domains are useful to document that two columns represent the same kind of objects and that comparisons are meaningful.
  \bigskip
\end{frame}