php - 我如何存储客人结帐?

标签 php mysql database-design

好的,所以我的网站就像“发布您的订单”,而不是通常的在线支付方式,因为我会先运送元素,然后是现金,即此处运送服务提供的货到付款。

我有一个用户表,其中有 user_id, email, password, first and last name, etc.

一个 user_order 表有 order_id, user_id_fk, order_status, order_placed, address_id_fk

一个 order_items 表有 order_item_id, order_id_fk, product_id, quantity, size_id_fk

地址表 address_id, user_id_fk, street, city, province, etc

因此,如果用户已注册,则很容易做到这一点,因为我只需将他们的 user_id 链接到 user_order 表和地址簿中的地址

我的问题是,我该如何处理访客结帐?我试图避免他们被迫注册,即使这很容易。

我现在的想法是将它们也插入到用户表中,但密码为 NULL,然后创建一个 guest 组并将它们放入该组。

但这可能会导致问题,我的用户表中的电子邮件必须是唯一的, guest 结帐可能会从同一电子邮件发生不止一次......现在怎么办?

我应该只在订单表中添加列吗?另一个,姓名,电子邮件,地址?所以它与用户无关?这是可能的,但有一项功能我希望注册用户拥有...跟踪他们的订单历史记录。

请帮忙...谢谢 :D ;)

最佳答案

我同意“Drew Pierce”的观点,但从另一方面给你另一种选择

首先您应该阅读有关电子商务平台(例如 OpenCart)的信息,了解它们如何驱动这些东西。

其次对于以下情况,您不需要将每位 guest 添加到用户表中:

1-客人无权查看订单历史或...等

2- 电子邮件字段必须在结帐时强制填写,并且还会向他发送通知电子邮件(也许您添加确认电子邮件.. 由您决定)。

3-您需要在数据库中保存的是订单表中的订单详细信息

4-您和客人之间的所有过程都将通过他的电子邮件

5-在成为真实用户之前,他无权跟踪任何订单或查看他的事件

6- 订单详细信息必须始终包含有关用户的所有详细信息,即使他是真实用户(这将是真实用户的重复数据,但用户可以在任何地方更改他的电子邮件或电话号码时间,他不能为旧订单做,所以你总是知道订单的真实历史)

7- 在用户表中,只有一个 guest 用户,但在订单表中有很多订单,每个订单都有其详细信息,电子邮件,电话号码,,,等

关于php - 我如何存储客人结帐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30687891/

相关文章:

PHP缓存,在多个目录中存储缓存

mysql - 用于合并同一行的两个查询的sql查询

mysql - 照片库 - 数据库设计

mysql - 调查和答案,多对多的关系

php - 我怎样才能在 cakephp 中正确关联这些表?

mysql - 外键: Unique & part of Composite Primary Key

javascript - 使用 PHP、AJAX 将数据发布到不同域不起作用

php - 有人曾经在 Expression Engine 上创建过购物车吗?

php - 运行多个 Wordpress Cron 以执行两个函数以不同的固定时间间隔更新数据库

mysql - 如何序列化fabricjs对象以存储在数据库中?