Общие > Базы данных

Вопрос по проектированию

(1/2) > >>

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:
Еще, раз уж я начал спрашивать...

как быть с типом параметров ?
Ведь они могут быть как строковые, так и числовые.
Можно конечно числа сделать строками, но тогда пропадает возможность сравнения больше, меньше.
Может это можно обойти ?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии