\begin{frame}[fragile]
\frametitle{Foreign Key Constraints}
\begin{code}{1\textwidth}{Foreign key constraints in SQL}
%###
\begin{verbatim}
create table Results (
...
foreign key (sid) references Students(sid)
)
\end{verbatim}
%###
\end{code}
\pause
\begin{block}{}
The \emph{foreign key constraint} ensures that
\begin{itemize}
\item [] for every tuple in $t \in \sql{Results}$ where $t.\sql{sid}$ is not \sql{null}, \\
$\quad$ there exist a tuple $u \in \sql{Students}$ \\
$\quad\quad$ such that $t.\sql{sid} = u.\sql{sid}$
\end{itemize}
\end{block}
\begin{alertblock}{}
Foreign keys \textbf{may be null}, unless with \sql{not null} constraint.\\
\remark{%
This corresponds to a ``null'' pointer in programming languages.
}
\end{alertblock}
\pause\smallskip
\begin{goal}{}
The \textbf{referential integrity} of the database
is ensured by enforcing the foreign key constraints.
\end{goal}
\end{frame}