diff --git a/database/airlinedatabase/airline-agency.sql b/database/airlinedatabase/airline-agency.sql index 9d71759..b6c9332 100644 --- a/database/airlinedatabase/airline-agency.sql +++ b/database/airlinedatabase/airline-agency.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1:3306 --- Generation Time: Aug 15, 2026 at 12:25 PM +-- Generation Time: Aug 16, 2026 at 04:36 AM -- Server version: 8.4.7 -- PHP Version: 8.3.28 @@ -64,8 +64,8 @@ DROP TABLE IF EXISTS `bookings`; CREATE TABLE IF NOT EXISTS `bookings` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` bigint UNSIGNED NOT NULL, - `flight_id` bigint UNSIGNED NOT NULL, - `tour_date_id` bigint UNSIGNED NOT NULL, + `flight_id` bigint UNSIGNED DEFAULT NULL, + `tour_date_id` bigint UNSIGNED DEFAULT NULL, `adult_count` int UNSIGNED NOT NULL, `child_count` int UNSIGNED NOT NULL, `total_price` int UNSIGNED NOT NULL, @@ -74,9 +74,9 @@ CREATE TABLE IF NOT EXISTS `bookings` ( `status` tinyint NOT NULL COMMENT '0 = pending\r\n1 = confirmed\r\n2 = cancelled', `updated_at` timestamp NOT NULL, PRIMARY KEY (`id`), - KEY `bookings_fk1` (`user_id`), KEY `bookings_fk2` (`flight_id`), - KEY `bookings_fk3` (`tour_date_id`) + KEY `bookings_fk3` (`tour_date_id`), + KEY `bookings_fk1` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf32 COLLATE=utf32_persian_ci; -- -------------------------------------------------------- @@ -101,6 +101,21 @@ CREATE TABLE IF NOT EXISTS `booking_passengers` ( -- -------------------------------------------------------- +-- +-- Table structure for table `cities` +-- + +DROP TABLE IF EXISTS `cities`; +CREATE TABLE IF NOT EXISTS `cities` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, + `province_id` bigint UNSIGNED NOT NULL, + `name` varchar(100) COLLATE utf32_persian_ci NOT NULL, + PRIMARY KEY (`id`), + KEY `cities_fk1` (`province_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf32 COLLATE=utf32_persian_ci; + +-- -------------------------------------------------------- + -- -- Table structure for table `comments` -- @@ -109,11 +124,36 @@ DROP TABLE IF EXISTS `comments`; CREATE TABLE IF NOT EXISTS `comments` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` bigint UNSIGNED NOT NULL, + `flight_id` bigint UNSIGNED DEFAULT NULL, + `tour_id` bigint UNSIGNED DEFAULT NULL, `comment` text COLLATE utf32_persian_ci NOT NULL, + `rating` tinyint UNSIGNED DEFAULT NULL, `status` tinyint NOT NULL COMMENT '0:pending|1:approaved |2:rejected', `created_at` timestamp NOT NULL, + `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), - KEY `comment_fk1` (`user_id`) + KEY `comments_user_fk` (`user_id`), + KEY `comments.flight_fk1` (`flight_id`), + KEY `comments.tour_fk1` (`tour_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf32 COLLATE=utf32_persian_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `favorites` +-- + +DROP TABLE IF EXISTS `favorites`; +CREATE TABLE IF NOT EXISTS `favorites` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` bigint UNSIGNED NOT NULL, + `flight_id` bigint UNSIGNED DEFAULT NULL, + `tour_id` bigint UNSIGNED DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `favorites_user_fk` (`user_id`), + KEY `favorites_fligh_fk` (`flight_id`), + KEY `favorites_tour_fk` (`tour_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf32 COLLATE=utf32_persian_ci; -- -------------------------------------------------------- @@ -129,7 +169,7 @@ CREATE TABLE IF NOT EXISTS `files` ( `extension` varchar(10) COLLATE utf32_persian_ci NOT NULL, `size` bigint UNSIGNED NOT NULL COMMENT 'bytes', `original_name` varchar(350) COLLATE utf32_persian_ci NOT NULL, - `path` varchar(30) COLLATE utf32_persian_ci NOT NULL, + `path` varchar(300) CHARACTER SET utf32 COLLATE utf32_persian_ci NOT NULL, `created_at` timestamp NOT NULL, `updated_at` timestamp NOT NULL, PRIMARY KEY (`id`) @@ -144,16 +184,15 @@ CREATE TABLE IF NOT EXISTS `files` ( DROP TABLE IF EXISTS `flights`; CREATE TABLE IF NOT EXISTS `flights` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, + `arrival_aiport_id` bigint UNSIGNED NOT NULL, + `departure_airport_id` bigint UNSIGNED NOT NULL, + `airline_id` bigint UNSIGNED NOT NULL, + `file_id` bigint UNSIGNED NOT NULL, `title` varchar(250) COLLATE utf32_persian_ci NOT NULL, `summary` varchar(512) COLLATE utf32_persian_ci NOT NULL, - `arrival_aiport_id` bigint UNSIGNED NOT NULL, - `file_id` bigint UNSIGNED NOT NULL, `flight_type` tinyint NOT NULL COMMENT '0:departure|1:return|2:roundtrip', - `departure_time` int NOT NULL, + `departure_time` datetime NOT NULL, `price` decimal(10,0) NOT NULL, - `deprature_airport_id` bigint UNSIGNED NOT NULL, - `destination` varchar(255) COLLATE utf32_persian_ci NOT NULL, - `airline_id` bigint UNSIGNED NOT NULL, `capacity` int UNSIGNED NOT NULL, `status` tinyint NOT NULL COMMENT '0:disable |1:enable', `created_at` timestamp NOT NULL, @@ -162,7 +201,20 @@ CREATE TABLE IF NOT EXISTS `flights` ( KEY `flights_fk1` (`airline_id`), KEY `flights_fk2` (`file_id`), KEY `flights_fk3` (`arrival_aiport_id`), - KEY `flights_fk4` (`deprature_airport_id`) + KEY `flights_fk4` (`departure_airport_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf32 COLLATE=utf32_persian_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `provinces` +-- + +DROP TABLE IF EXISTS `provinces`; +CREATE TABLE IF NOT EXISTS `provinces` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, + `name` varchar(100) COLLATE utf32_persian_ci NOT NULL, + PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf32 COLLATE=utf32_persian_ci; -- -------------------------------------------------------- @@ -181,7 +233,7 @@ CREATE TABLE IF NOT EXISTS `tours` ( `origin` varchar(250) COLLATE utf32_persian_ci NOT NULL, `destination` varchar(250) COLLATE utf32_persian_ci NOT NULL, `duration` int UNSIGNED NOT NULL, - `status` tinyint NOT NULL COMMENT '0:enable|1:disable', + `status` tinyint NOT NULL COMMENT '0:disable|1:enable', `created_at` timestamp NOT NULL, `updated_at` timestamp NOT NULL, PRIMARY KEY (`id`), @@ -229,15 +281,16 @@ CREATE TABLE IF NOT EXISTS `users` ( `image_id` bigint UNSIGNED DEFAULT NULL, `username` varchar(200) COLLATE utf32_persian_ci NOT NULL, `password` varchar(250) COLLATE utf32_persian_ci NOT NULL, - `password_confirmation` varchar(250) COLLATE utf32_persian_ci NOT NULL, - `user_province` varchar(30) COLLATE utf32_persian_ci NOT NULL, - `user_city` varchar(30) COLLATE utf32_persian_ci NOT NULL, + `province_id` bigint UNSIGNED NOT NULL, + `city_id` bigint UNSIGNED NOT NULL, `status` tinyint UNSIGNED DEFAULT NULL COMMENT '0:disable | 1:pending | 2:enable ', `created_at` timestamp NOT NULL, - `updatet_at` timestamp NOT NULL, - `deleted_at` timestamp NOT NULL, + `updated_at` timestamp NOT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), - KEY `user_img_fk` (`image_id`) + KEY `user_img_fk` (`image_id`), + KEY `users_province_fk` (`province_id`), + KEY `users_city_fk` (`city_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf32 COLLATE=utf32_persian_ci; -- @@ -248,15 +301,31 @@ CREATE TABLE IF NOT EXISTS `users` ( -- Constraints for table `bookings` -- ALTER TABLE `bookings` - ADD CONSTRAINT `bookings_fk1` FOREIGN KEY (`user_id`) REFERENCES `bookings` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + ADD CONSTRAINT `bookings_fk1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, ADD CONSTRAINT `bookings_fk2` FOREIGN KEY (`flight_id`) REFERENCES `flights` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, ADD CONSTRAINT `bookings_fk3` FOREIGN KEY (`tour_date_id`) REFERENCES `tour_dates` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; +-- +-- Constraints for table `cities` +-- +ALTER TABLE `cities` + ADD CONSTRAINT `cities_fk1` FOREIGN KEY (`province_id`) REFERENCES `provinces` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; + -- -- Constraints for table `comments` -- ALTER TABLE `comments` - ADD CONSTRAINT `comment_fk1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; + ADD CONSTRAINT `comments.flight_fk1` FOREIGN KEY (`flight_id`) REFERENCES `flights` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + ADD CONSTRAINT `comments.tour_fk1` FOREIGN KEY (`tour_id`) REFERENCES `tours` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + ADD CONSTRAINT `comments_user_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; + +-- +-- Constraints for table `favorites` +-- +ALTER TABLE `favorites` + ADD CONSTRAINT `favorites_fligh_fk` FOREIGN KEY (`flight_id`) REFERENCES `flights` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + ADD CONSTRAINT `favorites_tour_fk` FOREIGN KEY (`tour_id`) REFERENCES `tours` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + ADD CONSTRAINT `favorites_user_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; -- -- Constraints for table `flights` @@ -265,7 +334,7 @@ ALTER TABLE `flights` ADD CONSTRAINT `flights_fk1` FOREIGN KEY (`airline_id`) REFERENCES `airlines` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, ADD CONSTRAINT `flights_fk2` FOREIGN KEY (`file_id`) REFERENCES `files` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, ADD CONSTRAINT `flights_fk3` FOREIGN KEY (`arrival_aiport_id`) REFERENCES `airports` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - ADD CONSTRAINT `flights_fk4` FOREIGN KEY (`deprature_airport_id`) REFERENCES `airports` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; + ADD CONSTRAINT `flights_fk4` FOREIGN KEY (`departure_airport_id`) REFERENCES `airports` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; -- -- Constraints for table `tours` @@ -283,7 +352,9 @@ ALTER TABLE `tour_dates` -- Constraints for table `users` -- ALTER TABLE `users` - ADD CONSTRAINT `user_img_fk` FOREIGN KEY (`image_id`) REFERENCES `files` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; + ADD CONSTRAINT `user_img_fk` FOREIGN KEY (`image_id`) REFERENCES `files` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + ADD CONSTRAINT `users_city_fk` FOREIGN KEY (`city_id`) REFERENCES `cities` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + ADD CONSTRAINT `users_province_fk` FOREIGN KEY (`province_id`) REFERENCES `provinces` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;