It sort of depends on the DB you're using. If you're using something like MySQL without triggers and foreign key constraints[1] then you can't really "guarantee" that there will really always be matches. Adding field constraints as in Postgres or Oracle, you can guarantee that a mis-typed query will never produce invalid data.

Any time I think I can rely on an assumption that is only enforced by policy, and not by the system itself, the assumption is always proved wrong at some point. I like having assumptions spelled out in the code/queries.


[1] Yes, I know there are versions that have it. I don't know anyone who has migrated a production system to one of these versions yet.