2013-10-03 6 views
0

Я создал (и в основном закончил) корзину покупок и магазин, используя php, mysql и paypal. Есть одна вещь, которая беспокоит меня. Я неоднократно читал, что его просто плохая форма для хранения токенизированных данных в столбце mysql, но я не знаю, как еще справиться с этой ситуацией.хранение переменного объема данных в базе данных

Я разрешаю администратору добавлять новые продукты, а затем устанавливать дополнительные параметры выбора пользователя для продукта. Например, они могут добавить продукт под названием «телефон», а затем добавить параметр «цвет» с принятыми вариантами «черный, белый, красный, серый». Они также могут продавать бумагу формата А4 без параметров конфигурации и пару туфель с настройками конфигурации ALOT (размер обуви может иметь выбор от 4 до 13, например, в дамах и мужских размерах).

Потому что я не знаю, сколько вариантов у продукта будет, и я не хочу применять жесткий предел. В настоящее время у меня нет столбцов для «option1», «option2» и т. Д., Вместо этого у меня просто есть " option_data ", который выглядит примерно так:" color | red, black, white, green # memory size | 8gb, 16gb, 32gb ", и я взорвался на #, чтобы получить разные варианты и на | получить имя опции и возможные данные и, наконец, разделить данные на, чтобы получить отдельные параметры. мой магазин затем разбирает все это и генерирует выпадающие таблицы для пользователя, чтобы выбрать из и т. д.

Так что, если хранить данные, подобные этому, серьезно нахмурились и что я не знаю, сколько вариантов у продукта будет, так что я не может просто сделать столбец для каждого из них. КАК Я СООТВЕТСТВУЮ?

Спасибо :)

ответ

1

В идеале вы должны нормализовать данные путем создания отдельных таблиц.

Таблица product_options:

id INT 
product_id INT 
option_name VARCHAR 

Таблица product_option_values:

id INT 
option_id INT 
value VARCHAR 
+0

не должны 'product_option_values' есть' OPTION_VALUE VARCHAR'? –

+0

Спасибо, @FranciscoPresencia, я уточнил это сейчас. – Denis

1

Лучшая практика будет добавить дополнительные таблицы. Один для хранения различных вариантов:

option 
    id 
    name  -- I.e. colour, memory, e.t.c. 
    product_id -- FK link to product 

И таблица сохранять параметры, сами:

option_value 
    id 
    name  -- Choice i.e. red,blue, 5GB e.t.c. 
    option_id -- FK Link to option 
0

Я бы предложил придерживаться «строки в комбинации с переменной/значение». Рассмотрим следующую схему таблицы для продуктов переменных:

TABLE Product_variables: 
    INT product_id 
    STRING variable_name 
    STRING variable_value 

Тогда вы могли бы:

product_id, variable_name, variable_value 
1, memory_size, 8gb 
1, memory_size, 16gb 
1, memory_size, 32gb 
1, colour, red 
Смежные вопросы