为购物车应用程序设计数据库?

时间:2012-02-03 07:17:30

标签: database database-design shopping-cart

我从未设计过数据库/数据模型/架构,特别是对于Web应用程序。 在最近的一些求职面试中,我被要求为购物车应用程序“设计”数据库。现在我正在开发一个移动购物应用程序(零售,使用phonegap),后端需要存储和处理产品和订单信息。这个问题的规模是如此巨大,我不知道从哪里开始。我希望得到一些建议 -

  1. 我应该如何处理这样的问题(购物车应用程序数据库)?我应该从哪里开始?
  2. 我应该避免任何常见的错误/陷阱吗?
  3. 在设计这样的数据库时,我应该记住哪些优化/效率范例?
  4. 我应该如何识别问题空间中的实体(产品,订单等)?我应该如何推导出它们之间的关系?
  5. 当面试官问这样一个问题时,他究竟在寻找什么?有什么我应该/不应该说的吗?
  6. 我还应该澄清 -

    1. 是的,我是菜鸟,我的动机是学习数据库设计,为即将到来的求职面试做准备。我已经阅读了DBMS书籍,他们详细描述了各个概念,但我不知道如何把这些东西放在一起并开始设计数据库。
    2. 我见过数据库设计的其他主题。作者已经倾向于拥有一些如何解决问题的知识。我想了解这背后的方法。
    3. 非常感谢外部资源,评论,建议和任何能让我走上正轨的事物的链接。我希望这个主题可以作为我和他人的学习经历。

2 个答案:

答案 0 :(得分:18)

数据库中可以有五个表:

  

CATEGORY 此表存储有关商店的产品类别和类别层次结构的信息。
此表的父字段存储父类别的ID。

  

PRODUCT 您商店的所有商品都存储在此表中。此表具有外键categoryID,用于标识产品所属类别的ID。

  

订购此表存储有关商店访客所有订单的信息。

  

ORDERED_SHOPPING_CART 表与PRODUCT和ORDER表紧密相连;存储有关客户订单内容的信息。

  

SPECIAL_OFFER 表包含产品列表,这些产品在主页上显示为特别优惠

答案 1 :(得分:12)

一个简短的答案是我将解决这个问题的方式。首先,有大量的开源或免费的基于Web的购物车。这意味着你可以获得一个,设置数据库,然后仔细看看他们做了什么。

问自己一些问题,为什么他们这样做了?它为什么好?有什么不利之处?我怎么会这样做?为什么呢?

我会尝试购买一个数据库设计工具,允许您可视化数据库。 (就像Visual Studio中的数据库设计师,或者我有一个来自MicroOlap的pgsql数据库)

然后你需要考虑数据库中你需要什么。客户要做什么?买产品!因此,您需要一个产品表。没有走完整条路线,你可以看到重点。想象一下需要什么,然后基本上为它做一个表。

如果表中的字段有多个选项,请创建另一个表中包含关系的表。因此,如果您有产品表并且您有一个状态字段。你可以拥有多个身份。 (例如缺货,数量有限,大件商品,价格昂贵)而不是硬编码这些字段,制作表格并允许用户向表格添加商品。然后在产品表中添加一个字段status_id并将其链接到状态表

许多关系是很有用的事情。 (我自己也不满意。)说你有一个组件和产品表。产品可以由许多组件组成,组件可以分配给许多产品。创建一个中介表。类似prodcomp的东西(在这里你会有像id,prod_id,comp_id,qtyneeded这样的字段)。

了解index correctly

在您充分了解数据库的工作原理之前,请不要创建数据库。这节省了以后重新创建它的时间。

可能还有更多,但是,我希望我给你一个良好的开端。