【问题标题】:Most efficient way to store shopping bag data into mysql db将购物袋数据存储到 mysql db 中的最有效方法
【发布时间】:2012-01-02 08:40:41
【问题描述】:

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

我现在只需要存储:唯一的包 id - 产品 id('s) - 和添加的日期时间(到 Cron 旧包)。

我正在考虑使用简单的“加密算法”将 bagID 存储到 cookie 中。 因此,用户可以在不同的浏览器/计算机上拥有不同的包。

我正在考虑的选项:

  1. 使用一张表,对包会话数组进行消毒或json_encode存储在Data列中:

    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 上使用外键是否明智?

【问题讨论】:

    标签: php mysql performance


    【解决方案1】:

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

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

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

    【讨论】:

    • 我正在考虑使用简单的“加密算法”将 bagID 存储到 cookie 中。因此,用户可以在不同的浏览器/计算机上拥有不同的包。
    【解决方案2】:

    我会去序列化;罚款和未来的灵活性。不过,您可能需要使用会话 ID 以外的其他 cookie..

    【讨论】:

    • 请不要在您的帖子上签名。
    猜你喜欢
    • 2015-03-01
    • 2014-01-16
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 2013-02-05
    • 2015-03-05
    • 2017-08-06
    • 1970-01-01
    相关资源
    最近更新 更多