File manager - Edit - /home/webapp69.cm.in.th/u69319090001/Shop 001/schema.sql
Back
-- สร้างฐานข้อมูลระบบจองสินค้าออนไลน์ (Online Pre-order System) CREATE DATABASE IF NOT EXISTS `preorder_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE `preorder_db`; -- ล้างตารางเดิมหากต้องการติดตั้งใหม่ทั้งหมด (ตามลำดับ Foreign Key) DROP TABLE IF EXISTS `bookings`; DROP TABLE IF EXISTS `product_variants`; DROP TABLE IF EXISTS `products`; DROP TABLE IF EXISTS `users`; -- 1. ตารางผู้ใช้งาน / สมาชิกลูกค้า (users) CREATE TABLE `users` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL COMMENT 'ชื่อ-นามสกุล', `phone` VARCHAR(50) NOT NULL UNIQUE COMMENT 'เบอร์โทรศัพท์ (ใช้เข้าระบบ)', `email` VARCHAR(191) NULL UNIQUE COMMENT 'อีเมล', `password` VARCHAR(255) NOT NULL COMMENT 'รหัสผ่านเข้ารหัส Bcrypt', `address` TEXT NULL COMMENT 'ที่อยู่จัดส่งเริ่มต้น', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 2. ตารางสินค้าหลัก (products) CREATE TABLE `products` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL COMMENT 'ชื่อสินค้า', `category` VARCHAR(100) NOT NULL DEFAULT 'ทั่วไป' COMMENT 'หมวดหมู่สินค้า เช่น เสื้อผ้า, เครื่องประดับ, ของสะสม', `description` TEXT NULL COMMENT 'รายละเอียดสินค้า', `price` DECIMAL(10, 2) NOT NULL COMMENT 'ราคาต่อชิ้น', `image_url` VARCHAR(255) NULL COMMENT 'ที่อยู่ไฟล์รูปภาพสินค้า', `video_url` VARCHAR(255) NULL COMMENT 'ลิงก์วิดีโอรีวิว (YouTube Embedded URL หรือ MP4)', `start_time` DATETIME NULL COMMENT 'วันที่และเวลาเริ่มเปิดจอง', `end_time` DATETIME NULL COMMENT 'วันที่และเวลาปิดจอง', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 3. ตารางตัวเลือกสินค้า เช่น ไซส์, สี (product_variants) CREATE TABLE `product_variants` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `product_id` INT NOT NULL COMMENT 'รหัสสินค้า', `variant_name` VARCHAR(100) NOT NULL COMMENT 'ชื่อตัวเลือก เช่น Size S, สีดำ', `stock` INT NOT NULL DEFAULT 0 COMMENT 'จำนวนคงเหลือ', `is_unlimited` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 = Made-to-Order ไม่จำกัดสต็อก, 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; -- 4. ตารางประวัติและรายการสั่งจองสินค้า (bookings) CREATE TABLE `bookings` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `user_id` INT NULL COMMENT 'รหัสผู้ใช้งาน (เชื่อมโยงกับ users หากล็อกอิน)', `customer_name` VARCHAR(255) NOT NULL COMMENT 'ชื่อผู้จอง/ผู้รับสินค้า', `customer_phone` VARCHAR(50) NOT NULL COMMENT 'เบอร์โทรศัพท์ผู้จอง', `product_id` INT NOT NULL COMMENT 'รหัสสินค้า', `variant_id` INT NOT NULL COMMENT 'รหัสตัวเลือกสินค้า', `quantity` INT NOT NULL COMMENT 'จำนวนชิ้นที่จอง', `total_price` DECIMAL(10, 2) NOT NULL COMMENT 'ยอดเงินรวม', `slip_image_url` VARCHAR(255) NULL COMMENT 'ไฟล์รูปสลิปหลักฐานการโอน', `tracking_number` VARCHAR(100) NULL COMMENT 'เลขพัสดุจัดส่งสินค้า', `payment_method` VARCHAR(50) NOT NULL DEFAULT 'Bank Transfer' COMMENT 'ช่องทางการชำระเงิน', `payment_status` VARCHAR(50) NOT NULL DEFAULT 'Pending' COMMENT 'สถานะการตรวจสลิป: Pending, Approved, Rejected', `status` VARCHAR(50) NOT NULL DEFAULT 'Pending' COMMENT 'สถานะคำสั่งจอง: Pending, Confirmed, Cancelled', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE SET NULL, FOREIGN KEY (`product_id`) REFERENCES `products`(`id`) ON DELETE CASCADE, FOREIGN KEY (`variant_id`) REFERENCES `product_variants`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- แทรกข้อมูลตัวอย่างสินค้าและตัวเลือก (Mock Data) -- กำหนดช่วงเวลาเปิดจอง: เริ่มเปิดจองเมื่อวาน และปิดจองในอีก 7 วันข้างหน้า เพื่อให้สามารถจองได้ทันที INSERT INTO `products` (`id`, `name`, `description`, `price`, `image_url`, `video_url`, `start_time`, `end_time`) VALUES (1, 'หมวกบักเก็ตมินิมอล (Minimalist Bucket Hat)', 'หมวกบักเก็ตสไตล์มินิมอล ใส่สบาย กันแดดได้ดี แมตช์ได้กับทุกชุด เหมาะกับทุกเพศทุกวัย ผลิตจากผ้าฝ้าย 100% ระบายอากาศได้ดีเยี่ยม', 350.00, 'assets/images/bucket_hat.png', NULL, NOW() - INTERVAL 1 DAY, NOW() + INTERVAL 7 DAY), (2, 'กระเป๋าเป้เดินทางใบโปรด (Everyday Travel Backpack)', 'กระเป๋าเป้สะพายหลังความจุสูง ดีไซน์เรียบเท่ พร้อมช่องใส่แล็ปท็อปและฟังก์ชันกันน้ำซึม เหมาะสำหรับวันทำงาน ท่องเที่ยว หรือออกกำลังกาย', 890.00, 'assets/images/backpack.png', NULL, NOW() - INTERVAL 1 DAY, NOW() + INTERVAL 7 DAY), (3, 'เสื้อยืด Limited Edition Pre-order Only', 'เสื้อยืดคอตตอนเกรดพรีเมียม สกรีนลายพิเศษสำหรับช่วงพรีออเดอร์เท่านั้น เนื้อผ้านุ่ม ไม่ยืด ไม่ย้วย สวมใส่สบายระบายอากาศได้ดี', 450.00, 'assets/images/tshirt.png', NULL, NOW() - INTERVAL 1 DAY, NOW() + INTERVAL 7 DAY); -- แทรกตัวเลือกสินค้าและจำนวนสต็อก (Variants) INSERT INTO `product_variants` (`product_id`, `variant_name`, `stock`, `is_unlimited`) VALUES -- สำหรับ หมวกบักเก็ต (id = 1) (1, 'สีดำ (Black) - Free Size', 10, 0), (1, 'สีครีม (Cream) - Free Size', 15, 0), (1, 'สีแดงสด (Bright Red) - Free Size', 5, 0), -- สำหรับ กระเป๋าเป้ (id = 2) (2, 'สีเทา (Gray)', 8, 0), (2, 'สีน้ำเงินกรมท่า (Navy)', 12, 0), (2, 'สีแดงเชอร์รี่ (Cherry Red)', 4, 0), -- สำหรับ เสื้อยืด (id = 3) (3, 'Size S', 20, 0), (3, 'Size M', 30, 0), (3, 'Size L', 0, 1), -- แบบไม่จำกัดจำนวนสต็อก (Made-to-Order) เพื่อทดสอบ (3, 'Size XL', 10, 0);
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings