CREATE TABLE `fact_service` (
	`service_id` int PRIMARY KEY,
	`inventory_id` int ,
	`service_date` int ,
	`store_id` int ,
	`service_cost` DECIMAL ,
	`service_type_id` int 
);

CREATE TABLE `dim_customer` (
	`customer_id` int PRIMARY KEY,
	`name` varchar(64) ,
	`birth_date` DATE ,
	`email` varchar(64) ,
	`address` varchar(64) ,
	`city` varchar(64) ,
	`country` varchar(64) ,
	`postal_code` varchar(64) 
);

CREATE TABLE `dim_calendar` (
	`date_id` int PRIMARY KEY,
	`date` DATE ,
	`day_name` varchar(64) ,
	`day_abbrv` varchar(64) ,
	`calendar_month` int ,
	`calendar_quarter` int ,
	`calendar_year` int ,
	`calendar_month_year` int ,
	`is_weekend` BOOLEAN ,
	`month_end` BOOLEAN ,
	`week_num` int 
);

CREATE TABLE `fact_rentals` (
	`rental_id` int PRIMARY KEY,
	`customer_id` int ,
	`store_id` int ,
	`staff_id` int ,
	`inventory_id` int ,
	`equipment_hash_FK` INT ,
	`rent_start` int ,
	`rent_end` int ,
	`payment_date` int ,
	`payment_deadline` int ,
	`rent_value` DECIMAL
);

CREATE TABLE `dim_equipment` (
	`equipment_id` int PRIMARY KEY,
	`name` TEXT ,
	`type` TEXT ,
	`version` TEXT
);

CREATE TABLE `dim_store` (
	`sk_store_id` int PRIMARY KEY,
	`nk_store_id` int ,
	`store_manager_id` int ,
	`store_manager_start_date` DATE ,
	`store_manager_end_date` DATE ,
	`active_manager` varchar(64) ,
	`store_address` varchar(64) ,
	`store_address2` varchar(64) ,
	`store_postal_code` varchar(64) ,
	`store_city` varchar(64) ,
	`store_country` varchar(64)
);

CREATE TABLE `bridge_equipment` (
	`equipment_hash_DK` int PRIMARY KEY,
	`id_FK` int 
);

CREATE TABLE `dim_service_type` (
	`service_type_id` INT PRIMARY KEY,
	`service_name` varchar(64)
);

CREATE TABLE `dim_staff` (
	`staff_id` int PRIMARY KEY,
	`staff_full_name` varchar(64) ,
	`staff_address` varchar(64) ,
	`staff_city` varchar(64) ,
	`staff_country` varchar(64) ,
	`staff_email` varchar(64) 
);

CREATE TABLE `dim_car` (
	`inventory_id` int PRIMARY KEY,
	`production_year` int ,
	`model` varchar(64) ,
	`producer` varchar(64) ,
	`fuel_type` varchar(64) ,
	`license_plate` varchar(64) ,
	`store_id` int ,
	`is_rented` varchar(64) ,
	`is_sold` varchar(64)
);

ALTER TABLE `fact_service` ADD CONSTRAINT `fact_service_fk0` FOREIGN KEY (`inventory_id`) REFERENCES `dim_cars`(`inventory_id`);

ALTER TABLE `fact_service` ADD CONSTRAINT `fact_service_fk1` FOREIGN KEY (`service_date`) REFERENCES `dim_calendar`(`date_id`);

ALTER TABLE `fact_service` ADD CONSTRAINT `fact_service_fk2` FOREIGN KEY (`store_id`) REFERENCES `dim_store`(`sk_store_id`);

ALTER TABLE `fact_service` ADD CONSTRAINT `fact_service_fk3` FOREIGN KEY (`service_type_id`) REFERENCES `dim_service_type`(`service_type_id`);

ALTER TABLE `fact_rentals` ADD CONSTRAINT `fact_rentals_fk0` FOREIGN KEY (`customer_id`) REFERENCES `dim_customer`(`customer_id`);

ALTER TABLE `fact_rentals` ADD CONSTRAINT `fact_rentals_fk1` FOREIGN KEY (`store_id`) REFERENCES `dim_store`(`sk_store_id`);

ALTER TABLE `fact_rentals` ADD CONSTRAINT `fact_rentals_fk2` FOREIGN KEY (`staff_id`) REFERENCES `dim_staff`(`staff_id`);

ALTER TABLE `fact_rentals` ADD CONSTRAINT `fact_rentals_fk3` FOREIGN KEY (`inventory_id`) REFERENCES `dim_cars`(`inventory_id`);

ALTER TABLE `fact_rentals` ADD CONSTRAINT `fact_rentals_fk4` FOREIGN KEY (`equipment_hash_FK`) REFERENCES `bridge_equipment`(`equipment_hash_DK`);

ALTER TABLE `fact_rentals` ADD CONSTRAINT `fact_rentals_fk5` FOREIGN KEY (`rent_start`) REFERENCES `dim_calendar`(`date_id`);

ALTER TABLE `fact_rentals` ADD CONSTRAINT `fact_rentals_fk6` FOREIGN KEY (`rent_end`) REFERENCES `dim_calendar`(`date_id`);

ALTER TABLE `fact_rentals` ADD CONSTRAINT `fact_rentals_fk7` FOREIGN KEY (`payment_date`) REFERENCES `dim_calendar`(`date_id`);

ALTER TABLE `fact_rentals` ADD CONSTRAINT `fact_rentals_fk8` FOREIGN KEY (`payment_deadline`) REFERENCES `dim_calendar`(`date_id`);

ALTER TABLE `bridge_equipment` ADD CONSTRAINT `bridge_equipment_fk0` FOREIGN KEY (`id_FK`) REFERENCES `dim_equipment`(`equipment_id`);











