Как мне создать эту настроенную модель базы данных электронной коммерции?

0

Я создаю сайт электронной коммерции с нуля и должен создать специальную страницу конфигурации продукта.

Это только 1 тип продукта, но он настраивается на нескольких уровнях:

  • Цвет (около 4 различных опций). Значение - VARCHAR.
  • Материал (около 10 различных опций). Значение - VARCHAR.
  • Размер (около 30 различных опций). Имеет 2 значения, столбец ширины и столбец высоты.
  • Готово (около 20 различных опций). Значение - VARCHAR.
  • Другие варианты VARCHAR и т.д.

Мой вопрос в том, что бы это выглядело в типичной базе данных MySQL. У меня есть таблица для каждого типа опций или только одна таблица, и как-то дайте ей достаточно столбцов и сохраните все параметры? Мне нужно будет хранить заказы и иметь возможность хранить информацию для заказа в таблице.

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

Любая помощь приветствуется!

  • 0
    "Как ты должен делать мою работу для меня?"
  • 0
    Это для стороннего проекта, почему вы пришли сюда, если быть смешным? Это ресурс программиста.
Показать ещё 1 комментарий
Теги:
database
database-design
zend-framework

3 ответа

1
Лучший ответ

Я предлагаю вам перейти с одной главной таблицей со всей информацией о продукте и множеством таблиц поиска, которая соединяется с главной таблицей.

Он должен выглядеть так:

Product_table:
   ID primary key,
   ColorInt int foreign key lkp_Color_table.ID,
   Material_int foreign key lkp_Material_table.ID,
   // snip the rest

И вот таблица поиска:

lkp_color_table:
   ID primary key,
   ColorStr varchar,
   description varchar

lkp_Material_table:
   ID primary key,
   MaterialStr varchar,
   description varchar

Product_table может выглядеть так:

ID||ColorInt||Material
1 ||1       ||1
2 ||1       ||2

В то время как lkp_color_table может выглядеть так:

ID||colorstr||description
1 ||red     ||red color
2 ||blue    ||blue color 

Обратите внимание, что lkp_color_table может содержать неиспользованный color, то же самое касается других таблиц поиска. Поэтому, если у вас есть 30 возможных цветов, вам просто нужно заполнить lkp_color_table 30 элементами и т.д.

Нет необходимости создавать отдельный Product_id для каждой комбинации цветовых материалов, вам просто нужно создать Product_id, если вы его используете.

  • 0
    Спасибо! Вопрос: Если в таблице продуктов я хочу хранить обычные продукты без конфигурации, как я могу отличить это от моего конфигурируемого продукта ... просто оставьте colorint_int и materialint_int пустыми?
  • 0
    Да, вы можете оставить его пустым, но УБЕДИТЕСЬ, что при создании таблицы столбец не будет ненулевым
Показать ещё 8 комментариев
1

2 + N таблицы:

  • Продукты (каждый отдельный продукт в каталоге имеет запись здесь
  • SpecialKindOfProduct (настраиваемый тип продукта, product_id и внешние ключи для поиска в lookup tables (color_id, size_id и т.д.)
  • N Таблицы поиска (цвета, размеры и т.д.)

Когда вы добавите второй тип настраиваемого продукта в будущем, вы просто создадите AnotherSpecialKindOfProduct.

Надеюсь, что это достаточно ясно, чтобы следовать.

Главное преимущество заключается в том, что все ваши продукты имеют общие атрибуты (столбцы "Продукты" ), но могут также иметь расширенные атрибуты.

Вы можете легко выбрать все необходимое, используя LEFT JOINing Products для SpecialKindOfProduct и т.д.

  • 0
    это здорово, очень легко понять. Спасибо!
  • 0
    Затем проголосуйте и / или примите это, это то, что заставляет мир SO вращаться.
Показать ещё 5 комментариев
0

Я бы сказал, что вам нужно:

OrderTable (OrderID, CustomerID, дата, цена, отправка,...)

OrderProductTable (OrderID, ProductID, количество)

ProductTable (ProductID, StandardBit, ColorID, Option2ID,..., OptionNID); StandardBit - знать, является ли продукт стандартным или настраиваемым.

CustomerTable (CustomerID,...)

Отгрузка()

OptionTable для каждой настраиваемой опции (OptionID, Описание).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню