Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > [Деревья] вынести parent_id=0 в отдельную таблицу


Автор: patap 7.4.2011, 10:16
Всем привет. 
Я на ранней стадии разработки проекта. Нужен совет, по такому вот вопросу:

1. Данные будут храниться в дереве. (список смежности: id - parent_id)
2. Каждый корневой элемент, с parent_id равным 0, будет иметь специальные поля. В зависимости от значения в этих полях, будет определяться поведение всех потомков, данного корневого элемента.
3. Для потомков специальные поля не нужны

Вопрос: стоит ли выносить корневые (parent_id = 0) в отдельную таблицу? или же пуще оставить все в одной таблице и дублировать значения этих спец. полей для всех строк.

Вот некоторые примеры таких спец. полей:

Корневой элемент - может иметь статус: общий/личный. Если статус общий - то все потомки будут доступны всем юзерам.
Корневой элемент - может состоять в группе, соответственно все потомки, тоже в этой группе
Нужно хранить id юзера, который начал ветку, при чем должна быть возможность получать имя этого юзера из любого потомка

При такой архитектуре - нужно будет каждый раз джойнить таблицы с корневыми элементами и потомками. 
Стоит ли выбирать этот путь? Или же все свести в одну таблицу и дублирование данных(т.к. потомки не могут иметь отличных значение от значение корневых элементов по этим спец. полям) будет оправданным?

Также возможно в будущем будут добавленны новые свойства для корневых элементов.

Автор: patap 7.4.2011, 10:42
глупости написал.

Думаю будет правильно создать отдельную таблицу с опциями для корневых элементов, со связью 1 к 1 с таблицей в которой хранится дерево. И потом проверять значения этой таблицы.

типа такого что-то

[root_options]
root_id   status   group_id    opt_1 ... opt_n

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)