![在此处输入图像描述] [2]我正在开发一个将创建三层结构的数据库。这个想法看起来像这样:
Order
表
OrderID
OrderlineItemHeader
表
OrderID
OrderLineItemHeaderID
OrderLineItem
表
OrderLineItemHeaderID
OrderLineItemSequence
问题是它不允许我在第二和第三级(OrderlineItemHeader.OrderLineItemHeaderID
到OrderLineItem.OrderLineItemHeaderId
)之间创建外键。我一直在阅读hierarchyid数据类型,但问题是它们将它们关联在同一个表中。我正在展示的是主要栏目,但每个表格中有五到十列需要的信息。
我正在使用SQL Server 2008,并且将它关联的程序将是VB.NET 4.我无法添加我的图表的图像,因为我是网站的新手。
再次使用食物示例进行说明:
您为拥有美国所有Restaraunts的Food Providor下了一份巨额订单。
下达的订单包含一个巨大的订单列表的一般信息。
OrderID,OrderNO,OrderDate
现在订单中有许多不同类型的食物,这是第二级。
比萨饼,鸡肉,肉类,鱼类。
你订购了1000个,你需要知道什么时候到来。
所以他们给你这些信息,你需要告诉每个人在吃饭时会吃东西。
所以从比萨开始你将有100个星期二乘飞机来。下周将有500人来到水中。其余的陆地在2周内完成。
今天肉类有500人即将到来,但由于他们没有更多的准备,其余的日期缺货。
因此所有这些信息都需要放在tablkes中,因此需要3层模型
答案 0 :(得分:1)
此外还有很多其他工作,但这是基于我们目前讨论的基本概念:
修改强>
基于讨论的第二个图表(保留历史记录中的旧图表)
答案 1 :(得分:0)
在原始问题陈述中,您有:
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