16/291
\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}