27/36
\begin{frame}[fragile]
  \frametitle{Integrity Constraints}
  
  \begin{exampleblock}{Example schema with key constraints}
      \begin{itemize}
        \item Customers(\ul{id}, name, street, city) \\
          \hint{\emph{Primary key constraint} on \ul{id}}
        \item Accounts(depositor $\to$ Customers(id), \ul{accountnr})\\
          \hint{\emph{Foreign key constraint} on depositor}
      \end{itemize}
  \end{exampleblock}
  \bigskip
  
  Various types of constraints:
  \begin{itemize}
    \item \emph{data types}, constrained data types (domains)\\
      (e.g. \verb|numeric(2,0)|, \verb|varchar(40)|, \ldots)
    \item \emph{columns constraints}\\
      (e.g. unique, nullability, counter, \ldots)
    \item \emph{check constraints}: logical expression for domain integrity\\
      (e.g. \verb|age >= 18 and age <= 150|)
  \end{itemize}
\end{frame}