2014-05-13 5 views
1

나는 고민 중입니다. 당신이 나를 도울 수 있기를 바랍니다! 이 응용 프로그램은 패션 소매업을위한 MS ACCESS의 ERP 시스템입니다.SQL : 열에서 행, 크기 시스템, 패션으로 전송

질문 : 표 2의 그것의 크기는 시스템에 따라 나는 기사의 해당 SizeID1, SizeID2 등으로 표 3의 행을 추가 할 수 있습니다 어떻게 채워?

: 제 정보가 포함 크기 시스템

ArticleID | SizeType 
-------------------- 
1   | US 
2   | EU 

표 2 : 주문 세부

OrderID | ArticleID | Size1 | Amount1 | Size2 | Amount2 | Size3 | Amount3 
------------------------------------------------------------------------- 
1  | 1   | S  | 1  | M  | 3  | L  | 1 
2  | 2   | 36 | 2  | 38 | 1  | 40 | 3 
3  | 2   | 36 |   | 38 |   | 40 | 
: 다른 지역

SizeID | Size | SizeType 
------------------------ 
1  | S | US 
2  | M | US 
3  | L | US 
4  | XL | US 
5  | 36 | EU 
6  | 38 | EU 
7  | 40 | EU 

표 3에 대한 다른 크기 시스템

OrderID = 3 인 행은 ArticleID 2에 대한 insery 쿼리의 목표입니다. 그런 다음 해당 크기만큼의 금액을 입력 할 수 있습니다. 당신의 도움을 주셔서 감사합니다!!

답변

0

여기서 달성하고자하는 목표를 완전히 명확하게 밝히지는 못했지만, 데이터베이스 디자인이 약간 손상된 것일 수 있습니다.

Table3을 스프레드 시트 인 것처럼 디자인했기 때문에 스프레드 시트 작업에 익숙했을 것입니다. 데이터베이스 테이블 (예 : Size1, Size2, Size3 ....)에서 반복되는 필드가 생길 때마다 더 정규화해야한다는 신호입니다.

데이터베이스 정규화 : http://www.studytonight.com/dbms/database-normalization.php (일반 정보는 데이터베이스 정규화에 대해서는 일반적으로 google을 참조하십시오).

제 테이블 :

ArticleID | ArticleName | SizeType(FK to SizeType table) 
1   | Blue T-shirt | 1 
2   | Red T-shirt | 2 

SizeType 테이블 :

SizeTypeID | SizeTypeDescription 
1   | US 
2   | EU 

크기 테이블 :

SizeID | SizeType(FK) | SizeDescription 
1  | 1   | 38 
2  | 1   | 40 
3  | 2   | M 
4  | 2   | L 

항목

나는 더 이런 식으로 뭔가를해야합니다 의심 표 :

ItemID | ArticleID(FK) | SizeID(FK) 
1  | 1    | 1  'Blue T-shirt size 38 
2  | 1    | 2  'Blue T-shirt size 40 
3  | 2    | 3  'Red T-shirt size M 
4  | 2    | 4  'Red T-shirt size L 

Orders 테이블 :

OrderID | CustomerID (FK) | OrderDate | etc. (other info you need to store about an order) 
1  | 2458   | 01/01/2001| 
2  | 3452   | 02/02/2002| 

주문 정보 테이블 : 그래서 여기

OrderDetailsID | OrderID(FK) | ItemID (FK) | Quantity 
1    | 1   | 3   | 6 
2    | 1   | 4   | 3 
3    | 2   | 1   | 1 

ID 2458에 다시 모든 고객을 연결하는 주문했습니다 6 배 크기 M 레드 T 셔츠 3 배 크기 L 레드 티셔츠 및 ID 3452 고객은 1x 크기 38 블루 티셔츠를 주문했습니다.또는 제 테이블에 (가격이 항목의 크기에 따라 변화하는 경우) 또한 현실적으로 어느 항목 테이블에서 PRICE 필드가 줄

주 (가격은 모든 크기가 같은 경우). CustomerID는 고객 세부 정보 (이름, 주소, 사용자 이름/암호 등)가 포함 된 테이블로 다시 연결됩니다.

여기에 나와 있지 않은 다른 것들이있을 수도 있습니다. 예를 들어 기사 테이블이나 Items 테이블에 해당 제품을 구입 한 사람을 알려주는 supplierID가있을 수 있습니다. supplierItemNo는 해당 항목을 주문할 때 사용하는 고유 코드 (바코드?)입니다.

데이터베이스가 제대로 구성되면 레코드 등을 삽입하는 쿼리를 작성하는 것이 훨씬 쉬워집니다.