← กลับหน้าหลัก
🗄️

ระบบฐานข้อมูล

1. ACID Properties: หัวใจของฐานข้อมูลที่น่าเชื่อถือ

กฎ 4 ข้อที่ Transaction ใน Database ต้องมี:

  • Atomicity: ต้องทำสำเร็จ 'ทั้งหมด' หรือ 'ไม่ทำเลย' (All or Nothing)
  • Consistency: ข้อมูลต้องความถูกต้องตามกฎเกณฑ์ (เช่น ยอดเงินห้ามติดลบ)
  • Isolation: รายการที่ทำพร้อมกันต้องแยกจากกัน ไม่กวนกัน (Locking)
  • Durability: เมื่อทำสำเร็จแล้ว ข้อมูลต้องอยู่ถาวรแม้ไฟดับ (Save to disk)
🎯 จุดออกสอบบ่อย: ตัวอย่าง: การโอนเงิน ถ้าหักบัญชี A แล้วแต่บวกบัญชี B ไม่ได้ ระบบต้อง Rollback กลับเหมือนไม่เคยเกิดขึ้น

2. Normalization: การกำจัดความซ้ำซ้อนระดับสูง

Levelปัญหาที่กำจัดคำอธิบายเชิงลึก
1NFMulti-valued attributesห้ามมีค่า 'คอมพิวเตอร์, ภาษาไทย' ในช่องเดียว ต้องแตกบรรทัด
2NFPartial Functional Dependenciesถ้า PK มีสองตัว ทุกช่องต้องขึ้นกับทั้งคู่ ไม่ใช่ขึ้นกับแค่ตัวเดียว
3NFTransitive dependenciesห้ามมี A -> B -> C (C ต้องไปสร้างตารางใหม่พร้อม B เป็น PK)
BCNFAnomalies in overlapping keysความเข้มงวดที่มากกว่า 3NF ในกรณีที่คีย์มีหลายชุดซ้อนกัน

3. SQL: Advanced Queries & Aggregate Functions

คำสั่ง SQL สำหรับการสรุปผลและจัดการความปลอดภัย:

  • GROUP BY / HAVING: ใช้จัดกลุ่มข้อมูลเพื่อสรุปผล (HAVING ใช้แทน WHERE ในกรณีเช็คค่า Aggregate)
  • COUNT, SUM, AVG, MIN, MAX: ฟังก์ชันรวมกลุ่มข้อมูล
  • UNION vs UNION ALL: การรวมผลลัพธ์จาก 2 QUERY (UNION จะตัดตัวที่ซ้ำออก)
  • INDEX: การสร้างดัชนีเพื่อช่วยค้นหาข้อมูลได้เร็วขึ้น (แลกกับพื้นที่เก็บข้อมูลเพิ่ม)
  • VIEW: ตารางเสมือนที่สร้างจาก Query (ไม่เก็บข้อมูลจริง) ช่วยเรื่อง Security

4. Database Security & Backup

การป้องกันและสำรองข้อมูล:

  • SQL Injection: การฉีดโค้ดทำลาย Query ผ่านช่อง Input
  • Prevention: ใช้ Parameterized Query / Prepared Statement
  • Backup Types: Full (หมด), Incremental (เทียบครั้งก่อน), Differential (เทียบ Full ครั้งก่อน)

5. E-R Diagram (Entity-Relationship)

การออกแบบความสัมพันธ์:

  • One-to-One (1:1): พลเมือง 1 คน มีบัตรปชช. 1 ใบ
  • One-to-Many (1:M): แม่ 1 คน มีลูกหลายคน (ใช้ FK แปะฝั่ง M)
  • Many-to-Many (M:N): นักเรียนหลายคน ลงเรียนหลายวิชา (ต้องมีตารางกลาง Junction Table)

6. คำสั่ง SQL พื้นฐานสำคัญ - CRUD Operations

CRUD คือคำสั่งพื้นฐาน 4 ประเภทสำหรับจัดการข้อมูล: Create, Read, Update, Delete

Operationคำสั่ง SQLรูปแบบการใช้งานตัวอย่าง
CreateINSERT INTOINSERT INTO table (col1, col2) VALUES (val1, val2)INSERT INTO users (name, age) VALUES ('สมชาย', 25)
ReadSELECTSELECT col1, col2 FROM table WHERE conditionSELECT * FROM users WHERE age > 20
UpdateUPDATEUPDATE table SET col1 = val1 WHERE conditionUPDATE users SET age = 26 WHERE name = 'สมชาย'
DeleteDELETEDELETE FROM table WHERE conditionDELETE FROM users WHERE id = 5

