Структура базы данных корзины покупок - PullRequest
5 голосов
/ 30 декабря 2010

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

Таблица продуктов

product_id     name               desc         price
1            product 1    This is product 1    27.00

Стол заказов

order_id   customer id     order_total
1             3               34.99

Таблица деталей заказа

order_details_id    product_id       product name      price    qty
       1                1              product 1        27.00     1

Таким образом, как вы видите, название продукта и цена снова сохраняются в таблице деталей заказа. Почему это? Единственная причина, по которой я могу придумать, заключается в том, что детали продукта могут измениться после размещения заказа, что может привести к путанице. Это правильно?

Спасибо

Пол

Ответы [ 3 ]

1 голос
/ 30 декабря 2010

да, это единственная причина

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

, поэтому вы можете создать еще одну таблицу и сохранить детали продукта, как показано ниже

Обновление продуктатаблица

id product_id     name               desc         price
1     1            product 1    This is product 1    27.00

и таблица заказов будет

order_details_id    product_Update_id  qty
       1                1               1
0 голосов
/ 30 декабря 2010

Вы можете изменить свою структуру в соответствии с

product_id     name               desc                 price
1              product 1          This is product 1    27.00

order_id  product_id  customer id   order_total
1         1           3             34.99

order_details_id   order_id  qty
1                  1         1

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

0 голосов
/ 30 декабря 2010

Вероятно, это сделано из соображений производительности, вместо того, чтобы выполнять JOIN, для получения деталей заказа можно выполнить только прямой SELECT.

...