Ограничить глубину дерева базы данных - PullRequest
2 голосов
/ 08 июля 2011

Обычно, когда я представляю родительскую дочернюю иерархию, у меня есть следующая таблица (я мог бы также добавить дополнительные столбцы глубины, чтобы ускорить процесс), где родители и дочерние элементы являются связями внешнего ключа со строками из одной таблицы сущностей.

Отношения сущностей композитный пкейидентификатор ребенкародительский идентификатор

Я пытаюсь понять, как ограничить глубину дерева до одного.Другими словами, если кто-то является родителем ребенка, как я могу запретить тому, чтобы этот родитель был ребенком сам по себе, поэтому невозможно иметь бабушку и дедушку или даже дальше?

1 Ответ

1 голос
/ 08 июля 2011

В зависимости от вашей СУБД, вы можете обрабатывать что-то подобное в триггере INSERT / UPDATE.Для того, чтобы просто запретить родителю не быть ребенком, это не должно быть слишком плохо (хотя я ненавижу использовать триггеры больше, чем необходимо).Если вы пытаетесь ограничить определенное количество уровней (скажем, 100), вы можете столкнуться с проблемами производительности.

В MS SQL Server вы также можете использовать пользовательские функции в ограничениях.Однако есть ограничения, поэтому я не знаю, сработает ли это здесь.Я попытаюсь проверить его, хотя.1010 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...