I am trying to typeset a very simple diagram to illustrate DBMS interaction : two rectangles and a database shape after this definition :
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes}
\tikzstyle{database} = [cylinder,shape border rotate=90, aspect=0.25, draw ]
\begin{document}
\begin{tikzpicture}[every node/.append style={font=\scriptsize}]
\begin{scope}[every node/.append style={minimum height=1.5cm, minimum width=2cm, draw}, node distance=4cm]
\node[rectangle] (app) {Logiciel};
\node[rectangle] (sgbd) [right of=app] {SGBD};
\node[database] (data) [right of=sgbd] {Données};
\end{scope}
\draw[latex-latex] (sgbd.east) -- node[above] {Algorithmes} (data.west);
\draw[-latex] (app.15) -- node[above] {Requête} (sgbd.165);
\draw[latex-] (app.-15) -- node[below] {Réponse} (sgbd.195);
\end{tikzpicture}
\end{document}
However, the rotated cylinder does not line up with the rectangles :

I tried adding an yshift to the definition of the style, but while this does move the shape border, it also moves the text inside and the place where the arrow points to, which I do not want.
How can I just move the drawing of the border without changing the way the node behaves in tikz's placement system ?
There is no border yshift or border shift key.


right of=/right = ofthing too ! I will leave the question open for some time in case somebody comes up with a more generic solution (changing the definition of styles). – ysalmon Feb 29 '20 at 14:32