sql >> Databáze >  >> RDS >> Oracle

Návrh jednoduchého schématu pro prognózu dezagregace poptávky

Tvůj poslední komentář je přesně to, co jsem měl na mysli. Skvělé, že to máte!

Protože jsem to začal dělat, dokončil jsem ukázkový kód. Rozdíl oproti tomu, co jste říkali, je v oddělení toho, co se změní, od toho, co se nezmění (raw_material VS raw_material_hist ) s použitím pouze data týdne, což je pondělí a různá kontrolní omezení.

CREATE TABLE raw_material 
  ( 
     material_id     NUMBER PRIMARY KEY, 
     material_blabla VARCHAR2(20) 
  ); 

CREATE TABLE wip 
  ( 
     wip_id     NUMBER PRIMARY KEY, 
     parent_raw NUMBER REFERENCES raw_material(material_id), 
     wip_desc   VARCHAR2(20) 
  ); 

CREATE TABLE end_product 
  ( 
     end_product_id NUMBER PRIMARY KEY, 
     parent_wip     NUMBER REFERENCES wip(wip_id), 
     description    VARCHAR2(20) 
  ); 

CREATE TABLE rm_histo 
  ( 
     material_id NUMBER REFERENCES raw_material(material_id), 
     week_start  DATE CHECK (To_char(week_start, 'D')=1), 
     forecast    NUMBER(8) CHECK (forecast >0), 
     CONSTRAINT pk_rm_histo PRIMARY KEY (material_id, week_start) 
  ); 

CREATE TABLE wip_histo 
  ( 
     wip_id            NUMBER REFERENCES wip(wip_id), 
     week_start        DATE CHECK(To_char(week_start, 'D')=1), 
     wip_user_forecast NUMBER(8) CHECK (wip_user_forecast>0), 
     CONSTRAINT pk_wip_histo PRIMARY KEY (wip_id, week_start) 
  ); 

CREATE TABLE end_prod_histo 
  ( 
     end_product_id         NUMBER REFERENCES end_product(end_product_id), 
     week_start             DATE CHECK(To_char(week_start, 'D')=1), 
     end_prod_user_forecast NUMBER(8) CHECK (end_prod_user_forecast >0) 
  ); 

A nakonec skutečně použijete pohled, abyste viděli předpovídané věci, nebo zhmotněný, pokud máte spoustu dat. Při použití pohledu neduplikujete data, takže je bezpečnější a snadněji je lze měnit/aktualizovat.

Pro vaše případy použití 1 nebo 2 se to nezabývá schématem databáze. Na konci dne to bude jen aktualizovat nějakou hodnotu pro předpověď, logika případů použití 1 nebo 2 by mohla jít v proceduře PL/SQL nebo cokoli, co používáte pro rozhraní.

Edit:Také z vašeho posledního komentáře jste zmiňovali, že máte předpověděnou ručně nastavit oproti vypočítané. Tak jsem přidal takovou rubriku, ale kredity patří vám

Upravit:Pokud jde o číslo kbelíku, použijte pro datum správnou masku, například IW nebo WW . Tyto dvě změny, což je první týden v roce.



  1. Základy tabulkových výrazů, 3. část – Odvozené tabulky, úvahy o optimalizaci

  2. Psycopg2 vloží pythonský slovník do databáze postgres

  3. Bez ohledu na to nemohu dávkovat příkazy MySQL INSERT v režimu spánku

  4. Převod času AM/PM na 24hodinový formát pomocí PHP nebo MySQL?