188 lines
6.2 KiB
MySQL
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
|
|
)
|
|
/
|
|
|