\begin{frame}
\frametitle{Application Architectures}
\begin{goal}{Various ways of using database technology}
\begin{tcenter}
{\scriptsize
\begin{tikzpicture}[node distance=10mm,n/.style={rectangle,draw=black,fill=blue!10,rounded corners=1mm}]
\node[n] (db) {database system};
\node[n] (as) [above of=db] {application server};
\node[n] (ac) [above of=as,node distance=20mm] {application client};
\node[n] (u) [above of=ac] {user};
\draw[rounded corners=1mm,dashed,thick] ($(as.north west)+(-1mm,1mm)$) rectangle ($(as.south east) + (1mm,-11mm)$);
\draw[rounded corners=1mm,dashed,thick] ($(ac.south west)+(-1mm,-1mm)$) rectangle ($(ac.north east) + (1mm,10.5mm)$);
\draw[thick] (u) -- (ac) -- node[left] {network} (as); \draw[red,ultra thick] (as) -- (db);
\node[below of=db,align=center,node distance=10mm] {thin-client\\architecture};
\begin{scope}[xshift=30mm]
\node[n] (db) {database system};
\node[n] (ac) [above of=db,node distance=20mm] {application};
\node[n] (u) [above of=ac] {user};
\draw[rounded corners=1mm,dashed,thick] ($(db.north west)+(-1mm,1mm)$) rectangle ($(db.south east) + (1mm,-1mm)$);
\draw[rounded corners=1mm,dashed,thick] ($(ac.south west)+(-1mm,-1mm)$) rectangle ($(ac.north east) + (1mm,10.5mm)$);
\draw[thick] (u) -- (ac); \draw[red,ultra thick] (ac) -- node[left,black] {network} (db);
\node[below of=db,align=center,node distance=10mm] {client-server\\architecture};
\end{scope}
\begin{scope}[xshift=60mm]
\node[n] (db) {database system};
\node[n] (ac) [above of=db] {application};
\node[n] (u) [above of=ac] {user};
\draw[rounded corners=1mm,dashed,thick] ($(db.south west)+(-1mm,-1mm)$) rectangle ($(db.north east) + (1mm,21mm)$);
\draw[thick] (u) -- (ac); \draw[red,ultra thick] (ac) -- (db);
\node[below of=db,align=center,node distance=10mm] {embedded\\database};
\end{scope}
\begin{scope}[xshift=85mm,yshift=1.5mm]
\node[n,align=center] (db) {database\\system};
\node[n] (u) [above of=db,node distance=12mm] {user};
\draw[rounded corners=1mm,dashed,thick] ($(db.south west)+(-1mm,-1mm)$) rectangle ($(db.north east) + (1mm,11mm)$);
\draw[red,ultra thick] (u) -- (db);
\node[below of=db,align=center,node distance=11.5mm] {console\\access};
\end{scope}
\end{tikzpicture}
}
\end{tcenter}
\end{goal}
\pause
\begin{alertblock}{}
How do these applications talk to the database?
\end{alertblock}
\end{frame}