2013-05-18 2 views
0

Каждый пользователь говорит, что 3 из GROUP_A, 10 GROUP_B за GROUP_A и 20 GROUP_C на GROUP_B. И каждый из 20 GROUP_C включает множество вложений/удалений ... И каждая часть данных уникальна для друг друга для всех групп/пользователей.Иерархическая структура MySQL

Я не эксперт, но я провел исследования, но на данный момент это все теоретические, и я не уверен в опыте с реализацией. Я думаю, что мои варианты - это что-то вроде «списков смежности» или «вложенных наборов»?

Любое руководство в правильном направлении было бы очень оценено!

(Я отправил это на DBA stackexchange тоже, но я бы очень признателен, если бы я мог получить больше мнений и помощи от сообщества!)

Я знаю, что тривиальное решение только иметь простые таблицы с внешними ключами к родительский «контейнер», но я думаю о нем в долгосрочной перспективе, если есть миллион пользователей или около того.

+1

Исправлено ли количество уровней (A, B, C)? – Joni

+0

Я бы предложил списки смежности. – gpicchiarelli

+1

@Joni, да. – Stylex

ответ

2

Я знаю, что тривиальное решение состоит в том, чтобы иметь простые таблицы с внешними ключами для родительского контейнера, но я думаю об этом в долгосрочной перспективе, если есть миллион пользователей или около того.

Я бы выбрал именно этот подход. Пока количество уровней иерархии остается фиксированным, результирующая схема, вероятно, будет хорошо масштабироваться , потому что так тривиально. Необычные структуры таблиц и сложные запросы могут работать достаточно хорошо для небольших наборов данных, но для больших объемов данных простые структуры будут работать лучше всего.

Было бы намного сложнее, если бы количество рычагов могло меняться. Если вы хотите быть готовым к таким случаям, вы можете разработать другой подход, но это, вероятно, ухудшится, если объем данных будет возрастать.

Смежные вопросы