File manager - Edit - /home/webapp69.cm.in.th/u69319090037/Shop/database/schema.sql
Back
-- CMTC Shopping Database Schema -- Created for Native PHP 7.3/7.4 compatibility -- Character set: UTF-8 (utf8mb4) SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `faq`; DROP TABLE IF EXISTS `banners`; DROP TABLE IF EXISTS `news`; DROP TABLE IF EXISTS `system_settings`; DROP TABLE IF EXISTS `login_logs`; DROP TABLE IF EXISTS `activity_logs`; DROP TABLE IF EXISTS `notifications`; DROP TABLE IF EXISTS `payments`; DROP TABLE IF EXISTS `order_items`; DROP TABLE IF EXISTS `orders`; DROP TABLE IF EXISTS `cart_items`; DROP TABLE IF EXISTS `carts`; DROP TABLE IF EXISTS `product_stock`; DROP TABLE IF EXISTS `product_sizes`; DROP TABLE IF EXISTS `product_colors`; DROP TABLE IF EXISTS `product_images`; DROP TABLE IF EXISTS `products`; DROP TABLE IF EXISTS `categories`; DROP TABLE IF EXISTS `role_permissions`; DROP TABLE IF EXISTS `permissions`; DROP TABLE IF EXISTS `users`; DROP TABLE IF EXISTS `user_roles`; DROP TABLE IF EXISTS `departments`; SET FOREIGN_KEY_CHECKS = 1; -- 1. departments CREATE TABLE `departments` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL UNIQUE, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 2. user_roles CREATE TABLE `user_roles` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(50) NOT NULL UNIQUE, `description` VARCHAR(255) NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 3. permissions CREATE TABLE `permissions` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `code` VARCHAR(100) NOT NULL UNIQUE, `name` VARCHAR(100) NOT NULL, `module` VARCHAR(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 4. role_permissions CREATE TABLE `role_permissions` ( `role_id` INT NOT NULL, `permission_id` INT NOT NULL, PRIMARY KEY (`role_id`, `permission_id`), FOREIGN KEY (`role_id`) REFERENCES `user_roles` (`id`) ON DELETE CASCADE, FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 5. users CREATE TABLE `users` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `role_id` INT NOT NULL, `department_id` INT NULL, `prefix` VARCHAR(20) NULL, `firstname` VARCHAR(100) NOT NULL, `lastname` VARCHAR(100) NOT NULL, `phone` VARCHAR(20) NULL, `address` TEXT NULL, `email` VARCHAR(100) NOT NULL UNIQUE, `username` VARCHAR(50) NOT NULL UNIQUE, `password` VARCHAR(255) NOT NULL, `avatar` VARCHAR(255) NULL, `status` ENUM('active', 'inactive', 'suspended') DEFAULT 'active', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (`role_id`) REFERENCES `user_roles` (`id`), FOREIGN KEY (`department_id`) REFERENCES `departments` (`id`) ON DELETE SET NULL, INDEX (`username`), INDEX (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 6. categories CREATE TABLE `categories` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(100) NOT NULL UNIQUE, `description` TEXT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 7. products CREATE TABLE `products` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `user_id` INT NULL, `category_id` INT NULL, `sku` VARCHAR(100) NOT NULL UNIQUE, `barcode` VARCHAR(100) NULL, `name` VARCHAR(255) NOT NULL, `description` TEXT NULL, `price` DECIMAL(10,2) NOT NULL DEFAULT 0.00, `promo_price` DECIMAL(10,2) NULL, `status` ENUM('active', 'inactive') DEFAULT 'active', `min_stock` INT NOT NULL DEFAULT 5, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE SET NULL, INDEX (`sku`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 8. product_images CREATE TABLE `product_images` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `product_id` INT NOT NULL, `image_path` VARCHAR(255) NOT NULL, `is_main` TINYINT(1) DEFAULT 0, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 9. product_colors CREATE TABLE `product_colors` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `product_id` INT NOT NULL, `color_name` VARCHAR(50) NOT NULL, `color_code` VARCHAR(20) NULL, FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 10. product_sizes CREATE TABLE `product_sizes` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `product_id` INT NOT NULL, `size_name` VARCHAR(20) NOT NULL, -- XS, S, M, L, XL, 2XL, 3XL, 4XL, 5XL, Free Size FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 11. product_stock CREATE TABLE `product_stock` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `product_id` INT NOT NULL, `color_id` INT NULL, `size_id` INT NULL, `quantity` INT NOT NULL DEFAULT 0, `location` VARCHAR(100) NULL, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE, FOREIGN KEY (`color_id`) REFERENCES `product_colors` (`id`) ON DELETE CASCADE, FOREIGN KEY (`size_id`) REFERENCES `product_sizes` (`id`) ON DELETE CASCADE, UNIQUE KEY `idx_prod_color_size` (`product_id`, `color_id`, `size_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 12. carts CREATE TABLE `carts` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `user_id` INT NOT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 13. cart_items CREATE TABLE `cart_items` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `cart_id` INT NOT NULL, `product_id` INT NOT NULL, `color_id` INT NULL, `size_id` INT NULL, `quantity` INT NOT NULL DEFAULT 1, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`cart_id`) REFERENCES `carts` (`id`) ON DELETE CASCADE, FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE, FOREIGN KEY (`color_id`) REFERENCES `product_colors` (`id`) ON DELETE SET NULL, FOREIGN KEY (`size_id`) REFERENCES `product_sizes` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 14. orders CREATE TABLE `orders` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `order_no` VARCHAR(50) NOT NULL UNIQUE, `user_id` INT NOT NULL, `total_amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00, `discount_amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00, `net_amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00, `status` ENUM('draft', 'pending', 'approved', 'pending_payment', 'paid', 'preparing', 'ready', 'received', 'cancelled', 'returned') DEFAULT 'pending', `recipient_name` VARCHAR(255) NULL, `recipient_signature` TEXT NULL, `recipient_photo` VARCHAR(255) NULL, `shipping_address` TEXT NULL, `received_at` TIMESTAMP NULL, `qrcode_path` VARCHAR(255) NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT, INDEX (`order_no`), INDEX (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 15. order_items CREATE TABLE `order_items` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `order_id` INT NOT NULL, `product_id` INT NOT NULL, `color_name` VARCHAR(50) NULL, `size_name` VARCHAR(20) NULL, `quantity` INT NOT NULL DEFAULT 1, `price` DECIMAL(10,2) NOT NULL, `total` DECIMAL(10,2) NOT NULL, FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE, FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE RESTRICT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 16. payments CREATE TABLE `payments` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `order_id` INT NOT NULL, `payment_method` ENUM('cash', 'transfer', 'promptpay') NOT NULL, `amount` DECIMAL(10,2) NOT NULL, `slip_path` VARCHAR(255) NULL, `paid_at` DATETIME NULL, `status` ENUM('pending', 'approved', 'rejected') DEFAULT 'pending', `verified_by` INT NULL, `verified_at` DATETIME NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE, FOREIGN KEY (`verified_by`) REFERENCES `users` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 17. notifications CREATE TABLE `notifications` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `user_id` INT NOT NULL, `title` VARCHAR(255) NOT NULL, `message` TEXT NOT NULL, `is_read` TINYINT(1) DEFAULT 0, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 18. activity_logs CREATE TABLE `activity_logs` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `user_id` INT NULL, `action` ENUM('login', 'logout', 'add', 'edit', 'delete', 'approve', 'cancel', 'export', 'print') NOT NULL, `details` TEXT NULL, `ip_address` VARCHAR(45) NULL, `user_agent` VARCHAR(255) NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 19. login_logs CREATE TABLE `login_logs` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `username` VARCHAR(50) NOT NULL, `ip_address` VARCHAR(45) NULL, `user_agent` VARCHAR(255) NULL, `status` ENUM('success', 'failed') NOT NULL, `attempted_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 20. system_settings CREATE TABLE `system_settings` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `system_name` VARCHAR(255) NOT NULL DEFAULT 'CMTC Shopping', `logo` VARCHAR(255) NULL, `favicon` VARCHAR(255) NULL, `theme_color` VARCHAR(20) DEFAULT 'primary', -- primary, success, dark, danger, etc. `main_color` VARCHAR(7) DEFAULT '#0d6efd', `footer_text` VARCHAR(255) DEFAULT '© 2026 CMTC Shopping. All Rights Reserved.', `version` VARCHAR(20) DEFAULT '1.0.0', `booking_open` TINYINT(1) DEFAULT 1, `booking_start` DATETIME NULL, `booking_end` DATETIME NULL, `limit_per_person` INT NOT NULL DEFAULT 5, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 21. news CREATE TABLE `news` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `title` VARCHAR(255) NOT NULL, `content` TEXT NOT NULL, `image` VARCHAR(255) NULL, `status` ENUM('active', 'inactive') DEFAULT 'active', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 22. banners CREATE TABLE `banners` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `title` VARCHAR(255) NULL, `image_path` VARCHAR(255) NOT NULL, `link_url` VARCHAR(255) NULL, `sort_order` INT DEFAULT 0, `status` ENUM('active', 'inactive') DEFAULT 'active', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 23. faq CREATE TABLE `faq` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `question` TEXT NOT NULL, `answer` TEXT NOT NULL, `sort_order` INT DEFAULT 0, `status` ENUM('active', 'inactive') DEFAULT 'active', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -------------------------------------------------------- -- SEED DATA -- -------------------------------------------------------- -- Insert default departments INSERT INTO `departments` (`id`, `name`) VALUES (1, 'แผนกวิชาเทคโนโลยีคอมพิวเตอร์'), (2, 'แผนกวิชาคอมพิวเตอร์ธุรกิจ'), (3, 'แผนกวิชาอิเล็กทรอนิกส์'), (4, 'แผนกวิชาช่างไฟฟ้ากำลัง'), (5, 'แผนกวิชาเทคนิคพื้นฐาน'); -- Insert default user_roles INSERT INTO `user_roles` (`id`, `name`, `description`) VALUES (1, 'Administrator', 'ผู้ดูแลระบบสูงสุด'), (2, 'Officer', 'เจ้าหน้าที่ดำเนินงาน'), (3, 'Member', 'สมาชิก / นักศึกษา / บุคลากร'), (4, 'Guest', 'ผู้เยี่ยมชมทั่วไป'); -- Insert default permissions INSERT INTO `permissions` (`code`, `name`, `module`) VALUES ('manage_users', 'จัดการผู้ใช้งานทั้งหมด', 'User'), ('manage_products', 'จัดการสินค้าและหมวดหมู่', 'Product'), ('manage_stock', 'จัดการสต๊อกและคลังสินค้า', 'Stock'), ('manage_orders', 'จัดการและอนุมัติใบสั่งซื้อ', 'Order'), ('view_reports', 'ดูรายงานและสถิติต่างๆ', 'Report'), ('system_settings', 'แก้ไขตั้งค่าระบบและ CMS', 'Settings'); -- Insert role_permissions (Admin has everything) INSERT INTO `role_permissions` (`role_id`, `permission_id`) VALUES (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 3), (2, 4); -- Insert default admin user: username admin, password admin123 -- password_hash('admin123', PASSWORD_BCRYPT) -> $2y$10$r9y69gU4N1vQ62jZ9o2lU.D7/b8g7BwA/1i1mFfX2YxU4h9xU7q/2 INSERT INTO `users` (`id`, `role_id`, `department_id`, `prefix`, `firstname`, `lastname`, `phone`, `email`, `username`, `password`, `status`) VALUES (1, 1, 1, '', 'ADMIN', '', '0888888888', 'admin@cmtcshopping.com', 'admin', '$2y$10$r9y69gU4N1vQ62jZ9o2lU.D7/b8g7BwA/1i1mFfX2YxU4h9xU7q/2', 'active'); -- Insert system_settings INSERT INTO `system_settings` (`id`, `system_name`, `theme_color`, `main_color`, `version`) VALUES (1, 'CMTC Smart Outfit Shopping & Booking', 'primary', '#0d6efd', '1.0.0'); -- Insert sample categories INSERT INTO `categories` (`id`, `name`, `description`) VALUES (1, 'เสื้อ', 'เสื้อช็อปสำหรับใช้ฝึกปฏิบัติงาน เสื้อนักศึกษา และเสื้อกิจกรรม'), (2, 'กางเกงและกระโปรง', 'กางเกงสแล็ค กางเกงวอร์ม และกระโปรงนักศึกษา'), (3, 'รองเท้าและถุงเท้า', 'รองเท้าเซฟตี้ รองเท้าคัทชู รองเท้าผ้าใบ และถุงเท้า'), (4, 'เข็มตราและเครื่องหมาย', 'เข็มกลัดวิทยาลัย เนคไท สายเข็มขัด และหัวเข็มขัด'), (5, 'อุปกรณ์การเรียนและเครื่องเขียน', 'สมุด ปากกา อุปกรณ์เขียนแบบ และชุดเครื่องมือ'), (6, 'กระเป๋าและเป้', 'กระเป๋านักเรียน กระเป๋าเป้ใส่โน้ตบุ๊ก และกระเป๋าเอกสาร'), (7, 'อุปกรณ์อิเล็กทรอนิกส์และไอที', 'แฟลชไดร์ฟ สายชาร์จ อุปกรณ์คอมพิวเตอร์'), (8, 'ของที่ระลึกและสินค้าทั่วไป', 'สินค้าที่ระลึก อุปกรณ์ทั่วไป และพวงกุญแจวิทยาลัย'), (9, 'หนังสือและตำราเรียน', 'หนังสือเรียน ตำราวิชาการ และคู่มือการเรียน'), (10, 'อาหาร เครื่องดื่ม และขนม', 'ขนม อาหารว่าง และเครื่องดื่มสำหรับนักศึกษา'); -- Insert sample news INSERT INTO `news` (`title`, `content`, `status`) VALUES ('ยินดีต้อนรับสู่ระบบสั่งซื้อสินค้าออนไลน์ CMTC Shopping', 'ระบบ CMTC Shopping เปิดให้บริการจองเสื้อและจำหน่ายของที่ระลึกอย่างเป็นทางการแล้ววันนี้ นักศึกษาสามารถลงทะเบียนและจองผ่านระบบได้ทันที', 'active'); -- Insert sample FAQ INSERT INTO `faq` (`question`, `answer`, `status`, `sort_order`) VALUES ('ต้องการแก้ไขข้อมูลการจองเสื้อต้องทำอย่างไร?', 'หากต้องการเปลี่ยนขนาด ไซส์ หรือยกเลิก โปรดติดต่อที่ห้องงานพัสดุหรือแผนกวิชาเพื่อขอเปลี่ยนแปลงก่อนการอนุมัติการชำระเงิน', 'active', 1), ('สามารถชำระเงินช่องทางใดได้บ้าง?', 'ระบบรองรับการชำระด้วยเงินสดและสแกนคิวอาร์โค้ดพร้อมเพย์ (PromptPay) พร้อมแนบหลักฐานการโอนเงินในหน้าระบบ', 'active', 2);
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.28 |
proxy
|
phpinfo
|
Settings