\begin{frame}
\frametitle{Functional Dependencies}
\begin{block}{}
A \emph{functional dependency (FD)}
\begin{talign}
\{\, A_1, \dots, A_n \,\} \to \{\, B_1, \dots, B_m \,\}
\end{talign}
\emph{holds for a relation $R$} in a database state $I$ if and only if
\begin{talign}
& t.A_1 = u.A_1 \wedge \cdots \wedge t.A_n = u.A_n \\
\Rightarrow\;\; & t.B_1 = u.B_1 \wedge \cdots \wedge t.B_m = u.B_m
\end{talign}
for all tuples $t,u \in I(R)$.
\end{block}
Usually, we do not write the set brackets $\{$ and $\}$.
\pause\medskip
\begin{goal}{}
A functional dependency is like a \emph{partial key:}
uniquely determines some attributes, but not all in general.
\end{goal}
\pause\medskip
We read functional dependencies as
\begin{itemize}
\item $A_1, \dots, A_n$ (functionally, uniquely) determine $B_1, \dots, B_m$
\end{itemize}
% \begin{goal}{}
% A \emph{determinant} is a `minimal' functional dependency.
% \end{goal}
\end{frame}