有哪些方法可以在数据库中存储有关匿名/来宾用户的信息?

2024-03-29

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

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

多个公司使用同一个数据库,并且该数据库建立在一个派对模型 https://stackoverflow.com/questions/716549/what-are-the-principles-behind-and-benefits-of-the-party-model结构,所以我们探索了一些选择:

  1. Store all anonymous customers under one pre-defined customer_ID in the transaction table:
    1. customer_ID = 0 for every anonymous user, and customer_ID > 0 for every real user
      • 这可以直接硬编码到应用程序中
      • 但更多涉及确定哪些客户属于哪个公司
      • Should details for customer_ID = 0 exist in the customer table in the database or as an object in the application?
        • 如果在数据库中,可以做哪些数据库级别的约束来保证它始终存在?
        • 如果数据库中没有,则外键约束来自transaction.customer_ID to customer.customer_ID不再工作
    2. customer_ID is the same as the company party_ID
      • 更容易确定每个公司的总销售额等
      • 这会让事情变得混乱,因为看起来该公司是自己的客户,而不是其他独特的客户
  2. Generate a unique customer_ID for every new anonymous customer (per session)
    • 如果同一个物理用户返回怎么办?会有很多记录重复同一种数据;电子邮件、送货地址等
  3. Use another unique key, such as email address, to refer to a customer
    • 并不总是可靠,因为人们有时会使用多个电子邮件地址,或留下旧地址。
    • 如果没有电子邮件地址(就像车间、形式发票等那样)怎么办?
  4. 其他一些受 Stack Overflow 启发的解决方案!

Addition

其他地方已经建议将 #2 和 #3 结合起来 - 尝试为每个客户存储一条记录,如果可能的话使用电子邮件地址,或者如果不可能的话,在每次访问时都存储一个新记录。

我应该指出我们不need为每个匿名客户存储一条记录,但似乎关系数据库是为了处理关系而构建的,因此有 NULL 或customer_ID in the transaction未引用实际客户记录的表似乎是错误的......

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

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


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

