|
|
|
| Я некоторое время размышлял о тм, как лучше организовывать иерархические структуры в MySQL.
1) Структура со ссылкой на родителя не удобна для многих запросов.
2) Структуры с избыточными данными увеличивают риск возникновения несогласованности в таблице
Самое лучшее, что я на сегодня придумал - это структура с диапазонами.
Суть в том, что каждому элементу присваивается некий условный диапазон (FROM, TILL) ,корневой элемент имеет диапазон от нуля до максимума целых чисел.
Положим, у каждого элемента не предполагается больше сотни потомков, тогда элементы второго уровня в полях FROM и TILL получают диапазоны в сто крат меньшие.
Элементы 3-го уровня получают диапазоны ещё в 100 крат меньшие и располагаются внутри диапазона своего родителя итд.
При такой структуре как расширение дерева (добавление новых веток), так и запросы по выборке из веток сильно упрощаются (так по крайней мере мне кажется).
Давайте, в этой теме обсудим это представление иерархий.
У кого есть аргументы за и против (какие запросы непонятно как записать) пишите сюда. | |
|
|
|
|
|
|
|
для: Eugene77
(16.08.2010 в 17:17)
| | априорные количественные ограничения режут идею на корню.
Устранение таковых автоматически приводит структуру к формату Nested Sets. | |
|
|
|
|
|
|
|
для: Trianon
(16.08.2010 в 17:50)
| | Часто могут встречаться иерархии довольно скромного размера:
1) разделы сайтов и форумов
2) гениалогические деревья
3) рубрификаторы
Для них количественные ограничения не жмут.
Поэтому не хочется городить огород из Nested Sets
Или вы считаете, что лучше воспользоваться готовым классом, чем изобретать свой? | |
|
|
|
|
|
|
|
для: Eugene77
(16.08.2010 в 19:30)
| | >Или вы считаете, что лучше воспользоваться готовым классом, чем изобретать свой?
Отнюдь. Придумать и реализовать что-нибудь самостоятельно, с моей точки зрения - завсегда полезно. Даже если в стол. | |
|
|
|