2016-03-06 31 views
1

我是SQL中的新手,我很难弄清楚我的表使用哪些关系。基本上我是用PHP编写一个网站,它连接到一个数据库,在这个数据库中,预先存在的客户可以下订单。数据模型概念之间的关系

要求数据库

  • 记录列表护手霜产品和销售
  • 记录库存水平为所有产品
  • 客户每个客户每个产品的
  • 销售

现在我正在考虑使用4个表格:

  • 客户
  • 销售
  • 库存
  • 和某种形式的连接表。

我对用于表格的字段有一个很好的想法,但是我真的很难将这些表格之间的关系包裹起来。

编辑:

Data model

+0

如果您的客户可以购买您需要的产品,客户,订单,订单详细信息。这些关系将是订单,客户,订单订单详细信息和产品订单详细信息我建议您在线查看并查找互联网历史上最古老的样本数据库之一的副本,罗斯文商贸公司,在谷歌上搜索它,您将能够找到它在许多格式。这是关系数据库的一个非常好的例子,类似于你想在你的项目中做什么 –

+0

什么是实际的SQL风格? T-SQL或MySQL? – Alexei

+0

你正在使用哪个平台 - sql-server或mysql - 你不能同时使用 - 如果你的意思是通用的,那么它们都应该被删除。我会去做。 – Hogan

回答

0

你是在正确的轨道上。

按您的要求:

  1. 记录的产品,其销售的清单。为此,您需要一个Product表格,每个产品作为一个独立的行,一个Order表格,您可以在其中存储可由多个产品组成的每个订单放置,因此需要表结合表格Order_Product或者您称之为OrderDetails承受力)。关系是与Order_Product以1:N关系相关的产品和订单表(这是订单和产品之间的N:N关系的实现)。这使您可以订购多个产品和可以多个订单出现的产品
  2. 记录所有产品的库存水平。为此,您可以使用现有的Product表来保留当前存储量的轨迹。
  3. 客户。这需要另一个表Customer,它与Order的关系为1:N,因为一个客户可以下很多订单,但是一个订单只能连接到一个客户。
  4. 每个客户的每个产品的销售额。这基本上是您可以使用此数据库模型实现的SQL查询。

好消息:

  • 公司是否要保持自己的补给品的订单跟踪被出售给客户?或者它只是一个CRM?
  • 只要它是关系模型,您的数据库模型就不是供应商特定的。这意味着如果您切换到SQL Server或任何其他RDBMS,则您的模型不会更改。
  • 为什么创建联结表Order_Product被认为是很好的做法?它避免了数据冗余,并且记住 - 关系数据库已经过优化,能够快速处理多个表。
  • 特别是在联结表中创建索引会加快查询的执行速度。看起来,这将是您的模型中要查询的核心表格。
+0

谢谢!我想我现在有足够的能力开始。 – Jarretman

+0

很高兴我可以有一些帮助:-) –