คำสั่ง DDL (Data Definition Language) - คำสั่งสร้าง/แก้ไขโครงสร้าง

  • CREATE TABLE: สร้างตารางใหม่
  • ALTER TABLE: แก้ไขโครงสร้างตาราง (เพิ่ม/ลบ Column)
  • DROP TABLE: ลบตารางทิ้ง (ระวัง! ลบทั้งโครงสร้างและข้อมูล)
  • TRUNCATE TABLE: ลบข้อมูลทั้งหมดในตาราง (เร็วกว่า DELETE)

คำสั่ง DCL (Data Control Language) - คำสั่งควบคุมสิทธิ์

  • GRANT: ให้สิทธิ์ผู้ใช้ เช่น GRANT SELECT ON users TO user1
  • REVOKE: เพิกถอนสิทธิ์ผู้ใช้ เช่น REVOKE DELETE ON users FROM user1
⚠️ ข้อควรระวัง: ระวัง! DELETE และ UPDATE ถ้าไม่ใส่ WHERE จะทำกับทุกแถวในตาราง!

7. JOIN - การเชื่อมตาราง

JOIN ใช้เพื่อดึงข้อมูลจากหลายตารางที่มีความสัมพันธ์กันมารวมกัน เป็นหัวข้อที่ออกสอบบ่อยมาก

ประเภท JOINผลลัพธ์คำอธิบาย
INNER JOINเฉพาะที่ตรงกันทั้งสองฝั่งถ้าไม่มีคู่ในอีกตาราง → ไม่แสดง
LEFT JOIN (LEFT OUTER)ทั้งหมดจากซ้าย + ที่ตรงกันจากขวาถ้าไม่มีคู่ทางขวา → แสดง NULL
RIGHT JOIN (RIGHT OUTER)ทั้งหมดจากขวา + ที่ตรงกันจากซ้ายถ้าไม่มีคู่ทางซ้าย → แสดง NULL
FULL OUTER JOINทั้งหมดจากทั้งสองฝั่งไม่มีคู่ฝั่งไหน → แสดง NULL ฝั่งนั้น
CROSS JOINทุกแถวของตาราง A × ทุกแถวของตาราง BCartesian Product (ถ้า A มี 3 แถว, B มี 4 แถว = 12 แถว)
SELF JOINตารางเดียวกัน JOIN กับตัวเองใช้หาความสัมพันธ์ภายในตาราง เช่น หัวหน้า-ลูกน้อง

ตัวอย่าง: ตาราง Employees (id, name, dept_id) และ Departments (id, dept_name)

  • INNER JOIN: SELECT e.name, d.dept_name FROM Employees e INNER JOIN Departments d ON e.dept_id = d.id
  • → แสดงเฉพาะพนักงานที่มีแผนกตรงกัน
  • LEFT JOIN: SELECT e.name, d.dept_name FROM Employees e LEFT JOIN Departments d ON e.dept_id = d.id
  • → แสดงพนักงานทุกคน (ถ้าไม่มีแผนก dept_name = NULL)
🎯 จุดออกสอบบ่อย: จำ: INNER = Intersection (ส่วนซ้อนกัน), LEFT/RIGHT = รวมทั้งฝั่ง + ส่วนที่ตรง, FULL = รวมทุกอย่าง

8. ชนิดข้อมูลใน SQL (Data Types)

การเลือกชนิดข้อมูลที่เหมาะสมมีผลต่อประสิทธิภาพและความถูกต้องของฐานข้อมูล

หมวดชนิดข้อมูลคำอธิบายตัวอย่าง
ตัวเลขINT / INTEGERเลขจำนวนเต็ม (-2.1 พันล้าน ถึง 2.1 พันล้าน)อายุ, จำนวนสินค้า
ตัวเลขDECIMAL(p,s) / NUMERICเลขทศนิยมแม่นยำ (p=หลักทั้งหมด, s=ทศนิยม)DECIMAL(10,2) สำหรับราคา
ตัวเลขFLOAT / DOUBLEเลขทศนิยมแบบประมาณ (เร็วแต่ไม่แม่นยำ 100%)ค่าทางวิทยาศาสตร์
ข้อความCHAR(n)ความยาวคงที่ n ตัวอักษร (เติม Space ถ้าสั้นกว่า)รหัสไปรษณีย์ CHAR(5)
ข้อความVARCHAR(n)ความยาวไม่เกิน n ตัวอักษร (ประหยัดพื้นที่กว่า)ชื่อ VARCHAR(100)
ข้อความTEXTข้อความยาวมากไม่จำกัดรายละเอียดสินค้า, บทความ
วันเวลาDATEวันที่ (YYYY-MM-DD)2024-01-15
วันเวลาDATETIME / TIMESTAMPวันที่และเวลา2024-01-15 14:30:00
อื่นๆBOOLEANค่าจริง/เท็จ (TRUE/FALSE หรือ 1/0)สถานะ Active/Inactive
อื่นๆBLOBข้อมูล Binary ขนาดใหญ่รูปภาพ, ไฟล์
🎯 จุดออกสอบบ่อย: ใช้ VARCHAR แทน CHAR เมื่อความยาวไม่แน่นอน และใช้ DECIMAL แทน FLOAT สำหรับการคำนวณเงิน

