注册客户和访客结账的数据库架构

时间:2013-06-27 20:52:35

标签: mysql sql database postgresql e-commerce

对于允许访客结帐和注册用户结帐的电子商务网站,您将如何处理2个不同的客户群?

  1. 您是否将两个组存储在同一个表customers中,该表的外键customer_group_id指向另一个表customer_groups?在这种情况下,您是否会担心重复的访客结账“污染”customers表?

  2. 如何为2个客户群体捕获的信息有何不同?我认为差异在于客人结账客户将没有密码。

2 个答案:

答案 0 :(得分:6)

我直接在订单中存储客户信息,而不是依赖客户记录中的信息。这样做有几件事:

  1. 我不需要在客户数据库中拥有访客用户
  2. 如果我的客户信息发生变化,或者客户希望将一件商品运送到一个地方,而另一件商品运送到另一个地方,则订单信息仍然是正确的。
  3. 我将订单信息视为历史数据。它不应该更改,因为数据库中的其他内容更改。例如,如果我向您订购了某些东西,并且稍后我会移动并更新我的帐单和送货信息,您仍应该知道之前的订单已经开帐单并运送到之前的地址。如果您依赖客户和订单之间的关系来保留账单并发送到信息,一旦我移动并更新我的个人资料,您认为您已发送到我的新地址。您可能不会将其视为一个问题,但它会是。

    如果客户有帐户,您仍然可以从客户记录中获取当前信息以填充订单上的字段。对于客人,他每次都要打字。

答案 1 :(得分:0)

公共实体是Checkout。访客结账将是结账实体上与注册用户实体的空FK链接。