1) Не очень понятно назначение таблицы
product_value, допустим у вас есть товар
Куртка зимняя, у него есть два варианта (
цвет:
черный,
размер:
42), (
цвет:
красный,
размер:
43), и что будет в таблице?
Четыре записи:
Куртка зимняя | Цвет черный |
Куртка зимняя | Цвет красный |
Куртка зимняя | размер 42 |
Куртка зимняя | размер 43 |
И как вы определите, как эти свойства соотносятся и главное как вы это будете использовать?
У вас же будут вноситься данные по продажам?
Назначение этой таблицы в таком виде непонятно, я бы предложил сделать таблицы
attributes_sets (модификации товара)
и
attributes_sets_values (значения свойств данной модификации)
- attributes_set_id
- value_id
Тогда получится таблица вида
Куртка: вариант 1 | Цвет черный |
Куртка: вариант 1 | размер 42 |
Куртка: вариант 2 | Цвет красный |
Куртка: вариант 2 | размер 43 |
и в таблицах с движениями товаров можно указывать просто id модификации, которая и будет содержать полную информацию о включенных в него значениях атрибутов.
Также можно писать в поле title таблицы attributes_sets значения модификации через запятую "черный, 42", это упростит вывод информации о модификации в отчетах.
2) В
product_value(или
attributes_sets_values, если примените пункт 1) можно добавить поля
attribute_id,
value_int, это позволит для числовых атрибутов не задавать заранее список значений в values, а сразу указывать числовое значение
3) Цены лучше не хранить в товаре, а сделать отдельные таблицы
price_types: id, name
prices: price_type_id, product_id, set_date, price
Это позволит назначать товару разные цены в зависимости от всякого рода условий, можно также добавить в
prices поле
user_id, чтобы не возникал вопрос кто поменял цену