I am trying to make diagrams for a large database shema. But even if having few tables the edges are ambiguous.
Please find attached one sample script, and another screenshot (without the source)
A [label =" TABLE_A | 00 | <bb> bb |<cc> cc | xxxxxxxxx"];
B [label =" TABLE_B | 00 | <bb> bb | xxxxxxxxxxx| xxxxxxxxxxx| xxxxxxxxxxx| xxxxxxxxxxx| xxxxxxxxxxx| xxxxxxxxxxx| xxxxxxxxxxx| xxxxxxxxxxx"];
C [label =" TABLE_C | 00 | <cc> cc | xxxxxxxxx| xxxxxxxxx| xxxxxxxxx| xxxxxxxxx| xxxxxxxxx| xxxxxxxxx| xxxxxxxxx| xxxxxxxxx"];
D [label =" TABLE_D | 00 | <cc> cc | xxxxxxxxx| xxxxxxxxx"];
A:bb -> B:bb [arrowhead=crow];
A:cc -> C:cc [arrowhead=crow];
C:cc -> D:cc [arrowhead=crow];
instead of starting/ending the spline on the (vertical) axis of the node, start/end on the (vertical) margin of the node .
[erg] If I understand correctly, the ambiguity you object to comes from an edge ending at the boundary where one port abuts another. There are various ways to remove this. One is to add a compass point notation to the edges to guarantee that the edge will be routed from the border. Another is to use the headclip and tailclip attributes.
[alex] Indeed output looks right with compass points. But the nice thing about Graphviz is the automatic layout, which is kinda contradictory manually adding the compasspoints.
Isn't it possible to have another value for compass points = "o", meaning "orthogonal"? This would allow dot to figure out the layout, and replace compasspoint with "n", "s", "e", "w" ?
Headclip/tailclip are not readable when combined with arrowhead/arrowtail: the head/tail is drawn over the text.