Что ж, проще всего было бы для записи иметь столбец ParentID, чтобы он знал, какая запись является ее родителем. Это довольно стандартная практика. Например, интернет-магазин может иметь иерархию категорий товаров. Каждая категория будет иметь ParentID. Пример: категория «джинсы» в базе данных одежды может иметь «штаны» в качестве родительской категории. Это немного сложнее, если вы хотите, чтобы запись указывала, кто из ее детей, если вы не ограничиваете количество детей. Если вам нужно двоичное дерево, у вас могут быть столбцы LeftChildID и RightChildID. Если вы разрешите любое количество дочерних элементов, у вас может быть столбец Children с идентификаторами, разделенными запятыми (например, 1,4,72,19
), но это усложнит запрос. Если ваша база данных допускает типы массивов в столбцах, вы, вероятно, можете использовать массив вместо строки с разделителями, что было бы легко сделать запросом - но я не уверен, поддерживает ли это MS SQL Server.
Кроме того, это зависит от того, какие данные вы моделируете, а также от того, какие операции вы планируете выполнять с этим деревом.