Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Дано: упрощенная база данных интернет-магазина.
Вопрос: верно ли составлена структура БД?
Найти: единый алгоритм объединения всех таблиц для выборки различных результатов.
Описание БД.
Для магазина существуют различные профили, внутри которых содержатся разделы магазина. Каждый раздел может принадлежать только одному профилю. Так же в магазине есть список таблиц размеров (например: размеры для Европы, США и т. п.). Каждый товар может принадлежать только одному разделу и только одной таблице размеров. Каждый цвет товара может принадлежать только одному товару. Для каждого цвета есть доступные размеры товара, которые принадлежат той же таблице размера, что и сам товар. Каждый объект можно отключить (поле SWITCH).
Структура базы данных:
Проблема состоит в том, что при запросе различных результатов необходимо заново составлять объединения для всех таблиц. Основная задача: существует ли какой-то уникальный алгоритм объединения таблиц, которые со связями представлены в виде графа?
Объясняю на примерах.
Текущая задача. Выбрать одним запросом все товары из заданной категории, для каждого товара подсчитать количество доступных цветов. Учитывать только все включенные элементы.
Предлагаю на рассмотрение такое решение:
Неактивен
Логично начинать обход с той таблицы, которая выдает наименьшее кол-во записей при наложении условий.
Сначала ваш запрос попадает в оптимизатор, который строит план выполнения запроса, исходя из правила, указанного выше. План выполнения можно посмотреть с помощью команды EXPLAIN. Он может и не совпадать с тем порядком объединения таблиц, который вы указали в запросе. Для указания нужного вам порядка объединения таблиц нужно использовать STRAIGHT_JOIN, см http://dev.mysql.com/doc/refman/5.0/en/join.html
Неактивен
vasya написал:
Сначала ваш запрос попадает в оптимизатор, который строит план выполнения запроса, исходя из правила, указанного выше.
Вы имеете в виду теорию графов, обход вершин по мере удаленности?
Неактивен
С теорией графоф не знаком.
Я имею в виду следующее.
Неактивен
Страниц: 1