Sample warehouse schema
The examples use this sample warehouse schema.
SQL statements
The following SQL statements create the tables, indexes, and key constraints for the sample warehouse schema.
CREATE TABLE DAILY_FORECAST (
PERKEY INTEGER NOT NULL ,
STOREKEY INTEGER NOT NULL ,
PRODKEY INTEGER NOT NULL ,
QUANTITY_FORECAST INTEGER ,
EXTENDED_PRICE_FORECAST DECIMAL(16,2) ,
EXTENDED_COST_FORECAST DECIMAL(16,2) );
CREATE TABLE DAILY_SALES (
PERKEY INTEGER NOT NULL ,
STOREKEY INTEGER NOT NULL ,
CUSTKEY INTEGER NOT NULL ,
PRODKEY INTEGER NOT NULL ,
PROMOKEY INTEGER NOT NULL ,
QUANTITY_SOLD INTEGER ,
EXTENDED_PRICE DECIMAL(16,2) ,
EXTENDED_COST DECIMAL(16,2) ,
SHELF_LOCATION INTEGER ,
SHELF_NUMBER INTEGER ,
START_SHELF_DATE INTEGER ,
SHELF_HEIGHT INTEGER ,
SHELF_WIDTH INTEGER ,
SHELF_DEPTH INTEGER ,
SHELF_COST DECIMAL(16,2) ,
SHELF_COST_PCT_OF_SALE DECIMAL(16,2) ,
BIN_NUMBER INTEGER ,
PRODUCT_PER_BIN INTEGER ,
START_BIN_DATE INTEGER ,
BIN_HEIGHT INTEGER ,
BIN_WIDTH INTEGER ,
BIN_DEPTH INTEGER ,
BIN_COST DECIMAL(16,2) ,
BIN_COST_PCT_OF_SALE DECIMAL(16,2) ,
TRANS_NUMBER INTEGER ,
HANDLING_CHARGE INTEGER ,
UPC INTEGER ,
SHIPPING INTEGER ,
TAX INTEGER ,
PERCENT_DISCOUNT INTEGER ,
TOTAL_DISPLAY_COST DECIMAL(16,2) ,
TOTAL_DISCOUNT DECIMAL(16,2) ) ;
CREATE TABLE CUSTOMER (
CUSTKEY INTEGER NOT NULL ,
NAME CHAR(30) ,
ADDRESS CHAR(40) ,
C_CITY CHAR(20) ,
C_STATE CHAR(5) ,
ZIP CHAR(5) ,
PHONE CHAR(10) ,
AGE_LEVEL SMALLINT ,
AGE_LEVEL_DESC CHAR(20) ,
INCOME_LEVEL SMALLINT ,
INCOME_LEVEL_DESC CHAR(20) ,
MARITAL_STATUS CHAR(1) ,
GENDER CHAR(1) ,
DISCOUNT DECIMAL(16,2) ) ;
ALTER TABLE CUSTOMER
ADD CONSTRAINT PRIMARY KEY
( CUSTKEY );
CREATE TABLE PERIOD (
PERKEY INTEGER NOT NULL ,
CALENDAR_DATE DATE ,
DAY_OF_WEEK SMALLINT ,
WEEK SMALLINT ,
PERIOD SMALLINT ,
YEAR SMALLINT ,
HOLIDAY_FLAG CHAR(1) ,
WEEK_ENDING_DATE DATE ,
MONTH CHAR(3) ) ;
ALTER TABLE PERIOD
ADD CONSTRAINT PRIMARY KEY
( PERKEY );
CREATE UNIQUE INDEX PERX1 ON PERIOD
( CALENDAR_DATE ASC,
PERKEY ASC );
CREATE UNIQUE INDEX PERX2 ON PERIOD
( WEEK_ENDING_DATE ASC,
PERKEY ASC );
CREATE TABLE PRODUCT (
PRODKEY INTEGER NOT NULL ,
UPC_NUMBER CHAR(11) NOT NULL ,
PACKAGE_TYPE CHAR(20) ,
FLAVOR CHAR(20) ,
FORM CHAR(20) ,
CATEGORY INTEGER ,
SUB_CATEGORY INTEGER ,
CASE_PACK INTEGER ,
PACKAGE_SIZE CHAR(6) ,
ITEM_DESC CHAR(30) ,
P_PRICE DECIMAL(16,2) ,
CATEGORY_DESC CHAR(30) ,
P_COST DECIMAL(16,2) ,
SUB_CATEGORY_DESC CHAR(70) ) ;
ALTER TABLE PRODUCT
ADD CONSTRAINT PRIMARY KEY
( PRODKEY );
CREATE UNIQUE INDEX PRODX2 ON PRODUCT
( CATEGORY ASC,
PRODKEY ASC );
CREATE UNIQUE INDEX PRODX3 ON PRODUCT
( CATEGORY_DESC ASC,
PRODKEY ASC );
CREATE TABLE PROMOTION (
PROMOKEY INTEGER NOT NULL ,
PROMOTYPE INTEGER ,
PROMODESC CHAR(30) ,
PROMOVALUE DECIMAL(16,2) ,
PROMOVALUE2 DECIMAL(16,2) ,
PROMO_COST DECIMAL(16,2) ) ;
ALTER TABLE PROMOTION
ADD CONSTRAINT PRIMARY KEY
( PROMOKEY );
CREATE UNIQUE INDEX PROMOX1 ON PROMOTION
( PROMODESC ASC,
PROMOKEY ASC);
CREATE TABLE STORE (
STOREKEY INTEGER NOT NULL ,
STORE_NUMBER CHAR(2) ,
CITY CHAR(20) ,
STATE CHAR(5) ,
DISTRICT CHAR(14) ,
REGION CHAR(10) ) ;
ALTER TABLE STORE
ADD CONSTRAINT PRIMARY KEY
( STOREKEY );
CREATE INDEX DFX1 ON DAILY_FORECAST ( PERKEY ASC);
CREATE INDEX DFX2 ON DAILY_FORECAST ( STOREKEY ASC);
CREATE INDEX DFX3 ON DAILY_FORECAST ( PRODKEY ASC);
CREATE INDEX DSX1 ON DAILY_SALES ( PERKEY ASC);
CREATE INDEX DSX2 ON DAILY_SALES ( STOREKEY ASC);
CREATE INDEX DSX3 ON DAILY_SALES ( CUSTKEY ASC);
CREATE INDEX DSX4 ON DAILY_SALES ( PRODKEY ASC);
CREATE INDEX DSX5 ON DAILY_SALES ( PROMOKEY ASC);
ALTER TABLE daily_sales ADD CONSTRAINT FOREIGN KEY (perkey)
references period(perkey);
ALTER TABLE daily_sales ADD CONSTRAINT FOREIGN KEY (prodkey)
references product(prodkey);
ALTER TABLE daily_sales ADD CONSTRAINT FOREIGN KEY
(storekey) references store(storekey);
ALTER TABLE daily_sales ADD CONSTRAINT FOREIGN KEY (custkey)
references customer(custkey);
ALTER TABLE daily_sales ADD CONSTRAINT FOREIGN KEY (promokey)
references promotion(promokey);
ALTER TABLE daily_forecast ADD CONSTRAINT FOREIGN KEY (perkey)
references period(perkey);
ALTER TABLE daily_forecast ADD CONSTRAINT FOREIGN KEY (prodkey)
references product(prodkey);
ALTER TABLE daily_forecast ADD CONSTRAINT FOREIGN KEY (storekey)
references store(storekey);
update statistics medium;