Разделять ли содержимое объекта и данные по его расположению в иерархии?

Звучит наверное не совсем понятно, поэтому поясню:

Пусть у нас есть дерево комментариев (Nested Sets или еще что-то, в принципе не важно). Стоит ли выносить поля, не относящиеся напрямую к комментариям (lft, rgt, parent_id и т.д.) в отдельную таблицу БД? С одной стороны, мы избавляемся от привязки к конкретной структуре комментариев (всегда можно поменять NS на MP или еще что-то), а с другой — появляются сложности с объединением этих таблиц.
  • Вопрос задан
  • 2461 просмотр
Пригласить эксперта
Ответы на вопрос 2
MyraJKee
@MyraJKee
По моему вопрос неверно поставлен. Основой является дерево, а не комментарии. ИМХО, дерево лучше хранить отдельно. По вышеназванной причине и в дальнейшем, мало ли вы еще чего захотите присобачить, проще будет это сделать с чистым деревом, чем с непонятно чем. И сложностей с джойнами не должно быть никаких…
Ответ написан
Только для комментариев (или других однотипных объектов, объединённых в иерархию), имхо, не стоит, только безосновательно увеличит сложность — когда надо будет поменять структуру, тогда и поменяете, может вообще не понадобится, а может понадобится сделать одновременно несколько иерархий.

Другое дело, если в иерархию объединены разнородные объекты, или один объект может входить в разные иерархии — тут однозначно (если не стоит вопрос денормализации с целью увеличения производительности) объекты отдельно, иерархии отдельно, может ещё и метаданные имеет смысл вынести. А вообще для иерархий имеет смысл, имхо, посмотреть в сторону NoSQL.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы