SQL订单的树状数据库
!![在此输入图像描述][2]我正在处理一个数据库,该数据库将创建一个三层结构。这个想法是这样的:SQL订单的树状数据库,sql,tree,3-tier,hierarchical,Sql,Tree,3 Tier,Hierarchical,!![在此输入图像描述][2]我正在处理一个数据库,该数据库将创建一个三层结构。这个想法是这样的: 第一级:订单表格 主键-OrderID 第二级:orderlineitemsheader表 主键-OrderID 主键-OrderLineItemHeaderID 第三级:OrderLineItem表 PrimaryKey-OrderLineItemHeaderID PrimaryKey-OrderLineItemSequence 问题是它不允许我在第二级和第三级之间设置外键(Or
- 第一级:
表格订单
- 主键-
OrderID
- 主键-
- 第二级:
表orderlineitemsheader
- 主键-
OrderID
- 主键-
OrderLineItemHeaderID
- 主键-
- 第三级:
表OrderLineItem
- PrimaryKey-
OrderLineItemHeaderID
- PrimaryKey-
OrderLineItemSequence
- PrimaryKey-
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有很多行项目。有没有一种方法可以附加一个打印屏幕,以便我可以显示我的图表?我刚加入这个网站寻求帮助,我记得这实际上是一个我通常可以从中得到答案的地方。为什么-如何-一个订单有多个订单标题?行业标准是订单有一个标题和多个订单行。也就是说,订单和订单头是同义的。