Дерево и листья. Структура базы.

xintrea

Новичок
Никогда не занимался проектированием баз данных, посему вопрос.

Есть дерево, содержащее группы текстовых записей. Дерево построено по принципу Nested Sets. Дерево может быть, например, таким:

Код:
Корень
  Новости
    Новости на русском
    Новости на английском
    Новости на немецком
  Правила
    Краткое описание
      Что
      Где
      Когда
    Терминология
    Резюме
  Статьи
    Статьи на русском
      О проекте
    Статьи на английском
    Статьи на немецком
Каждую группу записей назовем, для простоты, веткой. База данных, содержащее данное дерево пусть называется tree.

У каждой ветки есть конечные записи - листья. Листья - это текстовые записи. Они лежат в другой базе - leaves. Они содержат заголовок, текст записи, время создания, время правки, автора, прочую информацию.


Вопрос. Как правильно связать листья и дерево? У меня два варианта:

1. Простой. В базе leaves добавить поле branch_id, которое будет указывать, какой ветке принадлежит запись.

2. Сложный. Создать еще одну базу со структурой один-ко-многим, в которой будет прописана связь branch_id -> leave_id. Ну, то есть в этой дополнительно базе будет указано, какой ветке какие записи принадлежат.

Какой вариант правильнее?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Дерево и листья: _http: // www . supersemena . ru
Да?

может быть, например, таким:
Для таких деревьев нормализация не нужна.
Разве что, от нечего делать.

дофигища лишнего гемора неизвестно ради чего.
 
  • Like
Реакции: KorP

KorP

Новичок
А я вот предлагаю уже одну тему какую-нить по поводу древовидных меню уже закрепить где-нить на видном месте, собрать в неё всем линки на маны и всем примеры что тут уже понаписали. Нельзя ж раз в неделю одно и тоже обсуждать :)
 

baev

‹°°¬•
Команда форума
А я вот предлагаю уже одну тему какую-нить по поводу древовидных меню уже закрепить где-нить на видном месте, собрать в неё всем линки на маны и всем примеры что тут уже понаписали. Нельзя ж раз в неделю одно и тоже обсуждать :)
— всё уже «закреплено» и «собрано»: http://phpclub.ru/faq/Tree
 

KorP

Новичок
— всё уже «закреплено» и «собрано»: http://phpclub.ru/faq/Tree
я имел ввиду закрепить на форуме на видном месте. я предполагаю что никто из вопрошающих по данному вопросу в фак не заглядывал (хорошо если просто знает о его существовании)
 

xintrea

Новичок
Вот почитал я предложенный FAQ и понял, что нужно 4 (!) таблицы.

1. Таблица веток (id + все поля веток)
2. Таблица дерева для веток (например NS)
3. Таблица листьев (id + все поля листьев, то есть все поля текстовых записей)
4. Таблица связи ветка-листья (один-ко-многим).

Как-то это слишком громоздко получается. Но если это правильно, то я буду закладываться на такую структуру. Это правильная структура?
 

Gremboloid

инженера Гр...
Если я правильно понял, то тебе необходимо:
База (1 штука)
Таблицы (2 штуки если лист принадлежит строго одной ветке и 3 штуки если один лист принадлежит нескольким веткам)
1. Дерево
2. Листья
3. Связь лист-ветки (один-ко-многим)
 
Сверху