(0) проверять надо в запросе: левое соединение с таблицей оснований и если NULL то ссылка битая. Любые проверки в последующей выборке медленнее в разы, потому как запрос в цикле.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший