Общие > Базы данных
Вопрос по проектированию
secam:
Господа разработчики и проектировщики,
пишу интернет магаизн компьютерного железа,
из готовых решений ничего достойного найти не удалось, изобретаю свой "велосипед" :)
Perl + MySQL 4.1
А вопрос вот в чем:
Известно, что компьютерное железо бывает очень разным, HDD и Монитор например.
И то и другое, с точки зрения магазина - это товар.
Но монитор может иметь такие параметры, как размер экрана, рабочие разрешения, частоты развертки и т.д.
А HDD совсем другие параметры: Емкость, скорость вращения диска и т.д.
Подскажите, как спроектировать таблицы, так,чтобы возможно было осуществлять поиск по этим параметрам оборудования, например найти монитор с частотой развертки более 100Гц и т.д.
И второе условие - возможность добавить новый тип оборудования, не переделывая всю базу.
Из моих идей, есть только вариант определить список типов оборудования и для каждого типа создать свою таблицу с набором параметров. А в таблице товаров давать тип из списка и ID из соответствующей таблицы с параметрами.
Но может есть способ удобнее ?
Forza:
Не очень понял твой вариант. Но могу предложить нижеследующее (нечто подобное я реализовывал совсем недавно в похожей ситуации).
1) Заводишь таблицу "Тип оборудования":
ID типа оборудования (primary key)
Название типа оборудования.
2) Заводишь таблицу "Товары":
ID товара (primary key)
ID типа оборудования
Название товара
Ещё какие-либо общие для всех товаров параметры
3) Таблица "Параметры":
ID параметра (primary key)
ID типа оборудования, к которому параметр относится
Название параметра
Может быть, единица измерения
4) Таблица "Значения параметров для товаров":
ID параметра
ID товара
значение параметра
Если есть вопросы по такой структуре задавай. На мой взгляд, это наиболее гибкий и универсальный вариант: можно добавлять что угодно (типы оборудования, типы параметров) без изменения структуры базы и даже самого скрипта!
Зато запросы будут более длинные.
Макс:
http://phpclub.ru/talk/showthread.php?s=&threadid=44776&
secam:
Точно!
Спасибо.
Меня видимо просто заклинило немножко. :)
secam:
Еще, раз уж я начал спрашивать...
как быть с типом параметров ?
Ведь они могут быть как строковые, так и числовые.
Можно конечно числа сделать строками, но тогда пропадает возможность сравнения больше, меньше.
Может это можно обойти ?
Навигация
Перейти к полной версии