9. Stored Procedure, Function และ Trigger

เป็นโค้ดที่เก็บไว้ในฐานข้อมูลเพื่อให้เรียกใช้ซ้ำได้ ช่วยลดโค้ดและเพิ่มประสิทธิภาพ

ประเภทคำอธิบายการเรียกใช้ตัวอย่างการใช้งาน
Stored Procedureชุดคำสั่ง SQL ที่เก็บไว้ เรียกใช้ตอนไหนก็ได้CALL procedure_name()รายงานยอดขายรายเดือน, การสร้างบัญชีใหม่
Functionเหมือน Procedure แต่ต้อง RETURN ค่ากลับSELECT function_name()คำนวณภาษี, หาอายุจากวันเกิด
Triggerทำงานอัตโนมัติเมื่อเกิด INSERT/UPDATE/DELETEทำงานเองบันทึก Log, อัพเดทยอดรวมอัตโนมัติ
Viewตารางเสมือนที่สร้างจาก SELECTSELECT * FROM view_nameซ่อนข้อมูลบางส่วน, Query ที่ใช้บ่อย
  • Trigger BEFORE: ทำงานก่อน INSERT/UPDATE/DELETE (ใช้ตรวจสอบข้อมูล)
  • Trigger AFTER: ทำงานหลัง INSERT/UPDATE/DELETE (ใช้บันทึก Log)
  • ข้อดี: ลดโค้ดซ้ำซ้อน, ประมวลผลในฐานข้อมูล (เร็วกว่าส่งข้อมูลไป-กลับ)
  • ข้อเสีย: Debug ยาก, อาจลืมว่ามี Trigger ทำงานอยู่
⚠️ ข้อควรระวัง: ระวัง Trigger ซับซ้อน! อาจทำให้ระบบช้าและยากต่อการ Debug เพราะทำงานแบบเบื้องหลัง

10. SQL vs NoSQL - เปรียบเทียบฐานข้อมูล

ฐานข้อมูลมี 2 แนวทางหลัก แต่ละแบบเหมาะกับงานต่างกัน

หัวข้อSQL (Relational)NoSQL (Non-Relational)
โครงสร้างข้อมูลตารางตายตัว (Schema-based)ยืดหยุ่น (Schema-less)
ความสัมพันธ์ใช้ JOIN เชื่อมตารางฝังข้อมูล (Embedding) หรือ Reference
การ ScaleVertical Scaling (เพิ่ม CPU/RAM)Horizontal Scaling (เพิ่มเครื่อง)
ConsistencyACID (เชื่อถือได้สูง)BASE (Eventually Consistent)
ภาษา QuerySQLแตกต่างกันตาม DB (MongoDB ใช้ JSON-like)
ตัวอย่างMySQL, PostgreSQL, Oracle, SQL ServerMongoDB, Redis, Cassandra, DynamoDB
เหมาะกับธุรกรรมการเงิน, ข้อมูลที่ต้องถูกต้อง 100%Big Data, Real-time Apps, IoT
  • Document DB (MongoDB): เก็บเป็น JSON document ยืดหยุ่นสูง
  • Key-Value (Redis): เก็บ key-value pairs เร็วมากใช้ทำ Cache
  • Column Family (Cassandra): เก็บเป็น Column families ทน Scale มาก
  • Graph DB (Neo4j): เก็บเป็น Node และ Edge เหมาะกับ Social Network
🎯 จุดออกสอบบ่อย: ไม่มีอะไรดีที่สุด! SQL เหมาะกับข้อมูลที่ต้องถูกต้อง, NoSQL เหมาะกับข้อมูลจำนวนมากที่ต้องเร็ว

11. Transaction Isolation Levels (ระดับการแยกตัวของธุรกรรม)

ระดับความเข้มงวดในการจัดการข้อมูลที่ใช้ร่วมกัน (Concurrency Control):

