Оптимальная настройка для MySQL DB для данных переменной глубины - PullRequest
1 голос
/ 17 сентября 2011

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

Я знаю, что это может сбивать с толку, так что вот пример того, что я имею в виду. Допустим, вы хотели сохранить мужской род для группы людей. Не все люди могут проследить это до одной и той же точки. Person1 может быть в состоянии отследить его до своего деда, person2 - до своего прадеда, а person3 - до своего прапрапрадеда. Я не думаю, что имеет смысл иметь таблицу для каждого возможного случая большой степени.

Мое решение состоит в том, чтобы иметь одну таблицу "папа", которая хранит идентификатор своего родителя или ноль, как только достигнут конец дерева. Однако единственный способ, который я нашел для построения полного дерева, - это иметь один запрос для каждого родительского запроса, пока не будет найден нулевой родитель.

У кого-нибудь есть лучшие решения?

1 Ответ

0 голосов
/ 17 сентября 2011

Мое предложение было бы не отслеживать дедов в базе данных. Типичная строка должна выглядеть так:

person_id, person_name, bio_father_person_id, биологический_отличный_идентификатор_пользователя и т.д ...

Тогда вы можете вычислить дедов на стороне приложения.

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

Но не устанавливайте денормализованную структуру, пока не поймете, где будет нагрузка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...