Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Какую структуру базы выбрать? Посоветуйте... / 4 сообщений из 4, страница 1 из 1
23.08.2009, 22:01
    #36158975
Sebastian Pereiro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какую структуру базы выбрать? Посоветуйте...
Необходимо создать дерево каталогов в SQL. У каждого юзера свое дерево и это дерево может быть любой степени вложенности. Существует 2 вида юзеров: user и vip (назовем их так). User может иметь, к примеру, дерево с 50 элементами. Vip – c 1000 элементов. Количество userов может быть несколько тысяч. Количество vip – от силы 2000-3000.
И так вижу 3 варианта решения:
1) табличка по принципу смежных вершин (Adjacency List).
Табличка содержит столбцы: со столбцами id записи, родительский id (id папки в которой находится запись), ну может быть еще уровень. Решение простое, но как говорят знающие люди – имеет массу узких мест.
Плюсы: простота реализации; добаление, удаление и перемещение одного элемента не приводит к изменению других элементов (почти).
Минусы: сложные запросы, если надо выбрать всех потомков одного родителя и т.д.
2) таблица по принципу вложенных множеств (Nested Sets http://habrahabr.ru/blogs/development/46659/). Табличка содержит столбцы: id записи, уровень (на котором находится запись), правый ключ, левый ключ.
Плюсы: соответственно запросы простые.
Минусы: изменение одного элемента приводит к переписи почти всех ключей последующих элементов – в результате наверняка дикие тормоза.
3) возможно мое изобретение – таблица по принципу вложенных множеств, но ключи идут не подряд, а выделяются промежутки значений ключей для каждого пользователя.
Т.к. у нас для простого юзера есть ограничение на 50 элементов – выделяем каждому по 100 ключей. Т.е. 1-й юзер – ключи от 1 до 100, 2-й юзер – ключи от 101 до 200 и т.д. Для vip будет другая таблица, т.к. у нас ограничение на 1000 элементов, то выделяем для каждого випа диапазон ключей в 2000 ключей. Т.е. для 1-го випа – ключи от 1 до 2000, для 2-го випа – от 2001 до 4000 и т.д.
Плюсы: простые запросы; изменение одного элемента не влияет на ключи элементов других юзеров – следовательно минимум тормозов.
Минус: заморочки с распределением диапазонов ключей.
Я что-то пропустил? Плюсы-минусы?
Хотел бы услышать мнение опытных людей – какой вариант лучше? Может что-то предложите свое?
...
Рейтинг: 0 / 0
23.08.2009, 22:29
    #36158996
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какую структуру базы выбрать? Посоветуйте...
Вы же не думаете, что первый, кто об этом задумался ? Тема иерархии уже многократно обсуждалась на форуме. Рекомендую начать отсюда .
...
Рейтинг: 0 / 0
26.08.2009, 22:30
    #36164950
TEMHOTA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какую структуру базы выбрать? Посоветуйте...
Лучше - универсальную :
http://flexiobjdb.narod.ru/
...
Рейтинг: 0 / 0
27.08.2009, 17:07
    #36166675
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какую структуру базы выбрать? Посоветуйте...
Модераторы, мочите спамбота
ЗЫ. Это сообщение тоже сотрите.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Какую структуру базы выбрать? Посоветуйте... / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]