เจาะลึกตารางฐานข้อมูลเริ่มต้นใน Laravel มีอะไรบ้าง
ทำความเข้าใจตารางฐานข้อมูลเริ่มต้น 7-8 ตารางใน Laravel ทั้งตารางหลักและตารางเสริม พร้อมวิธีจัดการและทางเลือกอื่น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- การติดตั้ง Laravel ใหม่สร้างตารางฐานข้อมูลพื้นฐาน 7-8 ตาราง
- ตารางอย่าง users และ failed_jobs ถูกสร้างอัตโนมัติผ่าน migration
- ตารางเสริม เช่น cache และ sessions ต้องใช้คำสั่ง Artisan แยกต่างหาก
- นักพัฒนาสามารถปรับเปลี่ยนหรือใช้ Redis แทนฐานข้อมูลได้ตามต้องการ
เมื่อเริ่มต้นโปรเจกต์ Laravel ใหม่ ระบบจะทำการสร้างตารางฐานข้อมูลเริ่มต้นขึ้นมาจำนวน 7 ถึง 8 ตาราง ขึ้นอยู่กับแพ็กเกจที่คุณเลือกใช้งาน โดยตารางแกนหลักที่ถูกสร้างขึ้นอัตโนมัติประกอบด้วย users, password_resets, failed_jobs และ personal_access_tokens ซึ่งตารางเหล่านี้ไม่ได้ถูกล็อกตายตัว นักพัฒนาสามารถเปลี่ยนชื่อ ขยายโครงสร้าง หรือแทนที่ได้ตามความเหมาะสมของโปรเจกต์
สำหรับตารางหลักที่สร้างขึ้นทันทีเมื่อรันคำสั่ง migration ได้แก่ users, password_resets (หรือ password_reset_tokens ใน Laravel 8 ขึ้นไป) และ failed_jobs ส่วนตารางอื่นๆ เช่น sessions, cache, jobs และ batches จะถูกสร้างขึ้นก็ต่อเมื่อมีการรันคำสั่ง Artisan เฉพาะกิจของแต่ละฟีเจอร์เท่านั้น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
รายละเอียดของแต่ละตารางหลักและตารางเสริมมีดังนี้:
- users: จัดเก็บข้อมูลผู้ใช้งานระบบ
- password_resets / password_reset_tokens: จัดการเรื่องการรีเซ็ตรหัสผ่าน โดย Laravel 8 ขึ้นไปได้เปลี่ยนชื่อเป็น password_reset_tokens
- failed_jobs: ใช้สำหรับดีบักงานในคิว (queue jobs) ที่ล้มเหลว โดยคอลัมน์ exception จะเก็บสแต็กเทรซ (stack trace) ทั้งหมดไว้
- personal_access_tokens: สร้างขึ้นโดย Laravel Sanctum สำหรับการยืนยันตัวตนด้วย API token
- sessions: สร้างผ่านคำสั่ง php artisan session:table เพื่อเก็บข้อมูล HTTP session ในฐานข้อมูลแทนไฟล์
- cache: สร้างผ่านคำสั่ง php artisan cache:table เพื่อเก็บข้อมูลแคชแบบคีย์-วาลิว
- jobs: สร้างผ่านคำสั่ง php artisan queue:table สำหรับเก็บงานในคิวที่รอการประมวลผล
- batches: สร้างผ่านคำสั่ง php artisan queue:batches-table เพื่อติดตามความคืบหน้าของการประมวลผลงานแบบคู่ขนาน
การเข้าใจโครงสร้างตารางฐานข้อมูลเริ่มต้นของ Laravel เป็นสิ่งสำคัญสำหรับนักพัฒนาในการออกแบบระบบและการจัดการทรัพยากร การเลือกเก็บข้อมูลเซสชันหรือแคชลงในฐานข้อมูลช่วยให้ระบบสามารถรองรับการขยายตัว (Scalability) ได้ดีขึ้นเมื่อรันบนเซิร์ฟเวอร์หลายตัว แต่หากต้องการประสิทธิภาพสูงสุด นักพัฒนาส่วนใหญ่มักจะเปลี่ยนไปใช้ระบบจัดการในหน่วยความจำอย่าง Redis แทน
นอกจากนี้ Laravel ยังรองรับการใช้งาน Redis สำหรับจัดการ sessions, cache และ queues ได้ทันทีโดยไม่ต้องตั้งค่าซับซ้อน เพียงแค่เปลี่ยนค่าไดรเวอร์ในไฟล์ .env เป็น redis ตารางฐานข้อมูลเหล่านี้ก็จะไม่จำเป็นต้องใช้งานอีกต่อไป และหากต้องการเห็นภาพรวมของความสัมพันธ์ทั้งหมด แนะนำให้ใช้เครื่องมืออย่าง dbdiagram.io เพื่อแปลงสตริงการเชื่อมต่อฐานข้อมูลให้ออกมาเป็นแผนภาพโครงสร้างที่มองเห็นได้ง่าย
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น