Je laatste opmerking is precies wat ik bedoelde. Cool om te zien dat je het snapt!
Sinds ik ermee begonnen was, heb ik een voorbeeldcode afgemaakt. Het verschil met wat je zei, is het scheiden van wat zal veranderen van wat niet zal veranderen (raw_material
VS raw_material_hist
) alleen de datum gebruiken voor de week, die maandag is , en verschillende controlebeperkingen.
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)
);
En aan het einde gebruik je inderdaad een weergave om de voorspelde dingen te zien, of een gematerialiseerde als je tonnen gegevens hebt. Door een weergave te gebruiken, dupliceert u de gegevens niet, dus het is veiliger en gemakkelijker om te wijzigen/bijwerken.
Voor uw use cases 1 of 2 heeft dit geen betrekking op het databaseschema. Aan het eind van de dag zal het gewoon een waarde voor de voorspelling bijwerken, de logica van use cases 1 of 2 zou kunnen passen in een PL/SQL-procedure of wat je ook gebruikt voor de interface.
Bewerken:ook uit uw laatste opmerking vermeldde u dat de voorspelde handmatig is ingesteld VS de berekende. Dus ik heb zo'n column toegevoegd, maar de credits gaan naar jou
Bewerk bis:Wat betreft het emmernummer, gebruik gewoon een goed masker voor de datum, zoals IW
of WW
. Deze twee veranderingen zijn de eerste week van het jaar.