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

Database 为购物车应用程序设计数据库?,database,database-design,shopping-cart,Database,Database Design,Shopping Cart,我从未从头设计过数据库/数据模型/模式,尤其是针对web应用程序。 在最近的一些工作面试中,我被要求为购物车应用程序“设计”一个数据库。现在,我正在开发一个移动购物应用程序(零售,使用phonegap),其后端需要存储和处理产品和订单信息。这个问题的规模如此之大,我不知道从哪里开始。我希望得到一些关于以下方面的建议: 我应该如何处理这样的问题(购物车应用程序数据库)?我应该从哪里开始 是否有我应该避免的常见错误/陷阱 在设计这样的数据库时,我应该记住哪些优化/效率范例 我应该如何识别问题空间中的

我从未从头设计过数据库/数据模型/模式,尤其是针对web应用程序。 在最近的一些工作面试中,我被要求为购物车应用程序“设计”一个数据库。现在,我正在开发一个移动购物应用程序(零售,使用phonegap),其后端需要存储和处理产品和订单信息。这个问题的规模如此之大,我不知道从哪里开始。我希望得到一些关于以下方面的建议:

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

  • 是的,我是一个noob,我的动机是学习数据库设计,为即将到来的工作面试做准备。我读过DBMS的书,书中详细描述了各个概念,但我不知道如何将这些东西组合起来并开始设计数据库
  • 我见过其他关于数据库设计的文章。作者们已经倾向于掌握一些关于如何解决这个问题的知识。我想了解这样做背后的方法
  • 非常感谢与外部资源、评论、建议以及任何能让我走上正轨的链接。我希望这篇文章能成为我和其他人的学习经验

  • 简单的回答是我解决这个问题的方法。首先,有大量的开源或免费的基于web的购物车。这意味着你可以得到一个,建立数据库,然后好好看看他们做了什么

    问问自己,比如,他们为什么这么做?为什么它好?会有什么负面影响?我会怎么做呢?为什么?

    我会尝试购买一个数据库设计工具,允许您可视化数据库。(就像VisualStudio中的数据库设计器,或者我从MicroOlap中得到了一个处理pgsql数据库的设计器)

    然后,您需要考虑在数据库中需要什么。客户将要做什么?购买产品!因此,您需要一个products表。不必走整条路,你就能看到重点。想象一下需要什么,然后基本上为它做一张桌子

    如果表中的字段有多个选项,请创建另一个包含关系的表。因此,如果您有一个产品表和一个状态字段。您可以有多个状态。(例如缺货、数量有限、大项目、价格昂贵)与其硬编码这些字段,不如创建一个表,并允许用户将项目添加到表中。然后在产品表中添加一个字段status_id并将其链接到status表

    多-多关系是需要了解的有用的东西。(我自己也没有做到这一点。)假设你有一个组件和产品表。产品可以由许多组件组成,组件可以分配到许多产品。创建一个中介表。类似于prodcomp的内容(在这里,您将有id、prod\u id、comp\u id、qtyneed等字段)

    学会学习

    在对数据库的工作方式有明确的了解之前,不要创建数据库。这样可以节省以后重新创建的时间


    可能还有更多,但我希望我已经给了您一个良好的开端。

    数据库中可以有五个表:

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

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

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

    订单购物车表与产品和订单表紧密相连;存储有关客户订单内容的信息


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

    我并不提倡它,但发现它可以帮助您更好地将问题可视化,并包括/涵盖购物车应用程序的最高要求。即使我还没有构建任何购物数据库,所以这也是我感兴趣的一个问题。这是我开始学习设计技能的一个好机会+我很高兴它能帮助你。购物车本身的设计是什么?我还应该有
    Cart
    cartdail
    表吗?如何存储未注册用户的数据?@Shimmy shopping_cart和匿名用户在本例中不受管理,正如我所说,即使我在互联网上搜索此内容也是为了了解它,并帮助OP。如果您还有其他需要添加的内容,请随时改进。谢谢您的回复和关于规范化的信息。作为一个新手,我必须从我的角度澄清这一点——对于一个新手来说,很难理解像购物车或银行这样复杂领域中db设计的复杂性。这与理解DB设计的基础知识关系不大,而与理解域以及如何分解域以获得好的解决方案关系更大。上面的答案很好地解决了设计基础和领域知识这两个问题。常识只能带你走这么远。