나는 다음과 같은 경우에 대한 기본 스키마 디자인을 고안 해야하는 훈련 연습으로 간단한 데이터베이스 디자인 작업을 수행하고 있습니다.
제품의 부모-자식 계층이 있습니다 (예 : 원자재> 진행중인 작업> 최종 제품).
- 각 레벨에서 주문이 이루어집니다.
- 다음 6 개월 동안 매주 주문량을 볼 수 있습니다.
- 각 제품 레벨에 대한 수요 예측을 수행 할 수 있습니다.
- 향후 6 개월 이내에 모든 주에 대한 수요 예측을 오늘 수행 할 수 있습니다.
- 수요 예측은 다음 6 개월 동안 매주 버킷에 대해 수행됩니다.
수요 예측은 일반적으로 높은 수준의 계층 (원자재 또는 진행중인 작업 레벨)에서 수행됩니다. 하위 레벨 (최종 제품)로 분리해야합니다.
수요 예측을 상위 레벨에서 하위 레벨로 분리 할 수있는 두 가지 방법이 있습니다.
- 사용자는 최종 제품의 배포 비율을 지정합니다. 예를 들어, Work In Progress.에 대한 예측 1000이 있고 사용자가 버킷 10의 최종 제품 1에 대해 40 %, 최종 제품 2에 대해 60 %를 원한다고 말합니다. 그런 다음 지금부터 10 주 (일요일부터 토요일까지), 예측 값 최종 제품 1의 경우 400이고 최종 제품 2의 경우 600입니다.
- 사용자는 버킷 5의 최종 제품에 대한 주문에 따라 분리하고 최종 제품 1 및 2의 버킷 5의 주문은 각각 200과 800이며 EP1의 예측 값은 ((200/1000) * 100) % EP2의 경우 '작업 진행 중'에 대한 예측의 ((800/1000) * 100) %입니다.
향후 6 개월 동안 주간 버킷에서 예측을 볼 수 있으며 이상적인 형식은 다음과 같아야합니다.
product name | bucket number | week start date | week end date | forecast value | created_on
PRODUCT_HIERARCHY 테이블은 다음과 같습니다.
id | name | parent_id
__________________________________________
1 | raw material | (null)
2 | work in progress | 1
3 | end product 1 | 2
4 | end product 2 | 2
ORDERS 테이블 은 다음과 같습니다.
id | prod_id | order_date | delivery_date | delivered_date
어디,
prod_id
id
PRODUCT_HIERARCHY 테이블 을 참조 하는 외래 키입니다 .
예측을 저장하는 방법? 그러한 요구 사항에 적합한 기본 스키마는 무엇입니까?
주간 버킷 26 개 주문을 선택하는 아이디어는 다음과 같습니다.
SELECT
COUNT(*) TOTAL_ORDERS,
WIDTH_BUCKET(
delivery_date,
SYSDATE,
ADD_MONTHS(sysdate, 6),
TO_NUMBER( TO_CHAR(SYSDATE,'DD-MON-YYYY') - TO_CHAR(ADD_MONTHS(sysdate, 6),'DD-MON-YYYY') ) / 7
) BUCKET_NO
FROM
orders_table
WHERE
delivery_date BETWEEN SYSDATE AND ADD_MONTHS(sysdate, 6);
그러나 이것은 오늘과 상관없이 오늘부터 시작되는 주간 버킷을 제공합니다. Oracle에서 일요일에서 토요일로 어떻게 변환 할 수 있습니까?
이 데이터베이스 구조 설계에 도움을주십시오.
(Oracle 11g를 사용합니다)