Aşağıdaki durum için temel bir şema tasarımı bulmak zorunda olduğu bir eğitim tatbikatı olarak basit bir veritabanı tasarım görevi yapıyorum:
Üst-alt ürün hiyerarşim var (örneğin, Hammadde> Devam Eden İşler> Son Ürün).
- Siparişler her seviyede verilir.
- Siparişlerin sayısı önümüzdeki 6 ay için haftalık bölümlerde görüntülenebilir.
- Her ürün seviyesi için talep tahmini yapılabilir.
- Önümüzdeki 6 ay içinde herhangi bir hafta için talep tahmini bugün yapılabilir.
- Talep tahmini önümüzdeki 6 ay boyunca haftalık bölümler için yapılır.
Talep Tahmini genellikle hiyerarşide daha yüksek seviyede yapılır (Hammadde veya Devam Eden İşler seviyesi) Daha düşük bir seviyeye (Son Ürün) ayrıştırılmalıdır.
Talep tahmininin daha yüksek bir seviyeden daha düşük bir seviyeye ayrılmasının 2 yolu vardır:
- Kullanıcı son ürün için yüzde dağılımını belirtir. Diyelim ki, Work In Progress için 1000 tahmini var ve kullanıcı, kova 10'daki Son Ürün 1 için% 40 ve Son Ürün 2 için% 60 istediğini söylüyor. Son Ürün 1 için 400 ve Son Ürün 2 için 600 olacaktır.
- Kullanıcı, yalnızca Bölüm 5'teki son ürünlere karşı verilen siparişlere göre ayrıldığını ve Son Ürün 1 ve 2 için bölüm 5'teki siparişlerin sırasıyla 200 ve 800 olduğunu, daha sonra EP1 için tahmini değerin ((200/1000) * 100)% olacağını söylüyor. ve EP2 için '(Devam Eden Çalışma') tahmininin ((800/1000) * 100)% 'si olacaktır.
Tahmin, önümüzdeki 6 ay boyunca haftalık bölümlerde görüntülenebilir ve ideal biçim şu şekilde olmalıdır:
product name | bucket number | week start date | week end date | forecast value | created_on
PRODUCT_HIERARCHY tablosu şöyle görünebilir:
id | name | parent_id
__________________________________________
1 | raw material | (null)
2 | work in progress | 1
3 | end product 1 | 2
4 | end product 2 | 2
ORDERS tablosu şöyle görünebilir:
id | prod_id | order_date | delivery_date | delivered_date
nerede,
prod_id
id
PRODUCT_HIERARCHY tablosuna referans veren yabancı anahtardır ,
Tahmin nasıl saklanır? Böyle bir gereksinim için iyi bir temel şema ne olabilir?
26 haftalık kova için sipariş seçme fikrim:
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);
Ancak bu, güne bakılmaksızın bugünden başlayarak haftalık kovalar verecektir. Oracle'da bunları Pazar'dan Cumartesi haftalarına nasıl dönüştürebilirim?
Lütfen bu veritabanı yapısının tasarlanmasına yardımcı olun.
(Oracle 11g kullanıyor olacak)