There is no need to check if the source is used by a collaborator (what if is used by another table for instance) you just perform the delete and in case the source is used it will raise an exception that you can ignore. (this is if the foreign key constraints are done right with the on cascade 'RESTRICT' rather then cascade. The ideea is that you let the source service to decide if is ok to delete the source or not.