2

在此处输入图像描述![在此处输入图像描述][2]我正在开发一个将创建三层结构的数据库。这个想法看起来像这样:

  • 第一级:Order
    • 首要的关键 -OrderID
  • 2级:OrderlineItemHeader
    • 首要的关键 -OrderID
    • 首要的关键 -OrderLineItemHeaderID
  • 第三层:OrderLineItem
    • 首要的关键 -OrderLineItemHeaderID
    • 首要的关键 -OrderLineItemSequence

问题是它不允许我在第二级和第三级(OrderlineItemHeader.OrderLineItemHeaderIDto OrderLineItem.OrderLineItemHeaderId)之间创建外键。我一直在阅读有关 hierarchyid 数据类型的信息,但问题是它们将它们关联到同一张表上。我展示的是主要列,但每个表都有五到十列所需的更多信息。

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

再次以食物为例进行解释:

您为在美国拥有所有餐厅的食品供应商下了大笔订单。

下达的订单包含该庞大订单列表的一般信息。

OrderID、OrderNO、OrderDate

现在Order有许多不同类型的食物,这是第二级。

比萨,鸡肉,肉,鱼。

您每个订购 1000 个,您需要知道什么时候会发生什么。

所以他们给你这些信息,你需要表明每个人在他们要吃饭的时候都会吃饭。

所以从比萨你将有 100 周二空运来。下周将有 500 个水路来。其余的在 2 周内通过陆路运输。

肉明天有 500 份,但由于他们没有更多的准备好,剩下的要延期交货。

所以所有这些信息都需要放在 tablkes 中,因此是 3 层模型

4

2 回答 2

1

在这方面还有很多额外的工作,但这里有一个基于我们目前讨论的基本概念:

在此处输入图像描述

编辑

基于讨论的第二张图(保留旧图作为历史记录)

在此处输入图像描述

于 2011-11-11T21:45:24.833 回答
0

In your original problem statement you have:

3rd Level : OrderLineItem table
PrimaryKey - OrderLineItemHeaderID
PrimaryKey - OrderLineItemSequence

in order to create a foreign key to OrderLineHeader, it's complete PK must be included, so you need:

3rd Level : OrderLineItem table
PrimaryKey - OrderID
PrimaryKey - OrderLineItemHeaderID
PrimaryKey - OrderLineItemSequence

but if all the IDs are artificial than a better solution may be:

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
于 2011-11-11T22:55:28.820 回答