| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |