Структура данных используется для структуры каталогов?

Попробуйте, таким образом, вы получите выделенный объект главы внутри

10
задан Brian Tompsett - 汤莱恩 25 October 2015 в 18:46
поделиться

6 ответов

Это - то, что я делаю:

Каждая запись в базе данных имеет два поля: идентификатор и ParentID. Идентификаторы являются 4-5 символами (Base36, a-z:0-9 или что-то подобное). Родительские идентификаторы являются конкатенацией полной структуры родителя...

Так...

Эта структура:

Root
   Folder1
   Folder2
      Folder3
   Folder4
      Folder5
         Folder6

Был бы представлен как это:

ID     ParentID     Name

0000   NULL           ROOT
0001   0000           Folder1
0002   0000           Folder2
0003   00000002       Folder3
0004   0000           Folder4
0005   00000004       Folder5
0006   000000040005   Folder6

Мне нравится эта структура, потому что, если я должен найти все файлы под папкой, я могу сделать запрос как:

SELECT * FROM Folders WHERE ParentID LIKE '0000%' -- to find all folders under Folder1

Удалить папку и всех ее детей:

DELETE FROM Folders WHERE ID='0004' AND ParentID LIKE '00000004%'

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

И я не хочу к linit папки или уровни подпапок

Очевидное ограничение к этому - то, что количество подпапок ограничено размером Вашего поля ParentID.

13
ответ дан 3 December 2019 в 15:53
поделиться

Я могу думать о нескольких способах, которыми Вы могли структурировать это, но ничто не разобьет очевидное:

Используйте фактическую файловую систему.

8
ответ дан 3 December 2019 в 15:53
поделиться

Я изучил бы использование своего рода древовидной структуры данных

5
ответ дан 3 December 2019 в 15:53
поделиться

Большинство языков OO идет со своего рода абстракцией для файловой системы, таким образом, существует то, где я запустил бы. Затем разделите его на подклассы, если Вы должны.

Я ожидал бы каталоги как массив объектов, которые являются каталогами или файлами, например.

0
ответ дан 3 December 2019 в 15:53
поделиться

Я знаю, что вопрос конкретно просит структуру данных, но...

При использовании объектно-ориентированного языка, возможно, можно использовать составной шаблон разработки, который идеально подходит для этого типа иерархического дерева как структура. Вы получаете то, что Вы просите.

0
ответ дан 3 December 2019 в 15:53
поделиться

вы можете использовать m-way древовидную структуру данных

0
ответ дан 3 December 2019 в 15:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: