2011-11-11 4 views
2

enter image description here! [입력 이미지 설명은 여기에 있습니다.] [2] 3 계층 구조를 만들 데이터베이스에서 작업 중입니다.나무와 비슷한 주문 SQL

  • 1 단계 : 아이디어는 다음과 같이 것입니다 Order 테이블
    • 기본 키 - OrderID
  • 2 레벨 : OrderlineItemHeader 테이블
    • 기본 키 - OrderID
    • 기본 키 - OrderLineItemHeaderID
  • 3 레벨 : OrderLineItem 테이블
    • 기본 키 - OrderLineItemHeaderID
    • 기본 키 - OrderLineItemSequence 문제는 그것은 나를 사이의 외래 키을 허용하지 않습니다이다

제 2 및 제 3 레벨 (OrderlineItemHeader.OrderLineItemHeaderID 내지 OrderLineItem.OrderLineItemHeaderId)이다. 나는 hierarchyid 데이터 유형에 대해 읽었지만 문제는 그것들이 같은 테이블에 관련되어 있다는 것이다. 내가 보여주고있는 것은 주요 컬럼이지만, 각 테이블은 필요한 정보가 5 ~ 10 개 더 있습니다.

SQL Server 2008을 사용하고 있으며 VB.NET 4와 연결할 프로그램이 있습니다. 웹 사이트를 처음 사용하기 때문에 다이어그램 이미지를 추가 할 수 없습니다.

는 식품 예와 함께 다시 설명을 넣어가는 :

당신은 미국에있는 모든 Restaraunts을 소유하고 음식시 제공자에게 큰 주문을 넣습니다.

배치 된 주문에는 해당 거대한 주문 목록에 대한 일반 정보가 있습니다.

에 OrderID, OrderNO 지금 주문 두 번째 수준입니다 음식의 많은 다른 유형을 가지고

주문일

.

피자, 닭고기, 고기, 생선.

각 1000 개를 주문할 때 무엇이 ​​올지 알 필요가 있습니다.

그래서 그들은 그 정보를 제공하고 모든 사람들이 그들이 먹을 때 먹을 것을 보여줄 필요가 있습니다.

피자 때문에 youll는 공기에 의해 화요일에 오는 것을 가지고있다. 다음 주에 물에 의해 오는 500. 나머지는 2 주 만에 육지로.

육류에는 tmorrow가 있지만, 더 이상 준비가되어 있지 않으므로 나중에 나머지 날짜에 대해 이월됩니다.

그래서 모든 정보는 따라서, tablkes에 넣어되는 3 계층 모델이이 들어가는 추가 작업을 많이하지만, 여기에 기본 개념은 지금까지 우리의 논의에 기반

+0

요구 사항을 해결하기 위해 계층 적 모델이 필요하지는 않습니다. 이것은 단순히 관계형 솔루션처럼 보입니다. 거기에 계층 구조가 필요하다고 생각하는 이유는 무엇입니까? –

+0

저장하려고하는 것을 설명하면 도움이 될 수 있습니다. –

+0

주문에는 많은 주문 헤더가 있고 주문 헤더에는 많은 광고 항목이 있습니다. –

답변

1

이 필요합니다 :

enter image description here

편집

논의를 기반으로 두 번째 다이어그램 (역사 하나 세 이상 유지)

원래 문제 설명에

enter image description here

+0

입니다. 그것은 제 3의 레벨에 대한 두 번째 레벨을 연관시키지 못하지만, 기본 키가 잘못 되었습니까? 그게 전부라고 생각하지만, 테이블을 연관 짓는 데 1 시간을 소비했습니다. –

+0

좋아요. 정말 고마워요. 당신에게 포인트 추천을 해주길 바래요. : p, 맞아요. 우리는 3 단계가 필요합니다. StoreOrderItems에서 동시에 배송되지 않을 것이므로 분할해야한다고 상상해보십시오. –

+0

예 .. 다른 다이어그램을 추가 할 것입니다 –

0

당신이 :

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

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

OrderLineHeader에 외래 키를 생성하기 위해, 그것은 완전한 PK 포함, 그래서 당신이 필요로해야한다입니다

하지만 모든 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