44/77
\begin{frame}
  \frametitle{Keys}
  
  \begin{block}{}
    A \textbf{key} of a relation $R$ is a set of attributes $\{\,A_1,\ldots,A_n\,\}$ that
    \textbf{uniquely identify} the tuples in $R$.
  \end{block}
  \pause
  
  \begin{goal}{}
    The \emph{key constraint} is satisfied in the DB state $I$ if and only if
    \begin{tcenter}
      $t.A_1 = u.A_1 \;\&\; \ldots \;\&\; t.A_n = u.A_n \quad\implies\quad t = u$
    \end{tcenter}
    for all tuples $t,u \in I(R)$. 
  \end{goal}
  So, different tuples differ in at least one of the values $A_1,\ldots,A_n$.
  
  \begin{exampleblock}{}
    If \sql{sid} is declared a key for \sql{Students}, this is \alert{illegal}:
    
    \centerline{%
      {\tableSmall
      \colorbox{rellight}{%
        \begin{tabular}[t]{|r|r|r|c|}
          \multicolumn{4}{c}{Students} \\ \hline
          \hd{\underline{sid}} & \hd{first} & \hd{last} & \hd{address} \\ \hline
          101 & George & Orwell & \normalfont\ldots \\ 
          102 & Elvis & Presley & \normalfont\ldots \\ 
          101 & Lisa & Simpson & \normalfont\ldots \\ 
          \hline
        \end{tabular}%
      }}%
    }
  \end{exampleblock}
  \pause
  
  \begin{alertblock}{}
    Once a key has been declared the DBMS will refuse any insertion of tuples with duplicate key values.
  \end{alertblock}
\end{frame}