ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql – 购物车数据库架构

2019-08-06 14:28:09  阅读:492  来源: 互联网

标签:php mysql schema


我需要帮助创建数据库的架构,以保存与Web用户的购物车/会话相关的信息.每个会话将具有会话ID,保存创建时间的时间戳,到期时间戳,指示购买是否完成的布尔值,然后是产品列表及其相关数量和价格.每个用户只有一个ID,始发时间戳,到期时间戳和购买布尔值,但它们可能会引用一个或多个具有不同数量和价格的产品.

我最初的想法是有一个会话表和一个产品表,但我似乎无法想到会话ID和产品信息在大订单和不同会话中将变得多余.简而言之,如果产品表的不同行始终引用重复的产品编号和会话ID,那会变得混乱吗?

我是在正确的轨道上吗?或者你能提出一个我尚未考虑的替代设计模式吗?

如果您需要更多信息,请与我们联系.先感谢您!

解决方法:

根据您的描述,您将需要以下表格(“…”表示您可能需要该实体中的其他字段):

>用户(UserID,EmailAddress,密码……)
>会话(SessionID,CreatedDate,UserID,ExpiryDate,PurchaseCompleteInd ……)
>产品(ProductID,Name,UnitPrice ……)
> SessionProductLink(ProductID,SessionID,Quantity …)

SessionProductLink是一个Junction table,这是你缺少的“设计的一部分”.

斜体字段名称是外键(很明显它们链接到哪些字段……). ID字段是前三个实体中的聚簇键字段,对于SessionProductLink,您需要一个(ProductID,SessionID)的复合键. (如果你愿意,可以在那里使用代理键,这是你可以做出的风格决定)

您可能想要考虑的其他事项:

>安全.您希望将您的用户密码安全加密(即使用bcrypt),如果您支持信用卡,则在大多数情况下您不允许合法存储完整的信用卡详细信息等.
>发票 – 您要支持哪种付款方式?您是否希望人们能够使用一张发票支付多个“会话”? (这对于商业帐户更常见,通常零售客户是一次购买=一次发票=一种付款方式)您想接受外币吗? (在这一点和第一点之间,你几乎需要一个payment processor,以确保你不会陷入大规模冲突……)
>如果产品价格发生变化会怎样?您不希望过去的购买/发票价格发生变化,对吗?
>您需要永久存储您的会话(或至少完成的会议)(取决于您所在国家/地区对商业交易文档存储的法律要求),因为它们是合法记录.同样,您不能只删除旧的产品记录,您需要将它们标记为过时,这样它们就不会显示为可购买但显示在历史购买记录中(否则您的应用将显示有人购买的旧商品5产品ID 119和产品ID 135的2,你不知道他们到底买了什么……).

这就是我现在所能想到的,但这应该足以让你开始.

标签:php,mysql,schema
来源: https://codeday.me/bug/20190806/1599984.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有