Составление таблицы на основе двух других (с древовидной структурой да

Тема в разделе "SQL", создана пользователем NeuroTechnic, 27 июл 2009.

  1. NeuroTechnic

    NeuroTechnic New Member

    Регистрация:
    27 июл 2009
    Сообщения:
    4
    Симпатии:
    0
    Есть база данных такого вида:

    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 я новичок, так что сильно не пинайте.
    Единственное, на что у меня хватит знаний сейчас это строить это таблицу вручную, бегая по таблицам в цикле, но думаю это не самый лучший вариант. Жду советов!
     
Загрузка...

Поделиться этой страницей