Wie man eine horizontale Linie erhält, hat @Stefan ja schon erklärt. Deshalb sind hier nur zur Ergänzung noch zwei Alternativen für die Verschiebung selbst:
Zum einen kann man mittels `yshift` die Linie auch direkt um einen bestimmten Betrag verschieben. Die Verschiebung wird dabei in eckigen Klammern unmittelbar vor dem Nodennamen angegeben, also zum Beispiel `([yshift=-.5cm]S.east)`:
\path ([yshift=-.5cm]S.east) edge
node[pos=0,above right]{zugeordnet}node[pos=0,below right]{N}
node[pos=1,above left]{beinhaltet}node[pos=1,below left]{1}
([yshift=-.5cm]S-|OU.west);
Zum anderen kann man auch eine der Tabellenzellen zur Ausrichtung verwenden, da diese ebenfalls Noden mit den üblichen Ankern sind. Zum Beispiel hat die 1.Spalte in der 3.Zeile der Matrix `S` `(S)` automatisch den Namen `S-3-1`:
`(S-3-1)`:
\path (S-3-1) edge
node[pos=0,above right]{zugeordnet}node[pos=0,below right]{N}
node[pos=1,above left]{beinhaltet}node[pos=1,below left]{1}
(S-3-1-|OU.west);