Самый эффективный способ хранить данные о сумке покупок в mysql db - PullRequest
1 голос
/ 02 января 2012

Каков наиболее эффективный способ хранения (и извлечения) данных сеанса (массива) из корзины для покупок в базу данных mysql? Чтобы посетители снова получали содержимое своей корзины для покупок при новом посещении.

Все, что мне нужно на данный момент хранить, это: уникальный идентификатор сумки - идентификатор продукта (ов) - и добавленные дата и время (к старым сумкам Cron).

Я думаю о сохранении bagID с простым «алгоритмом шифрования» в cookie. Таким образом, пользователи могут иметь разные сумки на разных браузерах / компьютерах.

Опции, о которых я думаю:

  1. Используйте одну таблицу и стерилизуйте или json_encode массива сеансов мешков для хранения в столбце данных:

    BAGS
    -----
    bagID               | data | date_added         
    int (AUTO_INCREMENT)| text | datetime
    
  2. Используйте две таблицы следующим образом:

    BAGS
    -----
    bagID               | date_added         
    int (AUTO_INCREMENT)| datetime
    
    BAGS_CONTENT
    -----
    ID (relate to bagID)| productID (list all products in the bag)
    int                 | int(10)
    

Я думаю о сохранении BagID с простым «алгоритмом шифрования» в cookie. Таким образом, пользователи могут иметь разные сумки на разных браузерах / компьютерах.

Какой вариант лучше всего подойдет? Будет ли заметная разница в производительности? Или один из вариантов будет плохим?

В варианте 1 было бы разумно использовать первичный ключ для bagID?
В варианте 2 было бы разумно использовать первичный ключ для bagID и внешний ключ для ID?

Ответы [ 2 ]

0 голосов
/ 02 января 2012

Мне нравится идея варианта №2, и bagID должен стать хорошим первичным ключом.

У меня два вопроса: как привязать пользователя к сумке для покупок? И может ли пользователь иметь более одной сумки для покупок?

Я бы сделал это, добавив идентификатор клиента (уникальный идентификатор для каждого пользователя) в таблицу пакетов. Но если у пользователя может быть только одна корзина, то вам совсем не понадобится bagID, и вы можете просто проиндексировать ее по customerID.

0 голосов
/ 02 января 2012

Я бы пошел на сериализацию; прекрасный и гибкий на будущее. Возможно, вам придется использовать другие файлы cookie, кроме идентификатора сеанса, хотя ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...