|
Структура таблиц БД для хранения цепочек ответов к постам | ☑ | ||
---|---|---|---|---|
0
DirecTwiX
20.05.15
✎
13:29
|
Как хранить в БД сообщения пользователей, которые являются ответами на другое сообщение, чтобы потом было удобно осуществлять вывод этих цепочек? И как реализовать вывод?
Примеры: 4pda, habr, pikabu |
|||
1
degot
20.05.15
✎
14:05
|
гугли про нереляционные бд
|
|||
2
Fragster
гуру
20.05.15
✎
14:09
|
блин, всё никак не доходят руки до статьи на ИС про альтернативную иерархию, причем по которой соединения в запросе по "в нашей альтернативной иерархии" работает, да и в целом "в альтернативной иерархии" работает быстрее встроенного в платформе.
|
|||
3
МаксимМП23
20.05.15
✎
14:14
|
(0) Таблица с сообщениями. У таблицы реквизит "ОтветНа" ссылка на сообщение (например на таймстамп, если уникальны).
Если ОтветНа пустой, значит корневое сообщение. Иначе - ответ на конкретное сообщение. |
|||
4
Fragster
гуру
20.05.15
✎
14:17
|
(3) а теперь получи всю цепочку запросом ;)
|
|||
5
Лефмихалыч
20.05.15
✎
14:18
|
(0) гугли nested sets
|
|||
6
МаксимМП23
20.05.15
✎
14:25
|
(4) Нда, не совсем кошерно.
Ну тогда в справочник сохраняться. Там иерархия есть. |
|||
7
Fragster
гуру
20.05.15
✎
14:26
|
да, в (5) правильное название. еще есть materialized path, но там своих ограничений хватает
|
|||
8
DirecTwiX
20.05.15
✎
14:38
|
Всем спасибо, будем читать.
(6) Да справочник - это та же структура, что и в (3). Непонятно, как всю цепочку получить запросом. |
|||
9
Garykom
гуру
20.05.15
✎
15:00
|
Для реляционных таблиц самое простое это составной id
Т.е. длину id делаем побольше и при записи хитро заполняем упрощенный пример для ограничения в 3 уровня вложенности и кол-во собщений в уровне 100 1 пост 101 2 пост подчиненный 1 102 3 пост подчиненный 1 200 4 пост сам по себе 300 5 пост сам по себе ЗЫ лучше id делать простые по порядку и отдельно хранить табличку с подобными "кодами подчиненности" ЗЗЫ можно сделать быстро-работающе но много места-жруще через хранение в таблицах id всех родителей для каждого конечного поста |
|||
10
МаксимМП23
20.05.15
✎
15:10
|
(8) "В ИЕРАРХИИ" же
|
|||
11
qeos
20.05.15
✎
15:11
|
(9) составной id это неправильный путь..
100 1 пост 101 2 пост подч 1 102 3 пост подч 1 ххх? 11 пост подчинен 102 (0) самый верный - это как в (3).. реквизит "Владелец".. "как получить запросом?" -- рекурсионно гуглить "дерево в таблицах sql" например на хабре http://habrahabr.ru/post/43955/ |
|||
12
Fragster
гуру
20.05.15
✎
15:11
|
(9) это и есть materialized path
|
|||
13
qeos
20.05.15
✎
15:11
|
(10) а чо так тоже можно было? там чо 1с?
|
|||
14
Fragster
гуру
20.05.15
✎
15:15
|
(11) если больше писать - то верный способ Adjacency List (как в 1с), если больше читать - то верный способ Nested Sets, Materialized Path посередине
|
|||
15
Fragster
гуру
20.05.15
✎
15:16
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |