Forum Webscript.Ru
Программирование => PHP => Тема начата: Vad от 02 Июня 2003, 16:50:10
-
Как лучше сделать систему обновления продукции в которой один и тот же продукт может иметь несколько модификаций. Например автомобиль одной и той же марки может различаться по объему двигателя, цвету и т.д. и соответственно цена будет тоже другая. Такой продукт необходимо выводить в виде таблицы. Причем необходимо реализвовать возможность заказа каждой модификации продукта отдельно.
Какие будут прдложения?
PS. Используя PHP+MySQL
-
Vad:
Причем необходимо реализвовать возможность заказа каждой модификации продукта отдельно
Это и есть ответ на твой вопрос :)
Автомобиль состоит из частей... части и надо хранить и комбинировать...
-
Я думал сделать это так
сделать отдельную таблицу - свойства в нее заносить все дополнительные свойства товара причем у каждой категории товара могут быть свои свойства.
Но а затем что значения свойств хранить в отдельной таблице или же можно их в общую таблицу товаров запихать все в одну ячейку массивом?
Объясните подробней как лучше? Мне нужна система обновления товаров не для конкретных товаров а такая чтобы она повозможности подходила под все товары.
-
Vad
Объясните подробней как лучше?
подробно тебе никто не объяснит, так как все зависит от задач которые тебе нужно решать (проще говоря, что в дальнейшем нужно делать с этими полями). Например твой вариант или же можно их в общую таблицу товаров запихать все в одну ячейку массивом?
вполне рабочий если с этими данными на уровне БД работать не надо.
но я бы делал 4 таблицы:
group - таблица описания категорий
(group_id - primary key,
... // остальные поля по желанию)
products - таблица описания товаров, содержит поля, общие для всех товаров поля. Например название, цена, краткое описание.
(product_id - primary key,
group_id - ИД категории которой принадлежит данный товар
... // остальные поля по желанию)
attributes - описание аттрибутов для каждой категории
(attr_id - primary key,
group_id - для какой категории этот аттрибут,
name - название аттрибута)
attribute_values - таблица значений дополнительных аттрибутов товаров
(attr_id - ИД аттрибута
product_id - ИД товара
value - значение аттрибута)
вариант может и громоздкий, но более функционален и универсален (ИМХО)
-
Я бы сделал так, если тот или иной контент автомобиля, например цвет будет содержать разные значения для всех автомобилей, то есть было бы примерно так[не надо придераться к ценам :) ]:
volvo = $1000
volvo = $1200
audi = $1000
audi = $1100
то тогда лучше сделать одну таблицу при условии, что в ней не будет больших полей, ничего больше varchar(255) для ускорения.
а если бы было:
volvo = $1000
volvo = $1200
audi = $2000
audi = $2200
то тогда эти поля можно вынести в отдельные таблицы и просто считать определенный цвет, машина будет стоить на $100, $200, $300 дороже, но это банально и на самом деле не так, так что на мой взгляд здесь актуален первый способ.
-
проще всего сделать так:
таблица "машины", таблица включающая в себя авто, но без
аттрибутов (т.е. без двигателя, цвета, итд),
car_id,name,price
таблица "цвета", таблица цветов и разницу в цене, если конечно все машины имеют четкую зависимость в цене от цвета...
color_id,name,price
таблица "двигатель", аналогично таблице "цвета"..
engine_id,name,price
и
продукты, совмещение, т.е.
id,name,car_id,color_id,engine_id
мне кажется так будет рациональнее, но, повторяю, если есть четкие зависимости в цене от модификации для всех товаров...
-
Последнии 2 варианта не универсальны. я же говорил что - Мне нужна система обновления товаров не для конкретных товаров а такая чтобы она повозможности подходила под все товары.
Поэтому выбирать надо наиболее универсальный способ.
Думаю сделать как предлагает Макс единственное хотя может быть подумаю и о массивах. Какие еще будут варианты?
-
Vad, универсальная?..
делай такую таблицу:
CREATE TABLE `trade` (`id` INT( 255 ) NOT NULL ,
`name` VARCHAR( 255 ) NOT NULL ,
`values` TEXT NOT NULL ,
`price` VARCHAR( 255 ) NOT NULL
);
в values пихай опции товара (например id другой таблицы через запятую)..
при выводе просто разделять будешь =)
тупо, потому что, не сделать нормальную выборку по опциям... зато универсально...
-
я...
INT( 255 )
это что-то новенькое ))))
очепятался?
-
Дело в том что не всегда цена отличается. Не в цене дело
Очень часто надо выводить товар в таком виде - http://www.stibetherm.gr/english/products/solar_systems_1.html . Как для таких товаров можно систему обновления сделать?
-
одна таблица с названием товвара и неизменяемыми параметрами...
другая таблица со всякими мелочами...
треться таблица с их совмещением...
=)
просто же сделать