"PROD_ID"
NUMBER(6) NOT NULL,
"PROD_NAME" VARCHAR2(50 byte) NOT NULL,
"PROD_DESC" VARCHAR2(4000 byte) NOT NULL,
"PROD_SUBCATEGORY" VARCHAR2(50 byte) NOT NULL,
"PROD_SUBCAT_DESC" VARCHAR2(2000 byte) NOT NULL,
"PROD_CATEGORY" VARCHAR2(50 byte) NOT NULL,
"PROD_CAT_DESC" VARCHAR2(2000 byte) NOT NULL,
"PROD_WEIGHT_CLASS" NUMBER(2), "PROD_UNIT_OF_MEASURE" VARCHAR2(20 byte),
"PROD_PACK_SIZE" VARCHAR2(30 byte),
"SUPPLIER_ID" NUMBER(6),
"PROD_STATUS" VARCHAR2(20 byte) NOT NULL,
"PROD_LIST_PRICE" NUMBER(8, 2) NOT NULL,
"PROD_MIN_PRICE" NUMBER(8, 2) NOT NULL,
CONSTRAINT "PRODUCTS_PK" PRIMARY KEY("PROD_ID") );
|
"SH"."PRODUCTS" IS 'dimension table'; | |
|
PROD_ID IS 'primary key'; | |
|
PROD_NAME IS 'product name'; | |
|
PROD_DESC IS 'product description'; | |
|
PROD_SUBCATEGORY IS 'product subcategory'; | |
|
PROD_SUBCAT_DESC IS 'product subcategory description'; | |
|
PROD_CATEGORY IS 'product category'; | |
|
PROD_CAT_DESC IS 'product category description'; | |
|
PROD_WEIGHT_CLASS IS 'product weight class'; | |
|
PROD_UNIT_OF_MEASURE IS 'product unit of measure'; | |
|
PROD_PACK_SIZE IS 'product package size'; | |
|
SUPPLIER_ID IS 'this column'; | |
|
PROD_STATUS IS 'product status'; | |
|
PROD_LIST_PRICE IS 'product list price'; | |
|
PROD_MIN_PRICE IS 'product minimum price' |
Additional indices:
|
SH.PRODUCTS_PK,INDEX | |
|
SH.PRODUCTS_PROD_CAT_IX,INDEX | |
|
SH.PRODUCTS_PROD_STATUS_BIX,INDEX | |
|
SH.PRODUCTS_PROD_SUBCAT_IX,INDEX |
"CUST_ID"
NUMBER NOT NULL,
"CUST_FIRST_NAME" VARCHAR2(20 byte) NOT NULL,
"CUST_LAST_NAME" VARCHAR2(40 byte) NOT NULL,
"CUST_GENDER" CHAR(1 byte),
"CUST_YEAR_OF_BIRTH" NUMBER(4),
"CUST_MARITAL_STATUS" VARCHAR2(20 byte),
"CUST_STREET_ADDRESS" VARCHAR2(40 byte) NOT NULL,
"CUST_POSTAL_CODE" VARCHAR2(10 byte) NOT NULL,
"CUST_CITY" VARCHAR2(30 byte) NOT NULL,
"CUST_STATE_PROVINCE" VARCHAR2(40 byte),
"COUNTRY_ID" CHAR(2 byte) NOT NULL,
"CUST_MAIN_PHONE_NUMBER" VARCHAR2(25 byte),
"CUST_INCOME_LEVEL" VARCHAR2(30 byte),
"CUST_CREDIT_LIMIT" NUMBER,
"CUST_EMAIL" VARCHAR2(30 byte),
CONSTRAINT "CUSTOMERS_COUNTRY_FK"
FOREIGN KEY("COUNTRY_ID")
REFERENCES "SH"."COUNTRIES"("COUNTRY_ID") DISABLE,
CONSTRAINT "CUSTOMERS_PK" PRIMARY KEY("CUST_ID"));
|
CUSTOMERS IS 'dimension table'; | |
|
CUST_ID IS 'primary key'; | |
|
CUST_FIRST_NAME IS 'first name of the customer'; | |
|
CUST_LAST_NAME IS 'last name of the customer'; | |
|
CUST_GENDER IS 'gender; low cardinality attribute'; | |
|
CUST_YEAR_OF_BIRTH IS 'customer year of birth'; | |
|
CUST_MARITAL_STATUS IS 'customer marital status; low cardinality attribute'; | |
|
CUST_STREET_ADDRESS IS 'customer street address'; | |
|
CUST_POSTAL_CODE IS 'postal code of the customer'; | |
|
CUST_CITY IS 'city where the customer lives'; | |
|
CUST_STATE_PROVINCE IS 'customer geography: state or province'; | |
|
COUNTRY_ID IS 'foreign key to the countries table (snowflake)'; | |
|
CUST_MAIN_PHONE_NUMBER IS 'customer main phone number'; | |
|
CUST_INCOME_LEVEL" IS 'customer income level'; | |
|
CUST_CREDIT_LIMIT" IS 'customer credit limit'; | |
|
CUST_EMAIL IS 'customer 'email id' |
Additional indices:
| SH.CUSTOMERS_GENDER_BIX,INDEX | |
| SH.CUSTOMERS_MARITAL_BIX,INDEX | |
| SH.CUSTOMERS_PK,INDEX | |
| SH.CUSTOMERS_YOB_BIX,INDEX |
"CHANNEL_ID"
CHAR(1 byte) NOT NULL,
"CHANNEL_DESC" VARCHAR2(20 byte) NOT NULL,
"CHANNEL_CLASS" VARCHAR2(20 byte),
CONSTRAINT "CHAN_PK" PRIMARY KEY("CHANNEL_ID") );
| "CHANNELS" IS 'small dimension table'; | |
| CHANNEL_ID IS 'primary key column'; | |
| CHANNEL_DESC IS 'e.g. telesales, internet, catalog'; | |
| CHANNEL_CLASS IS 'e.g. direct, indirect' |
"COUNTRY_ID"
CHAR(2 byte) NOT NULL,
"COUNTRY_NAME" VARCHAR2(40 byte) NOT NULL,
"COUNTRY_SUBREGION" VARCHAR2(30 byte),
"COUNTRY_REGION" VARCHAR2(20 byte),
CONSTRAINT "COUNTRY_PK" PRIMARY KEY("COUNTRY_ID") );
| "SH"."COUNTRIES" IS 'country dimension table (snowflake)'; | |
| COUNTRY_ID IS 'primary key'; | |
| COUNTRY_NAME IS 'country name'; | |
| COUNTRY_SUBREGION IS 'e.g. Western Europe, to allow hierarchies'; | |
| COUNTRY_REGION IS 'e.g. Europe, Asia' |
"PROMO_ID" NUMBER(6) NOT NULL,
"PROMO_NAME" VARCHAR2(20 byte) NOT NULL,
"PROMO_SUBCATEGORY" VARCHAR2(30 byte) NOT NULL,
"PROMO_CATEGORY" VARCHAR2(30 byte) NOT NULL,
"PROMO_COST" NUMBER(10, 2) NOT NULL,
"PROMO_BEGIN_DATE" DATE NOT NULL,
"PROMO_END_DATE" DATE NOT NULL,
CONSTRAINT "PROMO_PK" PRIMARY KEY("PROMO_ID") );
|
TABLE "SH"."PROMOTIONS" IS 'dimension table without a PK-FK relationship with the facts table, to show outer join functionality'; | |
|
PROMO_ID IS 'primary key column'; | |
|
PROMO_NAME IS 'promotion description'; | |
|
PROMO_SUBCATEGORY IS 'enables to investigate promotion hierarchies'; | |
|
PROMO_CATEGORY IS 'promotion category'; | |
|
PROMO_COST IS 'promotion cost, to do promotion effect calculations'; | |
|
PROMO_BEGIN_DATE IS 'promotion begin day'; | |
|
PROMO_END_DATE IS 'promotion end day' |
"TIME_ID" DATE NOT NULL,
"DAY_NAME" VARCHAR2(9 byte) NOT NULL,
"DAY_NUMBER_IN_WEEK" NUMBER(1) NOT NULL,
"DAY_NUMBER_IN_MONTH" NUMBER(2) NOT NULL,
"CALENDAR_WEEK_NUMBER" NUMBER(2) NOT NULL,
"FISCAL_WEEK_NUMBER" NUMBER(2) NOT NULL,
"WEEK_ENDING_DAY" DATE NOT NULL,
"CALENDAR_MONTH_NUMBER" NUMBER(2) NOT NULL,
"FISCAL_MONTH_NUMBER" NUMBER(2) NOT NULL,
"CALENDAR_MONTH_DESC" VARCHAR2(8 byte) NOT NULL,
"FISCAL_MONTH_DESC" VARCHAR2(8 byte) NOT NULL,
"DAYS_IN_CAL_MONTH" NUMBER NOT NULL,
"DAYS_IN_FIS_MONTH" NUMBER NOT NULL,
"END_OF_CAL_MONTH" DATE NOT NULL,
"END_OF_FIS_MONTH" DATE NOT NULL,
"CALENDAR_MONTH_NAME" VARCHAR2(9 byte) NOT NULL,
"FISCAL_MONTH_NAME" VARCHAR2(9 byte) NOT NULL,
"CALENDAR_QUARTER_DESC" CHAR(7 byte) NOT NULL,
"FISCAL_QUARTER_DESC" CHAR(7 byte) NOT NULL,
"DAYS_IN_CAL_QUARTER" NUMBER NOT NULL,
"DAYS_IN_FIS_QUARTER" NUMBER NOT NULL,
"END_OF_CAL_QUARTER" DATE NOT NULL,
"END_OF_FIS_QUARTER" DATE NOT NULL,
"CALENDAR_QUARTER_NUMBER" NUMBER(1) NOT NULL,
"FISCAL_QUARTER_NUMBER" NUMBER(1) NOT NULL,
"CALENDAR_YEAR" NUMBER(4) NOT NULL,
"FISCAL_YEAR" NUMBER(4) NOT NULL,
"DAYS_IN_CAL_YEAR" NUMBER NOT NULL,
"DAYS_IN_FIS_YEAR" NUMBER NOT NULL,
"END_OF_CAL_YEAR" DATE NOT NULL,
"END_OF_FIS_YEAR" DATE NOT NULL,
CONSTRAINT "TIME_PK" PRIMARY KEY("TIME_ID"));
|
TABLE "SH"."TIMES" IS 'Time dimension table to support multiple hierarchies and materialized views'; | |
|
TIME_ID IS 'primary key; day date, finest granularity, CORRECT ORDER'; | |
|
DAY_NAME IS 'Monday to Sunday, repeating'; | |
|
DAY_NUMBER_IN_WEEK IS '1 to 7, repeating'; | |
|
DAY_NUMBER_IN_MONTH IS '1 to 31, repeating'; | |
|
CALENDAR_WEEK_NUMBER IS '1 to 53, repeating'; | |
|
FISCAL_WEEK_NUMBER IS '1 to 53, repeating'; | |
|
WEEK_ENDING_DAY IS 'date of last day in week, CORRECT ORDER'; | |
|
CALENDAR_MONTH_NUMBER IS '1 to 12, repeating'; | |
|
FISCAL_MONTH_NUMBER IS '1 to 12, repeating'; | |
|
CALENDAR_MONTH_DESC IS 'e.g. 1998-01, CORRECT ORDER'; | |
|
FISCAL_MONTH_DESC IS 'e.g. 1998-01, CORRECT ORDER'; | |
|
DAYS_IN_CAL_MONTH IS 'e.g. 28, 31, repeating'; | |
|
DAYS_IN_FIS_MONTH IS 'e.g. 25, 32, repeating'; | |
|
END_OF_CAL_MONTH IS 'last day of calendar month'; | |
|
END_OF_FIS_MONTH IS 'last day of fiscal month'; | |
|
CALENDAR_MONTH_NAME IS 'January to December, repeating'; | |
|
FISCAL_MONTH_NAME IS 'January to December, repeating'; | |
|
CALENDAR_QUARTER_DESC IS 'e.g. 1998-Q1, CORRECT ORDER'; | |
|
FISCAL_QUARTER_DESC IS 'e.g. 1999-Q3, CORRECT ORDER'; | |
|
DAYS_IN_CAL_QUARTER IS 'e.g. 88, 90, repeating'; | |
|
DAYS_IN_FIS_QUARTER IS 'e.g. 88, 90, repeating'; | |
|
END_OF_CAL_QUARTER IS 'last day of calendar quarter'; | |
|
END_OF_FIS_QUARTER IS 'last day of fiscal quarter'; | |
|
CALENDAR_QUARTER_NUMBER IS '1 to 4, repeating'; | |
|
FISCAL_QUARTER_NUMBER IS '1 to 4, repeating'; | |
|
CALENDAR_YEAR IS 'e.g. 1999, CORRECT ORDER'; | |
|
FISCAL_YEAR IS 'e.g. 1999, CORRECT ORDER'; | |
|
DAYS_IN_CAL_YEAR IS '365,366 repeating'; | |
|
DAYS_IN_FIS_YEAR IS 'e.g. 355, 364, repeating'; | |
|
END_OF_CAL_YEAR IS 'last day of cal year'; | |
|
END_OF_FIS_YEAR IS 'last day of fiscal year' |