Форум сайта python.su
Аналогичный вопрос обсуждался тут, но мне надо расширить решение:
Есть реализация схемы “товар” -> “параметр” -> “значение”:
tovar
id tovar
1 computer
2 player
3 phone
tovar_param
id tovar_id param
1 3 color
2 1 cpu
3 3 screen
4 3 color
values
id param_id value
1 1(color) blue
2 2(cpu) 2GHz
3 3(screen) 3“
4 4(color) red
Со стороны интерфейса такая схема предполагает ввод значение параметра ручками в текстовое поле.
Вопрос:
1. как к существующей схеме ”прикрутить“ еще параметры, для которых есть ограниченный набор значений и чтобы предоставить пользователю выбрать его из списка.
например добавить параметр ”производитель" со значениями: samsung, sony, iriver, apple
2. или как изменить текущую схему, чтобы получить тот же результат.
Как вариант создать словари значений для параметров:
param value
vendor samsung
vendor sony
vendor iriver
vendor apple
Но это решает только половину проблемы, а именно проблема ввода данных - смогу предоставить пользователю список возможных значений. Остается проблема хранения, получается избыточность данных: в таблицу values буду попадать дублирующиеся строковые данные, а не айдишники
Спасибо.
Офлайн
Для tovar_param нужно еще 2 поле - тип и откуда брать значения подстановки (отдельные таблицы).
В зависимости от типа, из соответствующей таблицы формируем список для выбора и в таблицу values записываем ключи выбранных значений.
У меня в одном приложении есть доп. возможности для формирования списка выбора: перечень полей, форматирование, условия отбора и пр.
Офлайн
LexanderВ таком случае в поле value таблицы values будут вперемешку и конечные значения параметров, и айдишники ?
Для tovar_param нужно еще 2 поле - тип и откуда брать значения подстановки (отдельные таблицы).
В зависимости от типа, из соответствующей таблицы формируем список для выбора и в таблицу values записываем ключи выбранных значений.
Офлайн
fanat1kНу, собственно, к этому ведь и стремились - записывать ID и уменьшить объем таблиц, не так ли? :)
В таком случае в поле value таблицы values будут вперемешку и конечные значения параметров, и айдишники ?
Офлайн
Спасибо за помощь.
Еще не реализовал, но думаю проблем возникнуть не должно.
Офлайн