Скажем, у меня есть таблица с именем EMPLOYEE, а в таблице есть поле с именем ManagerID. Это поле является FK для другой записи таблицы EMPLOYEE о том, кто является их менеджером. Каков идеальный способ убедиться, что циклическая ссылка отсутствует (рекурсивные внешние ключи)?
РЕДАКТИРОВАТЬ - Позвольте мне добавить, что каждому сотруднику НЕ нужен менеджер. Будут некоторые записи сотрудников, для которых не установлено поле ManagerID.
* Пример: Пользователь 123 имеет пользователя 345 в качестве своего менеджера. Пользователь 345 имеет пользователя 567 в качестве своего менеджера. По какой-то безумной причине пользователь 567 имеет пользователя 123 в качестве своего менеджера.
Я хочу проверить, есть ли у пользователя 345 круговая ссылка. *
Как лучше всего это выяснить? Простой запрос? Код бизнес-логики (C # / VB.NET)?
Что сделали другие люди?
Пример схемы таблицы -
-- Employee Table --
UserID (int - PK)
ManagerID (int - FK to another UserID; can be null)