最有效的方式将购物袋数据存储到mysql db中

时间:2012-01-02 00:06:01

标签: php mysql performance

从购物袋到mysql数据库存储(和检索)会话数据(数组)的最有效方法是什么?这样访问者就可以在新的访问中收回他们的购物袋内容。

我现在需要存储的是:独特的包ID - 产品ID('s) - 和添加的日期时间(到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)
    
  3. 我正在考虑将带有简单“加密算法”的bagID存储到cookie中。 因此,用户可以在不同的浏览器/计算机上使用不同的包。

    性能最佳的选项是什么?会有明显的性能差异吗?或者其中一个选项是坏的?

    在选项1中,在bagID上使用主键是明智的吗? 在选项2中,使用bagID上的主键和ID上的外键是明智的吗?

2 个答案:

答案 0 :(得分:0)

我会去序列化;精细和未来的灵活性。您可能需要使用除session-id之外的其他cookie。

答案 1 :(得分:0)

我喜欢选项#2的想法,而bagID应该是一个很好的主键。

我有两个问题:如何将用户绑定到购物袋?用户可以拥有多个购物袋吗?

我这样做的方法是将一个customerID(每个用户的唯一标识符)添加到bags表中。但是如果一个用户只能拥有一个购物袋,那么你根本不需要bagID,你可以用customerID对其进行索引。