Автор Тема: Подскажите как лучше решить следующую задачу:  (Прочитано 5391 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Как лучше сделать систему обновления продукции в которой один и тот же продукт может иметь несколько модификаций. Например автомобиль одной и той же марки может различаться по объему двигателя, цвету и т.д. и соответственно цена будет тоже другая. Такой продукт необходимо выводить в виде таблицы. Причем необходимо реализвовать возможность заказа каждой модификации продукта отдельно.
Какие будут прдложения?
PS. Используя PHP+MySQL

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Цитировать
Vad:
Причем необходимо реализвовать возможность заказа каждой модификации продукта отдельно

Это и есть ответ на твой вопрос :)
Автомобиль состоит из частей... части и надо хранить и комбинировать...
AS IS...

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Я думал сделать это так
 сделать отдельную таблицу - свойства в нее заносить все дополнительные свойства товара причем у каждой категории товара могут быть свои свойства.
Но а затем что значения свойств хранить в отдельной таблице или же можно их в общую таблицу товаров запихать все в одну ячейку массивом?
Объясните подробней как лучше? Мне нужна система обновления товаров не для конкретных товаров а такая чтобы она повозможности подходила под все товары.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
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 - значение аттрибута)

вариант может и громоздкий, но более функционален и универсален (ИМХО)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Mаster

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 71
  • +0/-0
  • 0
    • Просмотр профиля
    • http://code.msk.ru/
Я бы сделал так, если тот или иной контент автомобиля, например цвет будет содержать разные значения для всех автомобилей, то есть было бы примерно так[не надо придераться к ценам :) ]:

volvo = $1000
volvo = $1200

audi = $1000
audi = $1100

то тогда лучше сделать одну таблицу при условии, что в ней не будет больших полей, ничего больше varchar(255) для ускорения.

а если бы было:

volvo = $1000
volvo = $1200

audi = $2000
audi = $2200

то тогда эти поля можно вынести в отдельные таблицы и просто считать определенный цвет, машина будет стоить на $100, $200, $300 дороже, но это банально и на самом деле не так, так что на мой взгляд здесь актуален первый способ.
Дурак учится на своих ошибках, умный на чужих.
умные учатся у дураков

Оффлайн я...

  • scum of the earth
  • Старожил
  • ****
  • Сообщений: 293
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.vlad.myths.ru
проще всего сделать так:
таблица "машины", таблица включающая в себя авто, но без
аттрибутов (т.е. без двигателя, цвета, итд),
car_id,name,price
таблица "цвета", таблица цветов и разницу в цене, если конечно все машины имеют четкую зависимость в цене от цвета...
color_id,name,price
таблица "двигатель", аналогично таблице "цвета"..
engine_id,name,price
и
продукты, совмещение, т.е.
id,name,car_id,color_id,engine_id

мне кажется так будет рациональнее, но, повторяю, если есть четкие зависимости в цене от модификации для всех товаров...
...вот такой я весёлый зверёк...
 Home page

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Последнии 2 варианта не универсальны. я же говорил что - Мне нужна система обновления товаров не для конкретных товаров а такая чтобы она повозможности подходила под все товары.
Поэтому выбирать надо наиболее универсальный способ.
Думаю сделать как предлагает Макс единственное хотя может быть подумаю и о массивах. Какие еще будут варианты?

Оффлайн я...

  • scum of the earth
  • Старожил
  • ****
  • Сообщений: 293
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.vlad.myths.ru
Vad, универсальная?..
делай такую таблицу:

CREATE TABLE 
`trade` (`idINT255 NOT NULL ,
`
nameVARCHAR255 NOT NULL ,
`
valuesTEXT NOT NULL ,
`
priceVARCHAR255 NOT NULL 
);

в values пихай опции товара (например id другой таблицы через запятую)..
при выводе просто разделять будешь =)
тупо, потому что, не сделать нормальную выборку по опциям... зато универсально...
...вот такой я весёлый зверёк...
 Home page

Оффлайн FILA

  • кендер
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 2
    • Просмотр профиля
я...
Цитировать
INT( 255 )

это что-то новенькое ))))
очепятался?
И вечный бой, покой нам только снится...

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Дело в том что не всегда цена отличается. Не в цене дело
Очень часто надо выводить товар в таком виде - http://www.stibetherm.gr/english/products/solar_systems_1.html . Как для таких товаров можно систему обновления сделать?

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
одна таблица с названием товвара и неизменяемыми параметрами...
другая таблица со всякими мелочами...
треться таблица с их совмещением...
=)
просто же сделать

 

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