N
NeuroTechnic
Есть база данных такого вида:
CREATE TABLE InfoTree (
ID AUTOINCLARGEINT
ParentID LARGEINT DEFAULT -1 NOT NULL,
Name WIDESTRING(1023)
);
CREATE TABLE Tags (
TagID AUTOINCLARGEINT,
TagName WIDESTRING(1023)
);
CREATE TABLE TagDependancy (
TagID LARGEINT,
ID LARGEINT
);
Первая таблица содержит древовидную структуру данных (полей там побольше конечно, но в данном случае это не важно).
Вторая таблица содержит список возможных тэгов и их уникальных идентификаторов.
И третяя таблица содержит связи между записями главной таблицы и тэгами.
Проект написан на Delphi, используется база данных Absolute Database.
Для отображения используется компонент DevExpress TcxDBTreeList. Он автоматом отрисовывает дерево по таблице InfoTree на основе ID и ParentID.
Мне дали этот проект доработать, необходимо добавить еще один TcxDBTreeList который будет показывать дерево тегов.
Это дерево всегда двухуровневое. На первом уровне у него имена тэгов (Tags.TagName), на втором уровне имена элементов основной таблицы (InfoTree.Name) соответсвующие этому тэгу.
Т.е. нужно построить таблицу c тремя полями:
ID - уникальный идентификатор
ParentID - родитель, для записей первого уровня (тэгов), он будет равен -1
Name - имя элемента, для первого уровня Tags.TagName, для второго соответсвенно InfoTree.Name
Собственно вопрос, как это оптимально сделать? Если надо структуру всех таблиц можно переделать. В планах также переход на SQLite. В базах данных и SQL я новичок, так что сильно не пинайте.
Единственное, на что у меня хватит знаний сейчас это строить это таблицу вручную, бегая по таблицам в цикле, но думаю это не самый лучший вариант. Жду советов!
CREATE TABLE InfoTree (
ID AUTOINCLARGEINT
ParentID LARGEINT DEFAULT -1 NOT NULL,
Name WIDESTRING(1023)
);
CREATE TABLE Tags (
TagID AUTOINCLARGEINT,
TagName WIDESTRING(1023)
);
CREATE TABLE TagDependancy (
TagID LARGEINT,
ID LARGEINT
);
Первая таблица содержит древовидную структуру данных (полей там побольше конечно, но в данном случае это не важно).
Вторая таблица содержит список возможных тэгов и их уникальных идентификаторов.
И третяя таблица содержит связи между записями главной таблицы и тэгами.
Проект написан на Delphi, используется база данных Absolute Database.
Для отображения используется компонент DevExpress TcxDBTreeList. Он автоматом отрисовывает дерево по таблице InfoTree на основе ID и ParentID.
Мне дали этот проект доработать, необходимо добавить еще один TcxDBTreeList который будет показывать дерево тегов.
Это дерево всегда двухуровневое. На первом уровне у него имена тэгов (Tags.TagName), на втором уровне имена элементов основной таблицы (InfoTree.Name) соответсвующие этому тэгу.
Т.е. нужно построить таблицу c тремя полями:
ID - уникальный идентификатор
ParentID - родитель, для записей первого уровня (тэгов), он будет равен -1
Name - имя элемента, для первого уровня Tags.TagName, для второго соответсвенно InfoTree.Name
Собственно вопрос, как это оптимально сделать? Если надо структуру всех таблиц можно переделать. В планах также переход на SQLite. В базах данных и SQL я новичок, так что сильно не пинайте.
Единственное, на что у меня хватит знаний сейчас это строить это таблицу вручную, бегая по таблицам в цикле, но думаю это не самый лучший вариант. Жду советов!