Рекурсивная таблица Как ссылка для загрузки данных? - PullRequest
0 голосов
/ 16 августа 2010

Я планирую использовать рекурсивную таблицу в моей модели данных, чтобы я мог поддерживать неопределенное число детей, которые могут жить под родителем.Мой пример - Оглавление, где я не знаю, насколько глубоко мои подразделы будут находиться под главой.

Проблема, над которой я спотыкаюсь, состоит в том, какие методы люди используют для заполнения там БД после того, как они определили рекурсивную таблицу?Под этим я подразумеваю, если у меня есть список элементов, которые ссылаются на главу -> Раздел -> Подраздел ... когда я загружаю главу, раздел и подраздел в модель, мне нужно идентифицировать самый низкий уровень иерархии и назначитьэто значение для элемента, который я загружаю (внешний ключ - я бы предположил), чтобы я всегда мог получить всю информацию об этом элементе.

Так, например:

Элемент: 2A-GHI: Глава: 2 Раздел: Подраздел: GHI

Если мои данные загружены как

ID|TOCID|TOC_VALUE|PARENT_ID  
1|Chapter|2|-1  
2|Section|A|1  
3|SubSection|GHI|2    

Как мне привязать элемент к GHI, чтобы я мог установить FK наРекурсивная таблица для этого элемента?Используете ли вы все три значения в качестве ключа и задаете его в качестве другого столбца в таблице, чтобы при загрузке вы могли идентифицировать самый низкий уровень?

Как и так:

ID|TOCID|TOC_VALUE|PARENT_ID|Key  
1|Chapter|2|-1|2  
2|Section|A|1|2_A  
3|SubSection|GHI|2|2_A_GHI

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

1 Ответ

0 голосов
/ 16 августа 2010

Вам нужен столбец для родительского идентификатора строки.

ID|TOCID|TOC_VALUE|parent 
1|Chapter|2|0
2|Section|A|1 
3|SubSection|GHI|2

parentID 0 или null означает, что это корневой узел (глава)

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