Разве плохо дублировать названия и цены в таблицы order_lines (ссылки из таблиц продуктов и опций)?
Я проверил несколько популярных PHP-скриптов с открытым исходным кодом для электронной коммерции, и он это делает.
Предположим, что следующие таблицы (быстрый пример):
product
таблица:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| product_id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(150) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
options
таблица: (продукт может иметь 1 или более вариантов, например: маленький, большой, х-большой и т. Д.)
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| option_id | int(11) | NO | PRI | NULL | auto_increment |
| product_id | int(11) | NO | | NULL | |
| name | varchar(150) | NO | | NULL | |
| price | decimal(6,2) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Компания будет получать около 5000 новых заказов в день, я ищу разумный способ, как оформить заказ, таблицы order_line? Вы дублируете имена и цены в таблицу order_lines? Сотни цен будут меняться каждые несколько месяцев из таблицы options
.
Я читал о версии (Тип 2), я не уверен, как она на самом деле работает, насколько я понимаю, я могу добавить поле version_id
в таблицы product
, options
и order_line. Каким бы ни был MAX version_id, это означает последнюю версию. Это кажется намного проще, чем при использовании дизайна StartDate и EndDate.
Я ищу методологию проектирования, которая может быть сделана быстро и разумно. Не слишком сложный дизайн.