Files
IPZ_1/sql/datamart_schema.sql

188 lines
6.2 KiB
MySQL

create table ETL_WATERMARK
(
ENTITY_NAME VARCHAR2(50) not null
constraint PK_ETL_WATERMARK
primary key,
LAST_KEY NUMBER(20) default 0 not null,
LAST_RUN_TS TIMESTAMP(6) default SYSTIMESTAMP
)
/
create table STG_HOTEL
(
HOTEL_ID NUMBER(10) not null,
HOTEL_CODE VARCHAR2(20) not null,
HOTEL_NAME VARCHAR2(150) not null,
CITY VARCHAR2(100) not null,
COUNTRY_CODE CHAR(2) not null,
COUNTRY_NAME VARCHAR2(100) not null,
CURRENCY VARCHAR2(10) not null,
CHAIN_CODE VARCHAR2(10),
CHAIN_NAME VARCHAR2(100),
STAR_RATING NUMBER(1) not null,
STAR_DESCRIPTION VARCHAR2(20)
)
/
create table DIM_DATE
(
DATE_KEY NUMBER(8) not null
constraint PK_DIM_DATE
primary key,
FULL_DATE DATE not null,
YEAR NUMBER(4) not null,
QUARTER NUMBER(1) not null,
MONTH NUMBER(2) not null,
MONTH_NAME VARCHAR2(10) not null,
WEEK_NUMBER NUMBER(2) not null,
DAY_OF_MONTH NUMBER(2) not null,
DAY_NAME VARCHAR2(10) not null,
IS_WEEKEND NUMBER(1) not null
constraint CK_DIM_DATE_WEEKEND
check (is_weekend IN (0, 1)),
IS_BUSINESS_DAY NUMBER(1) not null
constraint CK_DIM_DATE_BUSINESS
check (is_business_day IN (0, 1)),
SEASON VARCHAR2(10) not null
)
/
create table DIM_HOTEL
(
HOTEL_KEY NUMBER(10) default "IPZ19438"."ISEQ$$_303891".nextval generated as identity
constraint PK_DIM_HOTEL
primary key,
SOURCE_HOTEL_ID NUMBER(10) not null,
HOTEL_CODE VARCHAR2(20) not null,
HOTEL_NAME VARCHAR2(150) not null,
CITY VARCHAR2(100) not null,
COUNTRY_CODE CHAR(2) not null,
COUNTRY_NAME VARCHAR2(100) not null,
CURRENCY VARCHAR2(10) not null,
CHAIN_CODE VARCHAR2(10),
CHAIN_NAME VARCHAR2(100),
STAR_RATING NUMBER(1) not null,
STAR_DESCRIPTION VARCHAR2(20),
EFFECTIVE_DATE DATE not null,
EXPIRY_DATE DATE,
IS_CURRENT NUMBER(1) default 1 not null
constraint CK_DIM_HOTEL_CURRENT
check (is_current IN (0, 1))
)
/
create table DIM_ROOM
(
ROOM_KEY NUMBER(10) generated as identity
constraint PK_DIM_ROOM
primary key,
SOURCE_ROOM_ID NUMBER(10) not null
constraint UQ_DIM_ROOM
unique,
HOTEL_KEY NUMBER(10) not null
constraint FK_DIM_ROOM_HOTEL
references DIM_HOTEL,
ROOM_NUMBER VARCHAR2(10) not null,
FLOOR NUMBER(3) not null,
ROOM_TYPE_CODE VARCHAR2(20) not null,
ROOM_TYPE_DESCRIPTION VARCHAR2(100) not null,
SMOKING_YN NUMBER(1) not null
constraint CK_DIM_ROOM_SMOKING
check (smoking_yn IN (0, 1)),
STANDARD_RATE NUMBER(10, 2) not null
)
/
create table DIM_GUEST
(
GUEST_KEY NUMBER(10) generated as identity
constraint PK_DIM_GUEST
primary key,
SOURCE_GUEST_ID NUMBER(10) not null
constraint UQ_DIM_GUEST
unique,
GUEST_NAME VARCHAR2(150) not null,
CITY VARCHAR2(100),
COUNTRY_CODE CHAR(2),
COUNTRY_NAME VARCHAR2(100)
)
/
create table FACT_ROOM_BOOKING
(
FACT_ID NUMBER(10) default "IPZ19438"."ISEQ$$_303902".nextval generated as identity
constraint PK_FACT_ROOM_BOOKING
primary key,
SOURCE_RB_ID NUMBER(10) not null
constraint UQ_FACT_ROOM_BOOKING_SRC
unique,
HOTEL_KEY NUMBER(10) not null
constraint FK_FACT_HOTEL
references DIM_HOTEL,
ROOM_KEY NUMBER(10) not null
constraint FK_FACT_ROOM
references DIM_ROOM,
GUEST_KEY NUMBER(10) not null
constraint FK_FACT_GUEST
references DIM_GUEST,
BOOKING_CREATED_DATE_KEY NUMBER(8) not null
constraint FK_FACT_BOOKING_DATE
references DIM_DATE,
CHECKIN_DATE_KEY NUMBER(8) not null
constraint FK_FACT_CHECKIN_DATE
references DIM_DATE,
CHECKOUT_DATE_KEY NUMBER(8) not null
constraint FK_FACT_CHECKOUT_DATE
references DIM_DATE,
BOOKING_STATUS VARCHAR2(20) not null,
BOOKING_COUNT NUMBER(1) default 1 not null
constraint CK_FACT_BOOKING_COUNT
check (booking_count = 1),
NIGHTS_STAYED NUMBER(4) not null,
NIGHTLY_RATE NUMBER(10, 2) not null,
TOTAL_AMOUNT NUMBER(12, 2) not null
)
/
create table STG_GUEST
(
SOURCE_GUEST_ID NUMBER(10) not null,
GUEST_NAME VARCHAR2(150) not null,
CITY VARCHAR2(100),
COUNTRY_CODE CHAR(2),
COUNTRY_NAME VARCHAR2(100)
)
/
create table STG_ROOM
(
SOURCE_ROOM_ID NUMBER(10) not null,
HOTEL_CODE VARCHAR2(20) not null,
ROOM_NUMBER VARCHAR2(10) not null,
FLOOR NUMBER(3) not null,
ROOM_TYPE_CODE VARCHAR2(20) not null,
ROOM_TYPE_DESCRIPTION VARCHAR2(100) not null,
SMOKING_YN NUMBER(1) not null,
STANDARD_RATE NUMBER(10, 2) not null,
HOTEL_ID NUMBER(10)
)
/
create table STG_ROOM_BOOKING
(
SOURCE_RB_ID NUMBER(10) not null,
GUEST_ID NUMBER(10) not null,
BOOKING_CREATED_DATE DATE not null,
CHECKIN_DATE DATE not null,
CHECKOUT_DATE DATE not null,
BOOKING_STATUS VARCHAR2(20) not null,
BOOKING_COUNT NUMBER(1) default 1 not null,
NIGHTS_STAYED NUMBER(4) not null,
NIGHTLY_RATE NUMBER(10, 2) not null,
TOTAL_AMOUNT NUMBER(12, 2) not null,
HOTEL_ID NUMBER(10) not null,
ROOM_ID NUMBER(10) not null
)
/