Levelป้องกันอะไรได้บ้างPerformance
Read Uncommittedไม่ป้องกันอะไรเลย (อ่านข้อมูลที่ยังไม่ Commit ได้เรียก Dirty Read)เร็วสุด / เสี่ยงสุด
Read Committedป้องกัน Dirty Read (ค่า Default ของ DB ส่วนใหญ่)สมดุล
Repeatable Readป้องกัน Dirty Read + Non-repeatable Read (อ่านซ้ำได้ค่าเดิมเสมอ)ช้าลง
Serializableป้องกันได้ทุกอย่าง (เปรียบเสมือนทำทีละคน)ช้าที่สุด / ปลอดภัยสุด

12. Indexing Strategies (กลยุทธ์การทำดัชนี)

Index ช่วยให้เร็วแต่เปลืองที่และทำให้ Insert/Update ช้าลง ต้องเลือกใช้ให้ถูก:

  • B-Tree Index: เหมาะกับการเปรียบเทียบ <, >, =, BETWEEN (ใช้บ่อยสุด)
  • Hash Index: เหมาะกับการเปรียบเทียบ = เท่านั้น (เร็วมากแต่ Range Search ไม่ได้)
  • Composite Index (Compound): Index หลายคอลัมน์รวมกัน (ลำดับสำคัญ! ต้องใช้ตัวซ้ายสุดก่อน)
  • Unique Index: บังคับว่าค่าห้ามซ้ำ (ได้ความเร็ว + Constraint)
🎯 จุดออกสอบบ่อย: Table Scan vs Index Scan: ถ้า Query ช้าให้ดู Explain Plan ว่ามันทำ Table Scan (อ่านทั้งตาราง) หรือไม่ ถ้าใช่ควรสร้าง Index

13. เจาะลึก NoSQL Database Types

ประเภทเก็บข้อมูลแบบตัวอย่างยอดนิยมเหมาะกับงาน
DocumentJSON / BSONMongoDB, CouchDBContent Management, Catalog สินค้า
Key-ValueKey คู่กับ ValueRedis, MemcachedCaching, Session Store (เน้นเร็ว)
Column-Familyคอลัมน์ยืดหยุ่นCassandra, HBaseLog Data, Time-series, Big Data
GraphNodes และ EdgesNeo4j, Amazon NeptuneSocial Network, Recommendation Engine

CAP Theorem: ในระบบ Distributed System เลือกได้แค่ 2 ใน 3 อย่าง: Consistency (ข้อมูลตรงกัน), Availability (ระบบไม่ล่ม), Partition Tolerance (เครือข่ายขาดก็ทำงานต่อได้)

14. Stored Procedures & Triggers

การเขียนโปรแกรมฝังไว้ในฐานข้อมูล:

  • Stored Procedure: ชุดคำสั่ง SQL ที่บันทึกไว้ เรียกใช้ได้เหมือน Function ช่วยลด Traffic เครือข่าย
  • Trigger: ชุดคำสั่งที่จะทำงาน 'อัตโนมัติ' เมื่อมีเหตุการณ์เกิดขึ้น (Insert/Update/Delete) เช่น เก็บ Log อัตโนมัติเมื่อมีการลบข้อมูล

15. Data Warehousing & Business Intelligence (BI)

คุณสมบัติOLTP (Database ปกติ)OLAP (Data Warehouse)
วัตถุประสงค์บันทึกข้อมูลประจำวัน (Operational)วิเคราะห์ข้อมูลเพื่อตัดสินใจ (Analytical)
ลักษณะข้อมูลข้อมูลล่าสุด ละเอียด ยิบย่อยข้อมูลย้อนหลัง สรุปผลมาแล้ว
การออกแบบNormalized (ลดความซ้ำซ้อน)Denormalized (เน้นอ่านเร็ว Star Schema)
ผู้ใช้งานพนักงานปฏิบัติการ / ระบบอัตโนมัติผู้บริหาร / นักวิเคราะห์ข้อมูล
🎯 จุดออกสอบบ่อย: ETL (Extract, Transform, Load): กระบวนการดูดข้อมูลจากแหล่งต่างๆ ปรับแต่ง และนำเข้าสู่ Data Warehouse

16. Big Data Concepts (3Vs)

คุณลักษณะของ Big Data (3Vs):

  • 1. Volume: ปริมาณข้อมูลมหาศาล (ระดับ Terabyte/Petabyte)
  • 2. Velocity: มาเร็วและเปลี่ยนแปลงตลอดเวลา (Real-time data)
  • 3. Variety: หลากหลายรูปแบบ (Text, Image, Video, Log, Social Media)