& ldquo; Переменные недоступны & rdquo; при отладке в WebStorm

Если вам нужна быстрая скорость чтения, лучшим вариантом является использование таблицы закрытия. Таблица закрытия содержит строку для каждой пары предков / потомков. Итак, в вашем примере таблица закрытия будет выглядеть как

ancestor | descendant | depth
0        | 0          | 0
0        | 19         | 1
0        | 20         | 2
0        | 21         | 3
0        | 22         | 4
19       | 19         | 0
19       | 20         | 1
19       | 21         | 3
19       | 22         | 4
20       | 20         | 0
20       | 21         | 1
20       | 22         | 2
21       | 21         | 0
21       | 22         | 1
22       | 22         | 0

. После того, как у вас есть эта таблица, иерархические запросы становятся очень легкими и быстрыми. Чтобы получить всех потомков категории 20:

SELECT cat.* FROM categories_closure AS cl
INNER JOIN categories AS cat ON cat.id = cl.descendant
WHERE cl.ancestor = 20 AND cl.depth > 0

Конечно, существует большой недостаток, когда вы используете денормализованные данные, подобные этому. Вам нужно поддерживать таблицу закрытия рядом с таблицей категорий. Лучший способ, вероятно, использовать триггеры, но несколько сложно правильно отслеживать вставки / обновления / удаления для таблиц закрытия.

Редактирование: см. Вопрос Какие существуют варианты хранения иерархических данных в реляционной базе данных?

g0] для получения дополнительных опций. Существуют различные оптимальные решения для разных ситуаций.

0
задан LazyOne 3 March 2019 в 15:23
поделиться

1 ответ

Переменные вид заполняется только тогда, когда выполнение приостановлено на точке останова. См. https://blog.jetbrains.com/webstorm/2018/01/how-to-debug-with-webstorm/

.
0
ответ дан lena 3 March 2019 в 15:23
поделиться
Другие вопросы по тегам:

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