Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL订单的树状数据库_Sql_Tree_3 Tier_Hierarchical - Fatal编程技术网

SQL订单的树状数据库

SQL订单的树状数据库,sql,tree,3-tier,hierarchical,Sql,Tree,3 Tier,Hierarchical,!![在此输入图像描述][2]我正在处理一个数据库,该数据库将创建一个三层结构。这个想法是这样的: 第一级:订单表格 主键-OrderID 第二级:orderlineitemsheader表 主键-OrderID 主键-OrderLineItemHeaderID 第三级:OrderLineItem表 PrimaryKey-OrderLineItemHeaderID PrimaryKey-OrderLineItemSequence 问题是它不允许我在第二级和第三级之间设置外键(Or

!![在此输入图像描述][2]我正在处理一个数据库,该数据库将创建一个三层结构。这个想法是这样的:

  • 第一级:
    订单
    表格
    • 主键-
      OrderID
  • 第二级:
    orderlineitemsheader
    • 主键-
      OrderID
    • 主键-
      OrderLineItemHeaderID
  • 第三级:
    OrderLineItem
    • PrimaryKey-
      OrderLineItemHeaderID
    • PrimaryKey-
      OrderLineItemSequence
问题是它不允许我在第二级和第三级之间设置外键(
OrderlineItemHeader.OrderLineItemHeaderID
OrderLineItem.OrderLineItemHeaderID
)。我一直在阅读关于hierarchyid数据类型的文章,但问题是它们在同一个表中关联。我显示的是主列,但每个表都有五到十列所需的更多信息

我使用的是SQL Server 2008,与之关联的程序将是VB.NET 4。我无法添加图表的图像,因为我是网站的新手

再以食物为例说明一下:

你为一个拥有美国所有餐馆的食品供应商下了一大笔订单

所下的订单包含一个巨大订单列表的一般信息

OrderID、OrderNO、OrderDate

现在这道菜有很多不同种类的食物,这是第二层

比萨饼,鸡肉,肉,鱼

你每种都要订1000份,你需要知道什么时候会来

所以他们会给你这些信息,你需要告诉大家,当他们要吃饭的时候,每个人都要吃饭

所以从比萨饼上你将有100个星期二空运过来。500人从水路来,下周来。其余的在两周内通过陆路

今天有500块肉要来,但由于他们没有更多的准备,所以它延期订购,以备将来与其他人约会


因此,所有这些信息都需要放在tablkes中,因此三层模型有很多额外的工作要做,但根据我们到目前为止的讨论,这里有一个基本概念:

编辑

基于讨论的第二个图表(保留旧图表作为历史)


在原始问题陈述中,您有:

3rd Level : OrderLineItem table
PrimaryKey - OrderLineItemHeaderID
PrimaryKey - OrderLineItemSequence
为了创建OrderLineHeader的外键,必须包含它的完整PK,因此您需要:

3rd Level : OrderLineItem table
PrimaryKey - OrderID
PrimaryKey - OrderLineItemHeaderID
PrimaryKey - OrderLineItemSequence
但如果所有ID都是人工的,那么更好的解决方案可能是:

1st level: Order table
Primary Key - OrderID

2nd Level: OrderlineItemHeader table
Primary Key - OrderLineItemHeaderID
Foreign Key - OrderID

3rd Level : OrderLineItem table
Primary Key - OrderLineItemID
Foreign Key - OrderLineItemHeaderID

它不允许我把第二层和第三层联系起来,主键错了吗?我是这么想的,但我花了一个小时试着把表联系起来好吧,我真的很感激,很乐意给你点建议,不管怎样:p,是的,你或多或少都在正确的轨道上,但现在我们需要第三级。在StoreOrderItems上,假设它们需要拆分,因为它们不会同时发货,它们是碎片。是的。。我将添加另一个图表让我添加4个主要表格,让您了解我在做什么让我了解。。客户可以从PizzaPalace订购20个比萨饼-今天10个,明天10个-这些都是相同的订单,相同的发票,但分开交付?您的需求似乎不需要层次模型来解决它。这看起来就像一个关系解决方案。你为什么认为你需要一个层次结构?如果你解释一下你想要存储什么,也许我们可以帮助你更好。订单有很多OrderHeader,OrderHeader有很多行项目。有没有一种方法可以附加一个打印屏幕,以便我可以显示我的图表?我刚加入这个网站寻求帮助,我记得这实际上是一个我通常可以从中得到答案的地方。为什么-如何-一个订单有多个订单标题?行业标准是订单有一个标题和多个订单行。也就是说,订单和订单头是同义的。