Appearance
ภาพรวมระบบและการทำงานร่วมกัน
จุดประสงค์การเรียนรู้
หลังจากอ่านบทนี้ คุณจะเข้าใจ:
- Database คืออะไรและทำงานอย่างไร
- MySQL และโครงสร้างตาราง
- ความสัมพันธ์ระหว่างตาราง
- ระบบทั้งหมดทำงานร่วมกันอย่างไร
- กรณีศึกษาการทำงานจริง
🗄️ Database คืออะไร?
Database (ฐานข้อมูล) คือ ที่เก็บข้อมูล อย่างเป็นระบบและเป็นระเบียบ
เปรียบเทียบง่ายๆ
Database เหมือน ตู้เก็บเอกสาร:
- มีหลายลิ้นชัก (ตาราง)
- แต่ละลิ้นชักเก็บเอกสารประเภทเดียวกัน
- จัดเรียงเป็นระเบียบ ค้นหาได้ง่าย
- ปลอดภัย ไม่หายง่าย
ทำไมต้องใช้ Database?
ก่อนมี Database:
ข้อมูลผู้ใช้.txt
[email protected]|รหัสผ่าน123|สมชาย
[email protected]|รหัสผ่าน456|สมหญิง❌ ปัญหา:
- ค้นหายาก
- แก้ไขยุ่งยาก
- ไม่ปลอดภัย
- หาข้อมูลซ้ำได้ยาก
หลังมี Database:
sql
SELECT * FROM users WHERE email = '[email protected]'✅ ดีกว่า:
- ค้นหาเร็ว
- แก้ไขง่าย
- ปลอดภัย
- จัดการได้ดี
Database เก็บอะไรบ้าง?
เว็บไซต์ใช้ Database เก็บ:
ข้อมูลผู้ใช้
- ชื่อ, อีเมล, รหัสผ่าน
- โปรไฟล์, รูปโปรไฟล์
เนื้อหา
- โพสต์, บทความ, ความคิดเห็น
- รูปภาพ, วิดีโอ
ข้อมูลธุรกรรม
- คำสั่งซื้อ, ประวัติการซื้อ
- ข้อมูลการชำระเงิน
ข้อมูลระบบ
- Log การทำงาน
- การตั้งค่าต่างๆ
🐬 MySQL คืออะไร?
MySQL คือ โปรแกรมจัดการ Database ที่ได้รับความนิยมมากที่สุด
ทำไมต้องใช้ MySQL?
- ✅ ฟรี - ไม่เสียค่าใช้จ่าย
- ✅ เร็ว - ประมวลผลได้เร็ว
- ✅ น่าเชื่อถือ - ใช้กันทั่วโลก
- ✅ ใช้งานง่าย - เรียนรู้ได้ไม่ยาก
- ✅ เอกสารเยอะ - หาข้อมูลได้ง่าย
เว็บไซต์ดังที่ใช้ MySQL
- 🌐 Facebook - โซเชียลเน็ตเวิร์ก
- 🛒 Shopify - แพลตฟอร์มขายของออนไลน์
- 📰 WordPress - ระบบจัดการเนื้อหา
- 💼 LinkedIn - โซเชียลเน็ตเวิร์กธุรกิจ
📊 โครงสร้าง Database: ตาราง แถว คอลัมน์
เปรียบเทียบกับ Excel 📈
Database เหมือน ไฟล์ Excel ที่มีหลาย Sheet!
| ส่วนประกอบ | Excel | Database (MySQL) |
|---|---|---|
| ไฟล์ | ไฟล์ Excel (.xlsx) | Database |
| Sheet | Sheet1, Sheet2 | ตาราง (Table) |
| หัวคอลัมน์ | A, B, C | ชื่อคอลัมน์ (Column) |
| แถว | แถวที่ 1, 2, 3 | แถว (Row/Record) |
| ช่อง | Cell (A1, B2) | ค่าข้อมูล (Value) |
ตัวอย่าง: ตาราง Users
ในรูปแบบตาราง:
| id | name | role | created_at | |
|---|---|---|---|---|
| 1 | สมชาย | [email protected] | admin | 2024-01-15 |
| 2 | สมหญิง | [email protected] | user | 2024-01-16 |
| 3 | สมศักดิ์ | [email protected] | user | 2024-01-17 |
ในรูปแบบ SQL:
sql
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100) UNIQUE,
role VARCHAR(50),
created_at DATETIME
);องค์ประกอบของตาราง
1. คอลัมน์ (Column/Field)
คอลัมน์ = หัวข้อข้อมูล
ตัวอย่าง:
id- รหัสประจำตัวname- ชื่อemail- อีเมลrole- บทบาท
2. แถว (Row/Record)
แถว = ข้อมูล 1 รายการ
ตัวอย่าง: ข้อมูลของ "สมชาย" อยู่ในแถวที่ 1
3. ค่าข้อมูล (Value)
ค่าข้อมูล = ข้อมูลในแต่ละช่อง
ตัวอย่าง: "[email protected]" เป็นค่าข้อมูลในคอลัมน์ email
4. Primary Key (กุญแจหลัก)
Primary Key = รหัสประจำตัวที่ไม่ซ้ำกัน
- มักเป็นคอลัมน์
id - ไม่มีค่าซ้ำกัน
- ใช้อ้างอิงข้อมูล
🔗 ความสัมพันธ์ระหว่างตาราง
ตารางต่างๆ สามารถ เชื่อมโยงกัน เพื่อเก็บข้อมูลที่สัมพันธ์กัน
เปรียบเทียบ
เหมือน ลิ้นชักในตู้เอกสาร ที่อ้างอิงกัน:
- ลิ้นชัก "ลูกค้า" มีรายชื่อลูกค้า
- ลิ้นชัก "คำสั่งซื้อ" อ้างอิงว่าลูกค้าคนไหนสั่งซื้ออะไร
ตัวอย่าง: ระบบร้านค้าออนไลน์
ตาราง users (ผู้ใช้)
| id | name | |
|---|---|---|
| 1 | สมชาย | [email protected] |
| 2 | สมหญิง | [email protected] |
ตาราง orders (คำสั่งซื้อ)
| id | user_id | product | price | order_date |
|---|---|---|---|---|
| 1 | 1 | โทรศัพท์ | 15000 | 2024-01-20 |
| 2 | 1 | หูฟัง | 2000 | 2024-01-21 |
| 3 | 2 | แท็บเล็ต | 12000 | 2024-01-22 |
ความสัมพันธ์:
- Order #1 → สั่งโดย User #1 (สมชาย)
- Order #2 → สั่งโดย User #1 (สมชาย)
- Order #3 → สั่งโดย User #2 (สมหญิง)
Foreign Key (กุญแจต่างประเทศ)
user_id ในตาราง orders คือ Foreign Key ที่อ้างอิงไปยัง id ในตาราง users
sql
-- ดึงข้อมูลคำสั่งซื้อพร้อมชื่อผู้สั่ง
SELECT
orders.id,
users.name,
orders.product,
orders.price
FROM orders
JOIN users ON orders.user_id = users.idผลลัพธ์:
| id | name | product | price |
|---|---|---|---|
| 1 | สมชาย | โทรศัพท์ | 15000 |
| 2 | สมชาย | หูฟัง | 2000 |
| 3 | สมหญิง | แท็บเล็ต | 12000 |
ประเภทความสัมพันธ์
1. One-to-Many (1 ต่อ หลาย)
ตัวอย่าง: 1 ผู้ใช้ → หลายคำสั่งซื้อ
User (1) ----< Orders (Many)
สมชาย → Order #1, Order #22. Many-to-Many (หลาย ต่อ หลาย)
ตัวอย่าง: หลายนักเรียน ↔ หลายวิชา
Students (Many) >< Courses (Many)
สมชาย ← → คณิต, วิทย์
สมหญิง ← → คณิต, อังกฤษ3. One-to-One (1 ต่อ 1)
ตัวอย่าง: 1 ผู้ใช้ → 1 โปรไฟล์
User (1) ---- Profile (1)
สมชาย → รูปภาพ, ที่อยู่, เบอร์โทร🔄 ระบบทำงานร่วมกันอย่างไร?
มาดูภาพรวมว่า React + Laravel + MySQL ทำงานร่วมกันอย่างไร
สถาปัตยกรรมระบบ (Architecture)
┌─────────────────────────────────────────────────────────┐
│ ผู้ใช้ (User) │
└────────────────────┬────────────────────────────────────┘
│
▼
┌────────────────────────┐
│ Browser (Chrome) │
└────────────────────────┘
│
▼
┌────────────────────────┐
│ React (Frontend) │ ← HTML, CSS, JavaScript
│ - แสดงผล UI │
│ - รับข้อมูลจากUser │
└────────────────────────┘
│
│ HTTP Request (API)
▼
┌────────────────────────┐
│ Laravel (Backend) │ ← PHP
│ - รับ Request │
│ - ประมวลผล │
│ - Validate ข้อมูล │
└────────────────────────┘
│
│ SQL Query
▼
┌────────────────────────┐
│ MySQL (Database) │ ← SQL
│ - เก็บข้อมูล │
│ - ค้นหาข้อมูล │
└────────────────────────┘ตัวอย่างการทำงานทีละขั้นตอน
สถานการณ์
ผู้ใช้ต้องการ เข้าสู่ระบบ (Login)
ขั้นตอนที่ 1: ผู้ใช้กรอกข้อมูล
👤 ผู้ใช้: กรอกอีเมลและรหัสผ่าน
📧 Email: [email protected]
🔑 Password: password123
🖱️ คลิก: ปุ่ม "เข้าสู่ระบบ"ขั้นตอนที่ 2: React ส่งข้อมูล
Frontend (React):
jsx
// LoginForm.jsx
function LoginForm() {
const [email, setEmail] = useState('')
const [password, setPassword] = useState('')
const handleLogin = async () => {
// ส่งข้อมูลไปยัง Backend
const response = await fetch('http://api.example.com/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, password })
})
const data = await response.json()
if (data.success) {
alert('เข้าสู่ระบบสำเร็จ!')
window.location.href = '/dashboard'
} else {
alert('อีเมลหรือรหัสผ่านไม่ถูกต้อง')
}
}
return (
<div>
<input
type="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
placeholder="อีเมล"
/>
<input
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
placeholder="รหัสผ่าน"
/>
<button onClick={handleLogin}>เข้าสู่ระบบ</button>
</div>
)
}ขั้นตอนที่ 3: Laravel รับและประมวลผล
Backend (Laravel):
php
<?php
// routes/api.php
Route::post('/login', function(Request $request) {
// 1. ตรวจสอบข้อมูลที่ส่งมา
$validated = $request->validate([
'email' => 'required|email',
'password' => 'required'
]);
// 2. ค้นหาผู้ใช้จาก Database
$user = User::where('email', $validated['email'])->first();
// 3. ตรวจสอบว่ามีผู้ใช้หรือไม่
if (!$user) {
return response()->json([
'success' => false,
'message' => 'ไม่พบผู้ใช้นี้ในระบบ'
], 404);
}
// 4. ตรวจสอบรหัสผ่าน
if (!Hash::check($validated['password'], $user->password)) {
return response()->json([
'success' => false,
'message' => 'รหัสผ่านไม่ถูกต้อง'
], 401);
}
// 5. สร้าง Token สำหรับ Session
$token = $user->createToken('auth_token')->plainTextToken;
// 6. ส่งผลลัพธ์กลับ
return response()->json([
'success' => true,
'user' => $user,
'token' => $token
]);
});ขั้นตอนที่ 4: MySQL ค้นหาข้อมูล
Database Query (SQL):
sql
-- Laravel แปลงเป็น SQL Query
SELECT * FROM users
WHERE email = '[email protected]'
LIMIT 1;ผลลัพธ์จาก Database:
| id | name | email | password (hashed) |
|----|--------|--------------------|--------------------------|
| 1 | สมชาย | [email protected] | $2y$10$abcd...xyz |ขั้นตอนที่ 5: ตอบกลับไปยัง Frontend
json
{
"success": true,
"user": {
"id": 1,
"name": "สมชาย",
"email": "[email protected]"
},
"token": "1|abc123xyz..."
}ขั้นตอนที่ 6: React แสดงผล
jsx
// แสดงข้อความสำเร็จ
alert('เข้าสู่ระบบสำเร็จ!')
// เก็บ token สำหรับใช้ในการเรียก API ครั้งถัดไป
localStorage.setItem('token', data.token)
// เปลี่ยนหน้าไปยัง Dashboard
window.location.href = '/dashboard'📝 กรณีศึกษา: เพิ่มข้อมูลพนักงาน
มาดูตัวอย่างเต็มรูปแบบของการเพิ่มข้อมูลพนักงานใหม่
สถานการณ์
HR ต้องการเพิ่มพนักงานใหม่เข้าระบบ
ขั้นตอนที่ 1: ออกแบบ Database
sql
-- สร้างตาราง employees
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
employee_code VARCHAR(10) UNIQUE,
first_name VARCHAR(100),
last_name VARCHAR(100),
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
department VARCHAR(50),
position VARCHAR(50),
salary DECIMAL(10,2),
hire_date DATE,
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);ขั้นตอนที่ 2: สร้างฟอร์มใน React
Frontend (React):
jsx
// AddEmployeeForm.jsx
import { useState } from 'react'
function AddEmployeeForm() {
const [formData, setFormData] = useState({
employee_code: '',
first_name: '',
last_name: '',
email: '',
phone: '',
department: '',
position: '',
salary: '',
hire_date: ''
})
const [loading, setLoading] = useState(false)
const [error, setError] = useState('')
const handleChange = (e) => {
setFormData({
...formData,
[e.target.name]: e.target.value
})
}
const handleSubmit = async (e) => {
e.preventDefault()
setLoading(true)
setError('')
try {
const response = await fetch('http://api.example.com/employees', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${localStorage.getItem('token')}`
},
body: JSON.stringify(formData)
})
const data = await response.json()
if (data.success) {
alert('เพิ่มพนักงานสำเร็จ! 🎉')
// รีเซ็ตฟอร์ม
setFormData({
employee_code: '',
first_name: '',
last_name: '',
email: '',
phone: '',
department: '',
position: '',
salary: '',
hire_date: ''
})
} else {
setError(data.message)
}
} catch (err) {
setError('เกิดข้อผิดพลาด กรุณาลองใหม่อีกครั้ง')
} finally {
setLoading(false)
}
}
return (
<form onSubmit={handleSubmit}>
<h2>เพิ่มพนักงานใหม่</h2>
{error && <div className="error">{error}</div>}
<div className="form-group">
<label>รหัสพนักงาน</label>
<input
type="text"
name="employee_code"
value={formData.employee_code}
onChange={handleChange}
required
/>
</div>
<div className="form-row">
<div className="form-group">
<label>ชื่อ</label>
<input
type="text"
name="first_name"
value={formData.first_name}
onChange={handleChange}
required
/>
</div>
<div className="form-group">
<label>นามสกุล</label>
<input
type="text"
name="last_name"
value={formData.last_name}
onChange={handleChange}
required
/>
</div>
</div>
<div className="form-group">
<label>อีเมล</label>
<input
type="email"
name="email"
value={formData.email}
onChange={handleChange}
required
/>
</div>
<div className="form-group">
<label>เบอร์โทรศัพท์</label>
<input
type="tel"
name="phone"
value={formData.phone}
onChange={handleChange}
required
/>
</div>
<div className="form-row">
<div className="form-group">
<label>แผนก</label>
<select
name="department"
value={formData.department}
onChange={handleChange}
required
>
<option value="">เลือกแผนก</option>
<option value="IT">IT</option>
<option value="HR">HR</option>
<option value="Sales">Sales</option>
<option value="Marketing">Marketing</option>
</select>
</div>
<div className="form-group">
<label>ตำแหน่ง</label>
<input
type="text"
name="position"
value={formData.position}
onChange={handleChange}
required
/>
</div>
</div>
<div className="form-row">
<div className="form-group">
<label>เงินเดือน</label>
<input
type="number"
name="salary"
value={formData.salary}
onChange={handleChange}
required
/>
</div>
<div className="form-group">
<label>วันที่เริ่มงาน</label>
<input
type="date"
name="hire_date"
value={formData.hire_date}
onChange={handleChange}
required
/>
</div>
</div>
<button type="submit" disabled={loading}>
{loading ? 'กำลังบันทึก...' : 'เพิ่มพนักงาน'}
</button>
</form>
)
}
export default AddEmployeeFormขั้นตอนที่ 3: สร้าง API ใน Laravel
Backend (Laravel):
php
<?php
// app/Http/Controllers/EmployeeController.php
namespace App\Http\Controllers;
use App\Models\Employee;
use Illuminate\Http\Request;
class EmployeeController extends Controller
{
public function store(Request $request)
{
// 1. ตรวจสอบข้อมูล
$validated = $request->validate([
'employee_code' => 'required|unique:employees|max:10',
'first_name' => 'required|max:100',
'last_name' => 'required|max:100',
'email' => 'required|email|unique:employees',
'phone' => 'required|regex:/^[0-9]{10}$/',
'department' => 'required|in:IT,HR,Sales,Marketing',
'position' => 'required|max:50',
'salary' => 'required|numeric|min:0',
'hire_date' => 'required|date'
]);
// 2. สร้างข้อมูลพนักงานใหม่
$employee = Employee::create($validated);
// 3. บันทึก Log
\Log::info('New employee added', [
'employee_id' => $employee->id,
'added_by' => auth()->user()->id
]);
// 4. ส่ง Email แจ้งเตือน HR
// Mail::to('[email protected]')->send(new NewEmployeeNotification($employee));
// 5. ส่งผลลัพธ์กลับ
return response()->json([
'success' => true,
'message' => 'เพิ่มพนักงานสำเร็จ',
'employee' => $employee
], 201);
}
}php
// routes/api.php
Route::middleware('auth:sanctum')->group(function() {
Route::post('/employees', [EmployeeController::class, 'store']);
});ขั้นตอนที่ 4: SQL Query ที่เกิดขึ้น
sql
-- Laravel จะสร้าง SQL Query นี้
INSERT INTO employees (
employee_code,
first_name,
last_name,
email,
phone,
department,
position,
salary,
hire_date,
status,
created_at
) VALUES (
'EMP001',
'สมชาย',
'ใจดี',
'[email protected]',
'0812345678',
'IT',
'Software Engineer',
50000.00,
'2024-02-01',
'active',
NOW()
);Flow Diagram แสดงการทำงาน
┌──────────────────────────────────────────────────────────────┐
│ 1. ผู้ใช้กรอกฟอร์ม │
│ [รหัส: EMP001] [ชื่อ: สมชาย] [อีเมล: somchai@...] │
│ [กดปุ่ม: เพิ่มพนักงาน] │
└────────────┬─────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 2. React ส่ง HTTP POST Request │
│ POST /api/employees │
│ Body: { employee_code: "EMP001", ... } │
└────────────┬─────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 3. Laravel รับ Request │
│ ✓ ตรวจสอบ Authentication │
│ ✓ Validate ข้อมูล │
│ ✓ ตรวจสอบข้อมูลซ้ำ │
└────────────┬─────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 4. Laravel ส่ง SQL Query ไป MySQL │
│ INSERT INTO employees VALUES (...) │
└────────────┬─────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 5. MySQL บันทึกข้อมูล │
│ ✓ บันทึกลง Table employees │
│ ✓ Generate ID = 1 │
│ ✓ Return ข้อมูลที่บันทึก │
└────────────┬─────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 6. Laravel ส่ง Response กลับ │
│ { success: true, employee: {...} } │
└────────────┬─────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 7. React รับ Response │
│ ✓ แสดงข้อความ "เพิ่มพนักงานสำเร็จ!" │
│ ✓ รีเซ็ตฟอร์ม │
│ ✓ อัพเดทรายการพนักงาน │
└──────────────────────────────────────────────────────────────┘📋 สรุปสิ่งที่เรียน
🎯 สรุปหลัก 3 ส่วน
React (Frontend) 🎨
- แสดงผล UI
- รับข้อมูลจากผู้ใช้
- ส่ง Request ไป Backend
- แสดงผลลัพธ์
Laravel (Backend) 🔧
- รับ Request จาก Frontend
- Validate ข้อมูล
- ประมวลผล Logic
- เชื่อมต่อกับ Database
- ส่ง Response กลับ
MySQL (Database) 🗄️
- เก็บข้อมูลอย่างเป็นระบบ
- ค้นหาข้อมูลได้เร็ว
- รักษาความสัมพันธ์ระหว่างตาราง
- ปลอดภัย น่าเชื่อถือ
🔄 Flow การทำงาน (สรุป)
ผู้ใช้ → React → Laravel → MySQL
↓
บันทึกข้อมูล
↓
MySQL → Laravel → React → แสดงผล✅ ข้อดีของการแยกเป็น 3 ส่วน
แยกหน้าที่ชัดเจน
- แต่ละส่วนทำหน้าที่ของตัวเอง
- แก้ไขง่าย ไม่กระทบส่วนอื่น
ทำงานร่วมกันได้
- หลายคนทำงานพร้อมกัน
- Frontend Dev ≠ Backend Dev
ขยายตัวได้
- เพิ่ม Features ใหม่ได้ง่าย
- รองรับผู้ใช้เยอะได้
ปลอดภัย
- Backend ตรวจสอบข้อมูล
- Database มีระบบรักษาความปลอดภัย
📚 คำศัพท์สำคัญ
Frontend
| คำศัพท์ | อังกฤษ | ความหมาย |
|---|---|---|
| หน้าเว็บ | Frontend | ส่วนที่ผู้ใช้เห็น |
| ปุ่ม | Button | ปุ่มให้คลิก |
| ฟอร์ม | Form | แบบฟอร์มกรอกข้อมูล |
| ส่วนประกอบ | Component | ชิ้นส่วนย่อยของหน้าเว็บ |
| แสดงผล | Render | แสดงผลบนหน้าจอ |
Backend
| คำศัพท์ | อังกฤษ | ความหมาย |
|---|---|---|
| ส่วนหลังบ้าน | Backend | ส่วนที่ทำงานเบื้องหลัง |
| เซิร์ฟเวอร์ | Server | คอมพิวเตอร์ที่ให้บริการ |
| เอพีไอ | API | ช่องทางสื่อสาร |
| ตรวจสอบ | Validate | ตรวจสอบความถูกต้อง |
| ประมวลผล | Process | ประมวลผลข้อมูล |
Database
| คำศัพท์ | อังกฤษ | ความหมาย |
|---|---|---|
| ฐานข้อมูล | Database | ที่เก็บข้อมูล |
| ตาราง | Table | ตารางเก็บข้อมูล |
| แถว | Row/Record | แถวข้อมูล |
| คอลัมน์ | Column/Field | หัวข้อข้อมูล |
| กุญแจหลัก | Primary Key | รหัสไม่ซ้ำ |
| กุญแจต่างประเทศ | Foreign Key | รหัสอ้างอิง |
| ค้นหา | Query | คำสั่งค้นหาข้อมูล |
| เชื่อมตาราง | Join | เชื่อมโยงตาราง |
ทั่วไป
| คำศัพท์ | อังกฤษ | ความหมาย |
|---|---|---|
| คำขอ | Request | ขอข้อมูลจาก Server |
| คำตอบ | Response | ตอบกลับจาก Server |
| เบราว์เซอร์ | Browser | โปรแกรมเปิดเว็บ |
| ลูกค้า | Client | คอมพิวเตอร์ของผู้ใช้ |
| โครงสร้าง | Structure | โครงสร้างระบบ |
| สถาปัตยกรรม | Architecture | สถาปัตยกรรมระบบ |
🎓 ทดสอบความเข้าใจ
คำถามทบทวน
Database เปรียบเทียบได้กับอะไร?
- ตู้เก็บเอกสารที่จัดเป็นระเบียบ
Primary Key คืออะไร?
- รหัสประจำตัวที่ไม่ซ้ำกัน ใช้อ้างอิงข้อมูล
Foreign Key คืออะไร?
- รหัสที่ใช้เชื่อมโยงกับตารางอื่น
การทำงานของระบบมีกี่ขั้นตอนหลัก?
- 7 ขั้นตอน: กรอกข้อมูล → ส่ง Request → Backend รับ → Query Database → MySQL บันทึก → Response → แสดงผล
ทำไมต้องแยกเป็น 3 ส่วน (React, Laravel, MySQL)?
- แยกหน้าที่ชัดเจน, ทำงานร่วมกันได้, แก้ไขง่าย, ปลอดภัย
ขั้นตอนต่อไป: เริ่มเรียนรู้แต่ละส่วนอย่างละเอียด!