ФорумПрограммированиеPHP для идиотов → Проектирование интернет магазина.

Проектирование интернет магазина.

  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 19 сентября 2011 г. 13:01

    Пишу сейчас интернет магазин, хочется сделать его как можно более универсальным.

    Возникла дилемма с характеристиками товаров.

    Магазин будет продавать различные товары, с разными характеристиками. Характеристик очень много.

    Естественно писать забивать вручную характеристики для каждого товара долго.
    По этому я решил сделать шаблоны товаров.
    То есть, создаем шаблон характеристик например "Компьютер"
    Туда добавляем категории характеристик:
    1) Процессор
    2) Память
    3) Экран

    Потом в каждую категорию добавляем характеристику. Получается так:
    Процессор
     Тип процессора
     Код процессора
     Количество ядер процессора
    Память
     Размер оперативной памяти
     Тип памяти
    Экран
    Размер экрана
    Разрешение экрана

    Теперь при создании товара, мы указываем к какому типу товара он принадлежит, и у него сразу появляются все поля для заполнения характеристик.

    Ну это все понятно. Теперь вопрос как это все программно организовать?
    Шаблоны я организовал так:
    Есть 5 таблиц:
    1) Шаблоны (список всех возможных шаблонов)
    2) Характеристики (список вообще всех характеристик)
    3) Категории характеристик (тоже все возможные)
    4) Связь категорий характеристик с шаблонами
    5) Связь связи категорий характеристик с шаблонами с характеристиками.

    См. схему в приложении.

    То есть таким образом зная шаблон, мы 1 запросом достаем все категории характеристик принадлежащие ему, JOIN ом подтягивая названия этих категорий.
    JOIN ом подтягиваем все характеристики под каждую категорию и так же JOIN ом подтягиваем названия этих характеристик. Не слишком много джоинов?



    Такую же схему хочу сделать и с товарами.  Здесь вместо шаблона "Компьютер" будет товар.
    Какую гибкость это нам дает. Во первых мы не дублируем названия категорий и характеристик, и везде они называются одинаково и с одними и теми же размерностями.Во вторых, поправив название только в одном месте оно поправится везде.
    В третьих если нужно организовать поик по характеристикам или сравнить товар по характеристикам, то мы точно можем определить что и с чем сравнивать.

    Вопрос, на сколько адекватная схема? Как делается в других системах, и как бы сделали лично вы?


    1. (472)
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 19 сентября 2011 г. 13:36, спустя 35 минут 11 секунд

    К.О.: глянь мадженту. А есть смысл писать свой магаз вообще? Это ж столько возни с payment/shipping шлюзами
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 19 сентября 2011 г. 13:49, спустя 12 минут 48 секунд

    Так как я не знаю ни одной CMS на должном уровне, то мне легче написать свою чем разбираться и потом понять что система мне не подходит. У меня не будет онлайн оплат, зато у меня куча нетривиальных задач, типа синхронизации товаров из своеобразных CVS файлов поставщиков.
    Ну и самое главное, это опыт =)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 сентября 2011 г. 14:41, спустя 52 минуты 49 секунд

    Так как я не знаю ни одной CMS на должном уровне

    ))

    magento, не?)
    Сапожник без сапог
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 19 сентября 2011 г. 16:03, спустя 1 час 21 минуту 8 секунд

    да уверен, что "Магенто - ДА!", но реально профессор ведь хочет опыт получить.
    Правда все равно раз уж так сильно захотелось писать своё, то нафига совокуплять свой же моск надуманной универсальностью?!
    Таких "универсальных" уже горы, и если они реально функциональны и более-менее безглючны, то монструозны и требовательны к ресурсам (взять ту же Магенто).
    Да и не закончишь сам ты её никогда.
    Проще писать менее универсальную, зато более быстро и с меньшим геморроем. А для второго (пятого-десятого) магазина с несколько иным, но "персональным" функционалом ты без проблем сможешь быстро допилить уже имеющийся у тебя движек, ибо ты будешь его знать как 2х2=3,745кг/ам

    Ну а по твоей схеме, то хз. Если тебе так будет удобно делать выборку, то почему бы и нет. Один хрен как именно ты все разместишь в базе, главное чтоб выборка была быстрой и логичной. А размер базы и её визуальное оформление по большой мере роли много не играет. К примеру, можно обе таблицы связи объединить в одну, просто добавив некий флаг, указывающий либо на то, что это категория, либо же указывающая на ID "родительской" категории. Получится меньше таблиц, но в то же время больше будет геморроя при выборке.
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 19 сентября 2011 г. 21:38, спустя 5 часов 35 минут 41 секунду

    Тебе нужен TWIG, там как раз принцип наследования идет
  • qpayct

    Сообщения: 54 Репутация: N Группа: Адекваты

    Spritz 11 октября 2011 г. 15:07, спустя 21 день 17 часов 29 минут

    так а нахуя шаблоны в БД писать? формируй по запросу пользователя статические страницы, потом проверяешь и даёшь добро или обьясняешь что не подходит
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 20 октября 2011 г. 20:00, спустя 9 дней 4 часа 52 минуты

    Пишу сейчас интернет магазин, хочется сделать его как можно более универсальным

    я думаю что магазин должен в первую очередь продавать товары.
    он может быть охуенно выебнутым с точки зрения архитектуры и кода, но если он не продаёт - нахер он нужен?
    что нужно чтоб продать товар?
    1. наличие страницы товара в ПС на нормальной позиции (первая страница)
    2. удобство и наглядность представления товара на странице
    3. лёгкость заказа
    4. обратная связь с покупателем в режиме диалога

    То есть, создаем шаблон характеристик например "Компьютер"
    Туда добавляем категории характеристик:
    1) Процессор
    2) Память
    3) Экран

    хуярь всю инфу в одно текстовое поле
    Спустя 162 сек.
    Весь цимес современного рынка интернет-магазинов, что вот привезли товар и его надо продавать. То есть два-три дня на его выкладывание, не больше. И тут выясняется, что таблицы не запилены и джойны не проставлены, и вообще архитектура ебанутая, и дошли до такого момента что всё слишком сложно и становится раком.
    В общем, перфекционизм - зло.
    не всё полезно, что в swap полезло
  • toteshefruct

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 13 августа 2012 г. 12:52, спустя 297 дней 16 часов 51 минуту


    Пишу сейчас интернет магазин, хочется сделать его как можно более универсальным

    я думаю что магазин должен в первую очередь продавать товары.
    он может быть охуенно выебнутым с точки зрения архитектуры и кода, но если он не продаёт - нахер он нужен?
    что нужно чтоб продать товар?
    1. наличие страницы товара в ПС на нормальной позиции (первая страница)
    2. удобство и наглядность представления товара на странице
    3. лёгкость заказа
    4. обратная связь с покупателем в режиме диалога

    То есть, создаем шаблон характеристик например "Компьютер"
    Туда добавляем категории характеристик:
    1) Процессор
    2) Память
    3) Экран

    хуярь всю инфу в одно текстовое поле
    Спустя 162 сек.
    Весь цимес современного рынка интернет-магазинов, что вот привезли товар и его надо продавать. То есть два-три дня на его выкладывание, не больше. И тут выясняется, что таблицы не запилены и джойны не проставлены, и вообще архитектура ебанутая, и дошли до такого момента что всё слишком сложно и становится раком.
    В общем, перфекционизм - зло.


    Если не дать возможности покупателю самостоятельно находить по ключевым параметрам товар, отсеивая ненужные, то либо он забьет и пойдет к конкрентам либо в усмерть задолбает менеджера по телефону или в чате (ака онлайн консультант). Знакомый работает в компьютерных технологиях - так на него жалко смотреть под вечер после 2-3 десятков клиентов которые пришли чего-то купить нового и нужного но без понятия что и какое им нужно… Так что ЦМС может сколь угодно быстро давать возможность выкладывать товар (и приумножать его количество) но без удобства использования - поиска он не нужен. Тем более что движок действительно не обязательно должен принимать принимать платежи\печатать накладную - это всего лишь фичи, главное что требуется от интернет магазина это удобно представить информацию о товарах и оперативно дать ответ на возникнувший вопрос (без похода в гугл\яндекс). А заказ можно оформить и по телефону или просто кнопкой с перенаправлением на форму заказа с последующим ожиданием звоночка от менеджера (главное чтобы последний не оказался алконавтом\соней который реагирует несколько часов)…
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 15 августа 2012 г. 15:09, спустя 2 дня 2 часа 16 минут

    че это за тема вообще такая?
  • toteshefruct

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 21 августа 2012 г. 11:45, спустя 5 дней 20 часов 36 минут

    Это тема как спроектировать интернет-магазин…кстати на счет звоночков менеджеру можно ж использовать онлайн-консультант как Живосайт…типа…зашел на сайт..появилось окошко…где пользователь может спросить что-либо-нибудь!затягивает некоторых это..но я это так..к слову;)
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 21 августа 2012 г. 12:55, спустя 1 час 9 минут 26 секунд




    ..


    ..

    ..

    Высокоуровневое абстрактное говно
  • Winston

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 18 сентября 2012 г. 19:25, спустя 28 дней 6 часов 30 минут

    Походу буду археологом, но мб автор еще увидит топик

    Если ты не думаешь писать сортировки и поиск по характеристикам и думаешь реализовать все как можно быстрее и проще
    Как уже писал master, храни все в TEXT, к слову, посмотри магазин Арт.Лебедева - там примерно так и реализовали, кстате ЧПУ удобный у него
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 18 сентября 2012 г. 19:28, спустя 2 минуты 52 секунды

    Winston, а ты кто ваще? :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 18 сентября 2012 г. 20:02, спустя 33 минуты 59 секунд

    Если ты не думаешь писать сортировки и поиск по характеристикам

    сегодня не думаешь а завтра как подумаешь и пиздец

Пожалуйста, авторизуйтесь, чтобы написать комментарий!