After, Wants and Requires are not the same thing
After=network.target means "if it also starts, start after it". It does not mean "do not start without it" — the most common misreading.
After=/Before=are pure ordering.Wants=is a weak dependency: the other unit failing does not stop you.Requires=is strong: if it fails or stops, you stop too.
In practice, waiting for the network needs both Wants=network-online.target and After=network-online.target. With only After, the service starts before the network is up, cannot reach the database, and enters a restart loop.
BindsTo= is stricter — device or mount vanishes and you stop. PartOf= restarts a unit whenever its partner restarts.