Как спроектировать базу для хранения размера обуви в разных метриках?

Доброе время суток.
Думаю над проектом базы для отражения размера обуви.
Поясню есть несколько метрик размеров - Европа, US, Размеры отдельных производителей.
Тут подробно написано об этом

Задача стоит в том, что бы вывести:
1. Размер производителя - он указывается в товаре ссылкой на (3) таблицу размера
2. Размеры в других метриках

Структура пока получается такой:

1. Category - Таблица категории метрики - обувь, носки
id, title
2. Group - Таблица шапки метрики
id, category_id, title
3. Items - Таблица размера
id, group_id, title (название размера 41,42,43 и тп), size (размер стельки)

SQL запрос для вывода других размеров по шапке из той же категории будет довольно тяжелый.
select
i1.size,
g1.title,
i1.title,
g2.title,
i2.title,
i2.size
from size_items as i1
left join size_groups as g1 on g1.id = i1.size_group_id
left join size_groups as g2 on g2.size_category_id = g1.size_category_id and g2.id <> g1.id
left join size_items as i2 on i2.id = (
	select id FROM size_items WHERE size_group_id = g2.id and size >= i1.size and size <= i1.size+7.5 ORDER BY size ASC LIMIT 1
)
where i1.id = 9


Как можно спроектировать базу, что бы получится более лёгкий запрос?
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 1
kimono
@kimono
Web developer
Возьмите 1 см за базовую единицу. Таблицу метрик можно создать так:
id | name | multi | add
1 | Британский размер | A | B 
2 | Европейский размер | C | D
3 | Американский мужской размер | E | F
4 | Мексиканские размеры | G | H

Далее всё просто: Британский размер = 1 см * A + B и т.д.
Либо, если хотите сделать полную зависимость метрик друг от друга, добавьте поле parent_id (сложнее, так как в этом случае без рекурсии не обойтись).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы