Дерево как база данных для заказов SQL - PullRequest
2 голосов
/ 12 ноября 2011

enter image description here! [Введите описание изображения здесь] [2] Я работаю над базой данных, которая создаст трехуровневую структуру.Идея будет выглядеть так:

  • 1-й уровень: Order таблица
    • Первичный ключ - OrderID
  • 2-йУровень: OrderlineItemHeader таблица
    • Первичный ключ - OrderID
    • Первичный ключ - OrderLineItemHeaderID
  • 3-й уровень: OrderLineItem таблица
    • PrimaryKey - OrderLineItemHeaderID
    • PrimaryKey - OrderLineItemSequence

Проблема в том, что он не позволяет мне сделать внешний ключ междувторой и третий уровни (OrderlineItemHeader.OrderLineItemHeaderID до OrderLineItem.OrderLineItemHeaderId).Я читал о типе данных иерархии, но проблема в том, что они связывают их в одной таблице.Я показываю основные столбцы, но каждая таблица содержит от пяти до десяти столбцов необходимой информации.

Я использую SQL Server 2008, и программа, которая будет связывать его, будет VB.NET 4. Iне могу добавить изображение моей диаграммы, потому что я новичок на сайте.

Собираемся поставить объяснение снова с Примером еды:

Вы размещаете огромный Заказ для Поставщика еды, который владеет всеми ресторанами в США.

Размещенный Заказ имеет общую информацию для этого огромного списка заказов.

OrderID, OrderNO, OrderDate

Теперь, когда в Order есть много разных типов продуктов, это второй уровень.

Пицца, Курица, Мясо, Рыба.

Вы заказываете 1000 штук каждого, и вам нужно знать, что будет, когда.

Таким образом, они дают вам эту информацию, и вы должны показать, что все будут есть, когда они будут есть.

Так что из Пиццы у вас будет 100 прибывающих во вторник по воздуху.500 приходит по воде на следующей неделе.а отдых по суше через 2 недели.

Мясо имеет 500 грядущих завтра, но так как у них нет больше готовности, его оставляют на будущее.

Таким образом, вся эта информация должна быть помещена в tablkes, следовательно, 3-х уровневая модель

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

В этом много дополнительной работы, но вот базовая концепция, основанная на нашем обсуждении:

enter image description here

EDIT

Вторая диаграмма, основанная на обсуждении (Сохранение старой для истории)

enter image description here

0 голосов
/ 12 ноября 2011

В исходной постановке задачи у вас есть:

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

Чтобы создать внешний ключ для OrderLineHeader, необходимо включить его полный PK, поэтому вам необходимо:

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

но если все идентификаторы являются искусственными, то лучшим решением может быть:

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
...