【问题标题】:Do I need to give id_cart as primary key in database mysql?我需要将 id_cart 作为数据库 mysql 中的主键吗?
【发布时间】:2022-01-24 06:31:39
【问题描述】:

所以我正在开发一个可以使用 xampp localhost 启动的网站。该网站是关于在线购物的。我在将购物车数据保存到只有 1 个主键的表中并将这些数据保存到另一个表时遇到问题。

这是我在数据库中创建的购物车表中的数据类型:

购物车表

  • cart_id(主键)
  • customer_id
  • product_id
  • 数量

如果我添加了 2 个不同的产品,那么它会将购物车数据保存到数据库中,从而产生 2 个不同的主键

然后我用这些数据类型制作了 order_transaction 表:

ORDER_TRANSACTION 表

  • order_id(主键)
  • customer_id
  • cart_id
  • 日期时间
  • total_payment
  • payment_method
  • payment_status
  • 姓名
  • 电话
  • 地址
  • 快递员姓名
  • shipping_fee

问题是,我如何将购物车数据放入 order_transaction 表中,只需要 1 个主键?哪一个需要设置为外键?

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    在购物车表中,您可以创建 3 列主键(复合键) 因为cart_id 本身不会是唯一的,而cart_id + customer_id 也不会是唯一的,所以将product_id 添加到它应该使其唯一。

    ALTER TABLE cart ADD PRIMARY KEY(cart_id, customer_id , product_id );
    

    我相信如果用户再次选择相同的产品,它不应该插入记录,而是更新数量。如果是这样,那么这应该可以正常工作。

    在联接中使用 cart_id 和 customer_id

    【讨论】:

    • 您的意思是在 order_transaction 表中吗?你能给我一些例子,以便我能清楚地理解它吗?涂鸦/图片很好,谢谢!
    • 我尝试创建一个示例小提琴,检查这个 fiddle 是否适合你,或者这就是你要找的
    • 非常感谢您抽出时间制作样品!我查看了您的示例,我注意到对于 2 个不同的 customer_id,它们可以具有相同的 cart_id(customer_id 1 和 cart_id 1,customer_id 3 和 cart_id 1),这是真的吗?我假设数据不会是多余的?
    • 我还尝试将 2 种不同的产品添加到购物车中,但它们都有不同的 cart_id.... 如何使用 mysqli 查询使它们具有相同的 cart_id?
    • 实际上cart表中,3列共同构成一个主键。所以购物车 id 1 + 客户 1 和订单 1 是唯一的,111,然后购物车 1 客户 2 订单 1,121 是唯一的。所以你的主键不仅仅是 cart_id ,它也是 customer + product id
    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 2011-01-06
    • 1970-01-01
    • 2016-12-28
    • 2016-07-31
    • 2011-07-26
    相关资源
    最近更新 更多