table_name,column_name,data_type,size,is_nullable,is_primary_key,is_foreign_key,description roles,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ roles,code,VARCHAR,50,NO,NO,NO,รหัสบทบาท (ADMIN | INSTRUCTOR | STUDENT) roles,name,JSONB,,NO,NO,NO,ชื่อบทบาทหลายภาษา roles,description,JSONB,,YES,NO,NO,คำอธิบายบทบาท roles,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง users,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ users,username,VARCHAR,100,NO,NO,NO,ชื่อผู้ใช้สำหรับเข้าสู่ระบบ (ไม่ซ้ำ) users,email,VARCHAR,255,NO,NO,NO,อีเมล (ไม่ซ้ำ) users,password,VARCHAR,255,NO,NO,NO,รหัสผ่านที่เข้ารหัสแล้ว users,role_id,INTEGER,10,NO,NO,YES,อ้างอิงบทบาทผู้ใช้ users,email_verified_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่ยืนยันอีเมล users,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง users,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด user_profiles,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ user_profiles,user_id,INTEGER,10,NO,NO,YES,อ้างอิงผู้ใช้ (ไม่ซ้ำ) user_profiles,prefix,VARCHAR,20,YES,NO,NO,"คำนำหน้าชื่อ enum(นาย, นาง, นางสาว, ดร.)" user_profiles,first_name,VARCHAR,100,NO,NO,NO,ชื่อจริง user_profiles,last_name,VARCHAR,100,NO,NO,NO,นามสกุล user_profiles,phone,VARCHAR,20,YES,NO,NO,เบอร์โทรศัพท์ user_profiles,avatar_url,VARCHAR,500,YES,NO,NO,URL รูปโปรไฟล์ user_profiles,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง user_profiles,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด user_profiles,updated_by,INTEGER,10,YES,NO,YES,ผู้ใช้ที่แก้ไขล่าสุด categories,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ categories,name,JSONB,,NO,NO,NO,ชื่อหมวดหมู่หลายภาษา categories,slug,VARCHAR,100,NO,NO,NO,ตัวระบุสำหรับ URL (ไม่ซ้ำ) categories,description,JSONB,,YES,NO,NO,คำอธิบายหลายภาษา categories,icon,VARCHAR,100,YES,NO,NO,ตัวระบุไอคอน categories,sort_order,INTEGER,10,NO,NO,NO,ลำดับการแสดงผล categories,is_active,BOOLEAN,,NO,NO,NO,สถานะเปิดใช้งาน categories,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง categories,created_by,INTEGER,10,NO,NO,YES,ผู้สร้าง categories,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด categories,updated_by,INTEGER,10,YES,NO,YES,ผู้แก้ไขล่าสุด courses,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ courses,category_id,INTEGER,10,YES,NO,YES,อ้างอิงหมวดหมู่ courses,title,JSONB,,NO,NO,NO,ชื่อคอร์สหลายภาษา courses,slug,VARCHAR,200,NO,NO,NO,ตัวระบุสำหรับ URL (ไม่ซ้ำ) courses,description,JSONB,,YES,NO,NO,คำอธิบายคอร์สหลายภาษา courses,thumbnail_url,VARCHAR,500,YES,NO,NO,URL รูปปกคอร์ส courses,price,"DECIMAL(10,2)",,NO,NO,NO,ราคาคอร์ส (ต้อง >= 0) courses,is_free,BOOLEAN,,NO,NO,NO,คอร์สฟรี courses,have_certificate,BOOLEAN,,NO,NO,NO,ออกใบประกาศนียบัตรเมื่อจบ courses,status,VARCHAR,20,NO,NO,NO,"สถานะ enum(DRAFT, PENDING, APPROVED, REJECTED, ARCHIVED)" courses,approved_by,INTEGER,10,YES,NO,YES,ผู้ดูแลที่อนุมัติ courses,approved_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่อนุมัติ courses,rejection_reason,TEXT,,YES,NO,NO,เหตุผลที่ปฏิเสธ courses,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง courses,created_by,INTEGER,10,NO,NO,YES,ผู้สอนหลัก courses,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด courses,updated_by,INTEGER,10,YES,NO,YES,ผู้แก้ไขล่าสุด course_instructors,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ course_instructors,course_id,INTEGER,10,NO,NO,YES,อ้างอิงคอร์ส course_instructors,user_id,INTEGER,10,NO,NO,YES,อ้างอิงผู้สอน course_instructors,is_primary,BOOLEAN,,NO,NO,NO,ผู้สอนหลัก course_instructors,joined_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่เข้าร่วม chapters,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ chapters,course_id,INTEGER,10,NO,NO,YES,อ้างอิงคอร์ส chapters,title,JSONB,,NO,NO,NO,ชื่อบทหลายภาษา chapters,description,JSONB,,YES,NO,NO,คำอธิบายบทหลายภาษา chapters,sort_order,INTEGER,10,NO,NO,NO,ลำดับการแสดงผล (ต้อง >= 0) chapters,is_published,BOOLEAN,,NO,NO,NO,สถานะเผยแพร่ chapters,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง chapters,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด lessons,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ lessons,chapter_id,INTEGER,10,NO,NO,YES,อ้างอิงบท lessons,title,JSONB,,NO,NO,NO,ชื่อบทเรียนหลายภาษา lessons,content,JSONB,,YES,NO,NO,เนื้อหาบทเรียนหลายภาษา lessons,type,VARCHAR,20,NO,NO,NO,"ประเภทบทเรียน (VIDEO, QUIZ)" lessons,duration_minutes,INTEGER,10,YES,NO,NO,ระยะเวลาโดยประมาณ (นาที) lessons,sort_order,INTEGER,10,NO,NO,NO,ลำดับการแสดงผล (ต้อง >= 0) lessons,is_sequential,BOOLEAN,,NO,NO,NO,ต้องเรียนตามลำดับ lessons,prerequisite_lesson_ids,JSONB,,YES,NO,NO,รายการ ID บทเรียนที่ต้องเรียนก่อน lessons,require_pass_quiz,BOOLEAN,,YES,NO,NO,ต้องผ่านแบบทดสอบก่อนดำเนินการต่อ lessons,is_published,BOOLEAN,,NO,NO,NO,สถานะเผยแพร่ lessons,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง lessons,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด quizzes,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ quizzes,lesson_id,INTEGER,10,NO,NO,YES,อ้างอิงบทเรียน quizzes,title,JSONB,,NO,NO,NO,ชื่อแบบทดสอบหลายภาษา quizzes,description,JSONB,,YES,NO,NO,คำอธิบายแบบทดสอบหลายภาษา quizzes,passing_score,INTEGER,10,NO,NO,NO,คะแนนผ่าน (0-100) quizzes,time_limit,INTEGER,10,YES,NO,NO,เวลาจำกัด (นาที ต้อง > 0 ถ้ากำหนด) quizzes,shuffle_questions,BOOLEAN,,NO,NO,NO,สุ่มลำดับคำถาม quizzes,shuffle_choices,BOOLEAN,,NO,NO,NO,สุ่มลำดับตัวเลือก quizzes,show_answers_after_completion,BOOLEAN,,NO,NO,NO,แสดงเฉลยหลังทำเสร็จ quizzes,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง quizzes,created_by,INTEGER,10,NO,NO,YES,ผู้สร้าง quizzes,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด quizzes,updated_by,INTEGER,10,YES,NO,YES,ผู้แก้ไขล่าสุด questions,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ questions,quiz_id,INTEGER,10,NO,NO,YES,อ้างอิงแบบทดสอบ questions,question,JSONB,,NO,NO,NO,ข้อความคำถามหลายภาษา questions,explanation,JSONB,,YES,NO,NO,คำอธิบายเฉลยหลายภาษา questions,question_type,VARCHAR,20,NO,NO,NO,"ประเภทคำถาม enum(MULTIPLE_CHOICE, TRUE_FALSE, SHORT_ANSWER)" questions,score,INTEGER,10,NO,NO,NO,คะแนนสำหรับคำตอบที่ถูก (ต้อง > 0) questions,sort_order,INTEGER,10,NO,NO,NO,ลำดับการแสดงผล questions,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง questions,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด choices,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ choices,question_id,INTEGER,10,NO,NO,YES,อ้างอิงคำถาม choices,text,JSONB,,NO,NO,NO,ข้อความตัวเลือกหลายภาษา choices,is_correct,BOOLEAN,,NO,NO,NO,คำตอบที่ถูกต้อง choices,sort_order,INTEGER,10,NO,NO,NO,ลำดับการแสดงผล enrollments,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ enrollments,user_id,INTEGER,10,NO,NO,YES,อ้างอิงนักเรียน enrollments,course_id,INTEGER,10,NO,NO,YES,อ้างอิงคอร์ส enrollments,status,VARCHAR,20,NO,NO,NO,"สถานะ enum(ENROLLED, IN_PROGRESS, COMPLETED, DROPPED)" enrollments,progress_percentage,INTEGER,10,NO,NO,NO,เปอร์เซ็นต์ความคืบหน้า (0-100) enrollments,enrolled_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่ลงทะเบียน enrollments,started_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่เข้าเรียนครั้งแรก enrollments,completed_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่เรียนจบ enrollments,last_accessed_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่เข้าใช้ล่าสุด certificates,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ certificates,user_id,INTEGER,10,NO,NO,YES,อ้างอิงนักเรียน certificates,course_id,INTEGER,10,NO,NO,YES,อ้างอิงคอร์ส certificates,enrollment_id,INTEGER,10,NO,NO,YES,อ้างอิงการลงทะเบียน (ไม่ซ้ำ) certificates,file_path,VARCHAR,500,NO,NO,NO,เส้นทาง S3 ไฟล์ PDF ใบประกาศนียบัตร certificates,issued_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่ออกใบประกาศนียบัตร lesson_progress,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ lesson_progress,user_id,INTEGER,10,NO,NO,YES,อ้างอิงนักเรียน lesson_progress,lesson_id,INTEGER,10,NO,NO,YES,อ้างอิงบทเรียน lesson_progress,is_completed,BOOLEAN,,NO,NO,NO,สถานะเรียนจบ lesson_progress,completed_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่เรียนจบ lesson_progress,video_progress_seconds,INTEGER,10,YES,NO,NO,ความคืบหน้าวีดีโอ (วินาที) lesson_progress,video_duration_seconds,INTEGER,10,YES,NO,NO,ความยาววีดีโอทั้งหมด (วินาที) lesson_progress,video_progress_percentage,"DECIMAL(5,2)",,YES,NO,NO,เปอร์เซ็นต์ความคืบหน้าวีดีโอ lesson_progress,last_watched_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่ดูล่าสุด lesson_progress,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง lesson_progress,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด quiz_attempts,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ quiz_attempts,user_id,INTEGER,10,NO,NO,YES,อ้างอิงนักเรียน quiz_attempts,quiz_id,INTEGER,10,NO,NO,YES,อ้างอิงแบบทดสอบ quiz_attempts,score,INTEGER,10,NO,NO,NO,คะแนนที่ได้ (0-100) quiz_attempts,total_questions,INTEGER,10,NO,NO,NO,จำนวนคำถามทั้งหมด quiz_attempts,correct_answers,INTEGER,10,NO,NO,NO,จำนวนคำตอบที่ถูก quiz_attempts,is_passed,BOOLEAN,,NO,NO,NO,สถานะผ่าน quiz_attempts,attempt_number,INTEGER,10,NO,NO,NO,ครั้งที่ทำ quiz_attempts,answers,JSONB,,YES,NO,NO,คำตอบของนักเรียนสำหรับตรวจสอบ quiz_attempts,started_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่เริ่มทำ quiz_attempts,completed_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่ทำเสร็จ announcements,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ announcements,course_id,INTEGER,10,NO,NO,YES,อ้างอิงคอร์ส announcements,title,JSONB,,NO,NO,NO,ชื่อประกาศหลายภาษา announcements,content,JSONB,,NO,NO,NO,เนื้อหาประกาศหลายภาษา announcements,status,VARCHAR,20,NO,NO,NO,"สถานะ enum(DRAFT, PUBLISHED, ARCHIVED)" announcements,is_pinned,BOOLEAN,,NO,NO,NO,ปักหมุด announcements,published_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่กำหนดเผยแพร่ announcements,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง announcements,created_by,INTEGER,10,NO,NO,YES,ผู้สร้าง announcements,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด announcements,updated_by,INTEGER,10,YES,NO,YES,ผู้แก้ไขล่าสุด announcement_attachments,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ announcement_attachments,announcement_id,INTEGER,10,NO,NO,YES,อ้างอิงประกาศ announcement_attachments,file_name,VARCHAR,255,NO,NO,NO,ชื่อไฟล์ announcement_attachments,file_path,VARCHAR,500,NO,NO,NO,เส้นทาง/คีย์ S3 announcement_attachments,file_size,INTEGER,10,NO,NO,NO,ขนาดไฟล์ (ไบต์) announcement_attachments,mime_type,VARCHAR,100,NO,NO,NO,ประเภท MIME announcement_attachments,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง lesson_attachments,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ lesson_attachments,lesson_id,INTEGER,10,NO,NO,YES,อ้างอิงบทเรียน lesson_attachments,file_name,VARCHAR,255,NO,NO,NO,ชื่อไฟล์ lesson_attachments,file_path,VARCHAR,500,NO,NO,NO,เส้นทาง/คีย์ S3 lesson_attachments,file_size,INTEGER,10,NO,NO,NO,ขนาดไฟล์ (ไบต์) lesson_attachments,mime_type,VARCHAR,100,NO,NO,NO,ประเภท MIME lesson_attachments,description,JSONB,,YES,NO,NO,คำอธิบายไฟล์หลายภาษา lesson_attachments,sort_order,INTEGER,10,NO,NO,NO,ลำดับการแสดงผล lesson_attachments,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง orders,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ orders,user_id,INTEGER,10,NO,NO,YES,อ้างอิงลูกค้า orders,total_amount,"DECIMAL(10,2)",,NO,NO,NO,ยอดรวมคำสั่งซื้อ orders,status,VARCHAR,20,NO,NO,NO,"สถานะ enum(PENDING, PAID, CANCELLED, REFUNDED)" orders,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง orders,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด order_items,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ order_items,order_id,INTEGER,10,NO,NO,YES,อ้างอิงคำสั่งซื้อ order_items,course_id,INTEGER,10,NO,NO,YES,อ้างอิงคอร์ส order_items,price,"DECIMAL(10,2)",,NO,NO,NO,ราคาคอร์ส ณ เวลาที่ซื้อ order_items,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง payments,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ payments,order_id,INTEGER,10,NO,NO,YES,อ้างอิงคำสั่งซื้อ payments,provider,VARCHAR,50,NO,NO,NO,"ผู้ให้บริการชำระเงิน enum(stripe, paypal, promptpay)" payments,transaction_id,VARCHAR,100,YES,NO,NO,รหัสธุรกรรมจากผู้ให้บริการ (ไม่ซ้ำ) payments,amount,"DECIMAL(10,2)",,NO,NO,NO,จำนวนเงินที่ชำระ payments,status,VARCHAR,20,NO,NO,NO,"สถานะ enum(PENDING, SUCCESS, FAILED)" payments,paid_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่ชำระเงิน payments,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง payments,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด instructor_balances,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ instructor_balances,instructor_id,INTEGER,10,NO,NO,YES,อ้างอิงผู้สอน (ไม่ซ้ำ) instructor_balances,available_amount,"DECIMAL(10,2)",,NO,NO,NO,ยอดเงินคงเหลือ instructor_balances,withdrawn_amount,"DECIMAL(10,2)",,NO,NO,NO,ยอดเงินที่ถอนแล้วทั้งหมด instructor_balances,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง instructor_balances,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด withdrawal_requests,id,INTEGER,10,NO,YES,NO,คีย์หลัก เพิ่มค่าอัตโนมัติ withdrawal_requests,instructor_id,INTEGER,10,NO,NO,YES,อ้างอิงผู้สอน withdrawal_requests,amount,"DECIMAL(10,2)",,NO,NO,NO,จำนวนเงินที่ขอถอน withdrawal_requests,status,VARCHAR,20,NO,NO,NO,"สถานะ enum(PENDING, APPROVED, REJECTED, PAID)" withdrawal_requests,approved_by,INTEGER,10,YES,NO,YES,ผู้ดูแลที่อนุมัติ withdrawal_requests,approved_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่อนุมัติ withdrawal_requests,rejected_reason,TEXT,,YES,NO,NO,เหตุผลที่ปฏิเสธ withdrawal_requests,created_at,TIMESTAMP,,NO,NO,NO,วันเวลาที่สร้าง withdrawal_requests,updated_at,TIMESTAMP,,YES,NO,NO,วันเวลาที่แก้ไขล่าสุด withdrawal_requests,updated_by,INTEGER,10,YES,NO,YES,ผู้แก้ไขล่าสุด