这可以通过使用结账时提供的送货地址和其他信息来填写帐户,然后通过电子邮件向他们发送随机临时密码(可以选择将其标记为需要在首次登录时更改,如果构建了该功能)进入网站)。这需要他们花费最少的精力来设置帐户,并允许他们登录以检查其订单状态。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有哪些方法可以在数据库中存储有关匿名/来宾用户的信息? 的相关文章

  • 将多个平台部署到 Elastic Beanstalk (PHP/Python)

    是否可以将多个平台部署到AWS 我有一个 PHP 应用程序 我还想运行一个小的 python 脚本 我看到 PHP 平台默认安装 Python 但是使用eb deployAWS 没有接听requirements txt并安装依赖项 我已经尝
  • printf() 字符串中的名称 PHP 说明符

    PHP 中有没有一种方法可以像 Python 一样命名我的说明符 我想要这个 PHP 版本 foo array name gt 24 printf name d foo 我在 google 或 php 手册中找不到任何相关内容 好问题 通过
  • 如何使用 django 更新会计应用程序中的余额?

    我正在学习 Django 尝试制作一个会计应用程序来跟踪我的开支等 我使用两种模型创建数据库 一种用于帐户 一种用于操作 但我不知道如何在每次操作时更新我的 余额 我在想 也许每次我保存一个新操作时 我都会通过覆盖操作模型的保存方法来更新余
  • 如何在一对一关系上使用 onDelete: 'CASCADE'

    当用户被删除时 我尝试删除用户的个人资料 但它并没有删除个人资料上的任何内容 用户实体 Entity export class User PrimaryGeneratedColumn id number Column name string
  • Laravel 5.4 密码重置

    我有一个 Laravel 5 4 应用程序 我的管理区域中有一个视图 允许我查看所有用户 我想创建一个功能 允许我单击后端的按钮 自动发送默认 Laravel 密码重置功能的过程 在我看来 我有以下几点 table class table
  • Javascript 闭包与 PHP 闭包,有什么区别?

    JS 中的闭包和 PHP 中的闭包有什么区别 它们的工作方式几乎相同吗 在 PHP 中编写闭包时有什么需要注意的注意事项吗 一个区别是两者如何处理存储执行匿名函数的上下文 JavaScript var a 1 var f function
  • 使用 Mail_Mime 发送附件到 GMail,收到“noname”附件

    我有一个非常简单的网站表单 可以包含附件 它使用 gmail 的 smtp 发送到 gmail 地址 一切工作都很好 除了文件以 noname 形式到达 没有文件名或扩展名 如果您下载附件并使用正确的文件名重命名它 则该文件可以正常打开 我
  • 是否可以从数据库转储生成 knex 种子文件?

    就我而言 我使用的是 mysql 但是 我正在寻找一种通用解决方案 用于从当前运行的数据库或数据库转储生成 knex 种子文件 我可以就像是 https github com tgriesser knex issues 944 issuec
  • 用Java将图像添加到数据库

    我正在尝试将图像添加到 mysql 数据库中的 BLOB 字段 图像大小将小于 100kb 但是我遇到了问题 想知道将这些数据添加到数据库的更好方法是什么 com mysql jdbc MysqlDataTruncation 数据截断 第
  • 澄清创建临时表的连接顺序

    我在 mysql 中有一个大型查询 涉及将多个表连接在一起 它太慢了 所以我做了 解释 发现它正在创建一个临时表 我怀疑它占用了大部分执行时间 我找到了一些相关资料 mysql 文档 http dev mysql com doc refma
  • 如何杀死Mysql“show processlist”中的所有进程?

    因为我在那里看到了很多进程 并且 时间 列显示了所有进程的大值 大规模屠杀操作节省时间 在 MySql 本身中执行此操作 运行这些命令 mysql gt select concat KILL id from information sche
  • 为什么 opcache 没有刷新?

    我用guzzlehttp guzzle封装在拉拉维尔 8 升级到后PHP 8 I get Symfony Component ErrorHandler Error FatalError Invalid opcode 117 2 0 in f
  • 将 __DIR__ 常量与字符串连接作为数组值,该数组值是 PHP 中的类成员

    谁能告诉我为什么这不起作用 这只是我在其他地方尝试做的事情的一个粗略的例子 stuff array key gt DIR value 但是 这会产生错误 PHP Parse error syntax error unexpected exp
  • 如何向 opencart 管理添加新模块?

    我想在 opencart 管理中将子菜单项 位置 添加到 目录 菜单项 在选择位置时 我想看到我自己的位置管理视图页面 该页面与 opencart 数据库中我自己的位置表相互关联 请让我知道在哪里以及创建什么 mvc 才能在开放购物车中实现
  • MySQL按总和连接表问题

    我在连接表时遇到问题 以下是示例表 表A 30行 ID Name Description 1 Type Unicode Art 2 Header Spreadsheet 3 Auto Align Off 表B 100行 ID Name De
  • SQL DML:日期值不正确 (MySQL)

    我在数据库中创建了一个表 CREATE TABLE official receipt student no INT UNSIGNED academic year CHAR 8 trimester ENUM 1 2 3 or no MEDIU
  • PHP:检查任何基于拉丁语的语言中的字母字符?

    使用 PHP 我想检查一个字符串仅包含字母字符 我不想允许任何数字或特殊字符 例如 ctype alpha 对于这个目的来说似乎很棒 问题是我想允许重音字母 例如法语等 例如 我想允许 L rien 我知道ctype alpha 可以与se
  • PHP 中可以动态添加数据成员吗?

    我想知道是否可以在 PHP 运行时添加新的类数据成员 Yes prop newname obj gt prop 42 会做同样的事情 obj gt newname 42 如果 obj 尚不存在 则任一者都会将 newname 添加为属性
  • 如何捕获生成器抛出的异常并恢复迭代?

    我有一个生成器 它将值的集合传递给方法并生成结果 调用的方法可能会返回异常 发生这种情况时 我希望异常转到调用生成器来处理异常的代码 然后继续循环生成器 为了说明这一点 下面是一个生成器的示例 它将产生1 抛出一个 Exception 然后
  • 附加之前检查数据库中是否存在 ID

    我通过选择一个带有类别的数组json decode并将它们附加到文章中 public static function setArticleCategory Request request article Article where id r

