gpt4 book ai didi

php - 有什么方法可以在数据库中存储有关匿名/访客用户的信息?

转载 作者:IT王子 更新时间:2023-10-28 23:49:59 26 4
gpt4 key购买 nike

我们的应用程序具有在线商店以及其他功能,通常要求用户在完成销售之前进行注册,并在此过程中创建一个唯一的 customer_ID。当他们返回时,他们可以登录并从数据库中检索他们的联系方式和交易历史。

我们现在正在探索在“匿名”或“访客”客户的情况下该怎么做,向不想注册的客户开放在线商店,以及登录后端应用程序的销售,其中获取客户的电子邮件、邮政地址等太费时了。该解决方案在网上商店之外也有应用。

多家公司使用同一个数据库,数据库建立在party model上结构,所以我们探索了几个选项:

  1. 将所有匿名客户存储在 transaction 表中一个预定义的 customer_ID 下:
    1. customer_ID = 0 表示每个匿名用户,customer_ID > 0 表示每个真实用户
      • 这可以直接硬编码到应用程序中
      • 但更多地涉及确定哪些客户属于哪家公司
      • customer_ID = 0 的详细信息应该存在于数据库的customer 表中还是作为应用程序中的对象存在?
        • 如果在数据库中,可以做哪些数据库级别的约束来确保它始终存在?
        • 如果不在数据库中,则从 transaction.customer_IDcustomer.customer_ID 的外键约束不再起作用
    2. customer_ID 与公司party_ID 相同
      • 更容易确定每家公司的总销售额等
      • 这会使事情变得困惑,因为看起来公司是自己的客户,而不是其他独特的客户
  2. 为每个新的匿名客户(每个 session )生成一个唯一的 customer_ID
    • 如果同一个物理用户返回怎么办?会有很多记录重复同一种数据;电子邮件、送货地址等。
  3. 使用其他唯一键(例如电子邮件地址)来指代客户
    • 并不总是可靠的,因为人们有时会使用多个电子邮件地址,或者留下旧地址。
    • 如果没有电子邮件地址,例如车间、形式发票等,该怎么办?
  4. 其他一些受 Stack Overflow 启发的解决方案!

加法

#2 和 #3 的组合已在别处提出 - 尝试为每个客户存储一条记录,尽可能使用电子邮件地址,或者在每次访问时使用新记录。

我应该指出,我们需要为每个匿名客户存储一条记录,但似乎关系数据库是为处理关系而构建的,所以有一个 NULL 或transaction 表中没有引用实际客户记录的 customer_ID 似乎是错误的......

我还必须强调,这个问题的目的是确定有哪些现实世界的解决方案可以记录没有提供邮政地址或电子邮件地址的“临时”交易(想象一下超市结账)以及在线商店交易,其中电子邮件地址和邮政地址是否被存储。

SO 社区过去使用过哪些解决方案?

最佳答案

假设所有在线订单都需要一个电子邮件地址,您可以在每个未登录的客户完成每个订单时为他们创建一个临时帐户。

这可以通过使用结帐时提供的送货地址和其他信息来填写帐户,然后通过电子邮件向他们发送一个随机临时密码来完成(可选地标记它以要求在第一次登录时进行更改,如果功能内置于网站中)。这需要他们花费最少的精力来设置帐户,并允许他们登录以检查他们的订单状态。

由于您的数据库中的主键是 customer_id,因此如果他们继续使用相同的电子邮件/地址/等创建新帐户,它应该不会导致冲突,除非您已经有代码来防止重复。但是,很少有人创建多个临时帐户,因为使用通过电子邮件发送给他们的密码登录比再次输入他们的数据更容易。

对于后端订单,我们通常按照与上述相同的方式为每个客户创建一个帐户。但是,如果他们没有电子邮件地址(或者他们只想通过电话购买),我们会生成一个包含他们的送货信息和空白电子邮件地址的帐户(必须编写一个异常(exception)代码以不发送临时密码/订单确认时为空白)。 customer_id 提供给他们,他们的运输信息和公司名称存储在帐户中,以查找和加快 future 的订单。

关于php - 有什么方法可以在数据库中存储有关匿名/访客用户的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com