-- Insert Records to Operational Database Insert Into Warehouse Values ('W1','Warehouse1'); Insert Into Warehouse Values ('W2','Warehouse2'); Insert Into Warehouse Values ('W3','Warehouse3'); Insert Into Warehouse Values ('W4','Warehouse4'); Insert Into Warehouse Values ('W5','Warehouse5');
Insert Into Truck Values ('Truck1', 250, 'Medium', 1.2); Insert Into Truck Values ('Truck2', 300, 'Medium', 1.5); Insert Into Truck Values ('Truck3', 100, 'Small', 0.8); Insert Into Truck Values ('Truck4', 550, 'Large', 2.3); Insert Into Truck Values ('Truck5', 650, 'Large', 2.5);
Insert Into Trip Values ('Trip1', to_date('14-Apr-2013', 'DD-MON-YYYY'), 370, 'Truck1'); Insert Into Trip Values ('Trip2', to_date('14-Apr-2013', 'DD-MON-YYYY'), 570, 'Truck2'); Insert Into Trip Values ('Trip3', to_date('14-Apr-2013', 'DD-MON-YYYY'), 250, 'Truck3'); Insert Into Trip Values ('Trip4', to_date('15-Jul-2013', 'DD-MON-YYYY'), 450, 'Truck1'); Insert Into Trip Values ('Trip5', to_date('15-Jul-2013', 'DD-MON-YYYY'), 175, 'Truck2');
Insert Into TripFrom Values ('Trip1', 'W1'); Insert Into TripFrom Values ('Trip1', 'W4'); Insert Into Destination Values ('Trip2', 'M2');
sql
CREATE TABLE TruckDim1 AS SELECT TruckID, VolCapacity, WeightCategory, CostPerKm FROM Truck;
ALTER TABLE TruckDim1 ADD CONSTRAINT PK_TruckDim1 PRIMARY KEY (TruckID);
INSERT INTO TripSeason1 (SeasonName) VALUES ('Summer'); INSERT INTO TripSeason1 (SeasonName) VALUES ('Autumn'); INSERT INTO TripSeason1 (SeasonName) VALUES ('Winter'); INSERT INTO TripSeason1 (SeasonName) VALUES ('Spring'); COMMIT;
sql
CREATE TABLE TripDim1 AS SELECT * FROM trip;
CREATE TABLE TripDim1 AS SELECT t.TripID, t.TripDate, t.TotalKm, CAST( CASE WHEN TO_CHAR(t.TripDate,'MM') IN ('12','01','02') THEN 'Summer' WHEN TO_CHAR(t.TripDate,'MM') IN ('03','04','05') THEN 'Autumn' WHEN TO_CHAR(t.TripDate,'MM') IN ('06','07','08') THEN 'Winter' ELSE 'Spring' END AS VARCHAR2(10) ) AS SeasonName FROM Trip t;
ALTER TABLE TripDim1 ADD CONSTRAINT PK_TripDim1 PRIMARY KEY (TripID); ALTER TABLE TripDim1 ADD CONSTRAINT FK_TripDim1_Season FOREIGN KEY (SeasonName) REFERENCES TripSeason1(SeasonName);
sql
CREATE TABLE BridgeTableDim1 AS SELECT * FROM destination;
CREATE TABLE BridgeTableDim1 AS SELECT TripID, StoreID FROM Destination; -- 操作库中记录每次行程送到哪些门店
ALTER TABLE BridgeTableDim1 ADD CONSTRAINT PK_BridgeDim1 PRIMARY KEY (TripID, StoreID);
-- 观察事实表 SELECT * FROM TruckFact1 ORDER BY TripID;
-- 抽样核对:期望值 = TotalKm * CostPerKm SELECT f.TripID, d.TotalKm, tr.CostPerKm, ROUND(d.TotalKm * tr.CostPerKm, 2) AS Expected, f.TotalDeliveryCost FROM TruckFact1 f JOIN TripDim1 d ON d.TripID = f.TripID JOIN TruckDim1 tr ON tr.TruckID = f.TruckID ORDER BY f.TripID;