随机推荐

  • 线程不更新进度条控件 - C#

    我有一个带有自定义进度条的自定义表单 在主类 主线程 中生成 然后我生成一个线程并向其发送 ThreadStart 函数 此线程启动函数应该更新自定义控件中的进度条 但没有 class MyClass Custom form with pr
  • 尝试思考如何在 Angular 2 中构建多步表单

    我正在尝试构建一个小型的三步表单 它会类似于这样 我在 React 中执行此操作的方法是使用 redux 来跟踪表单完成情况并根据步骤号 0 1 2 渲染表单主体标记 在 Angular 2 中 什么是做到这一点的好方法 这就是我目前正在尝
  • 使用 Flexbox 将元素与底部对齐

    我正在尝试使用 Flexbox 将 DIV 与底部对齐align content flex end 并尝试align self flex end 没有运气 我在这里做错了什么 我想align content对齐 好吧 内容到任何允许的高度
  • 当前端/后端位于两个不同的域时,CSRF 保护如何为我提供比 CORS 控制更高的安全性?

    如果我有 一个域上的 Web 前端 另一个域上的 REST API 通过设置 header 将 REST API 服务器配置为仅允许来自 Web 前端域的跨源请求Access Control Allow Origin到 Web 前端域 除了
  • 总和大于给定值的子数组的数量

    给定一个数组N整数 正数和负数 找出连续的总和大于或等于的子数组K 也可以是正数或负数 I have managed to work out a naive O N2 solution is it possible to get bette
  • 正则表达式去除注释、多行注释和空行

    我想解析一个文件 我想使用 php 和 regex 来剥离 空白或空行 单行注释 多行注释 基本上我想删除任何包含的行 text 或多行注释 some text 如果可能 另一个正则表达式来检查该行是否为空 删除空行 那可能吗 有人可以向我
  • HTML5 WebSocket 与 hybi-17

    Update 我解决了解码问题 感谢pimvdb 解决方案如下 PHP len masks data decoded null len ord buffer 1 127 if len 126 masks substr buffer 4 4
  • 苹果推送通知,定期发出蜂鸣声

    我对 iOS 上的苹果推送通知负载有一个小但棘手的问题 据我所知 推送通知有效负载可以有声音 长度 可行吗 如何 PS 它是一个企业应用程序 不会部署在App Store上 提前致谢 是的 您可以这样实现 注册设备以发送推送通知 每 30
  • 如何将 Python/Pandas 数据插入规范化数据库

    假设我有一个 Pandas 数据框 其中包含以下记录 Time Action User Company User2 00 02 buy share msmith ACME tjones 00 03 sell share tjones Alp
  • 调用网络服务。需要缺失的链接

    有人可以填写下面代码中缺少的链接吗 第一种方式 Web服务接口文件是HappyService xml JaxWSProxyFactoryBean factory new JaxWsProxyFactoryBean factory getIn
  • 如何自动检测代理?

    对于我的一个项目 我制作了一个 QWebView 一切工作正常 但是当我在学校使用它时 我收到错误 因为代理未定义 我怎样才能像在 Firefox 和 IE 中那样自动检测代理 我在中找到了这个QNetworkProxyFactory ht
  • 更改标签栏项目图像和文本颜色 iOS

    这是我的标签栏 下图显示了正在运行的程序和选定的 新闻 项 很明显 条形色调的颜色工作得很好 正如我想要的 但tintColor只影响图像而不影响文本 另外 当选择一个项目时 如上所示 新闻 项目颜色变为蓝色 我该如何防止这种情况发生 我希
  • 不支持的操作:在 Web 上使用 dart io 时的_Namespace

    I am trying to use dart io to read and write file I am getting below exception Uncaught Error Unsupported operation Name
  • 在 PHP 中仅缓存页面的一部分

    是否可以只缓存 PHP 页面的特定部分 或者 PHP 脚本中特定代码段的输出 似乎当我尝试缓存特定页面时 它缓存了我不想要的整个页面 页面中的某些内容应该随着每次页面加载而更新 而其他内容 例如包含来自数据库的数据的下拉列表 只需要每小时左
  • Spring bean别名使用

    我知道bean别名在spring中意味着什么 但我想知道使用别名的用例 为什么有人想要使用别名而不是名称来引用 bean 提前致谢 我见过的用法如下 您有给定接口的两个实例 SomeBean 一个用于环境 A 一个用于环境 B 因此 您定义
  • 悬停时的黑白 CSS 背景

    我有一个 CSS 精灵 如下所示 HTML a href http www domain com estate a CSS estates background position 200px 0px width 96px height 90
  • 尝试使用地址栏或刷新页面访问时,Azure Web应用程序返回404

    我需要一些有关我的天蓝色应用程序的帮助 我有一个website使用 Azure 上托管的 ReactJS 但发生了一些奇怪的事情 我可以使用地址栏访问的唯一页面是 mydomain com 或 www mydomain com 如果我尝试访
  • 使段落文本换行到 div 内

    我读了这篇文章here https stackoverflow com questions 1587964 wrap text inside fixed div with css or javascript 我有一个简单的目标 我只想让我的
  • 从 C++ 中的数字输入动态创建矩阵

    我有一个控制台应用程序 我试图从数字输入创建一个二进制矩阵 如果想要创建一个 2x4 矩阵 我必须做两个输入 每一行一个 输入 控制台 将如下所示 第一个输入 1101 第二个输入 0111 然后我想创建一个如下所示的矩阵 1 1 0 1
  • 有哪些方法可以在数据库中存储有关匿名/来宾用户的信息?

    我们的应用程序具有在线商店等功能 通常会要求用户在完成销售之前注册 从而创建一个独特的customer ID正在进行中 当他们返回时 他们可以登录并从数据库中检索他们的联系方式和交易历史记录 我们现在正在探索在 匿名 或 访客 客户的情况下