📚 ภาคทฤษฎี
เป้าหมาย: สร้างความเข้าใจที่ลึกซึ้งเกี่ยวกับทางเลือกของประเภทฐานข้อมูลและสถาปัตยกรรมต่างๆ เพื่อให้นักศึกษาสามารถวิเคราะห์และตัดสินใจเบื้องต้นได้ว่าระบบแบบใดจะเหมาะสมกับข้อมูลที่หลากหลายในโรงงานอัจฉริยะ โดยเฉพาะข้อมูลจากอุปกรณ์ IoT
1. ประเภทของระบบฐานข้อมูล (Database Types) และความเหมาะสมกับข้อมูล IoT 📊
- 1.1 ระบบฐานข้อมูลเชิงสัมพันธ์ (Relational Databases – RDBMS): “ตู้เก็บเอกสารที่มีระเบียบแบบแผน”
- แนวคิดหลัก: ลองจินตนาการถึงตู้เก็บเอกสารขนาดใหญ่ที่แต่ละลิ้นชัก (ตาราง – Tables) เก็บแฟ้มเอกสาร (แถว – Rows) ประเภทเดียวกัน และในแต่ละแฟ้มก็มีช่องใส่ข้อมูล (คอลัมน์ – Columns) ที่กำหนดไว้ชัดเจน เช่น แฟ้ม “ข้อมูลเครื่องจักร” จะมีช่องสำหรับ “รหัสเครื่องจักร”, “ชื่อเครื่องจักร”, “รุ่น” เสมอ
- หัวใจสำคัญคือ “ความสัมพันธ์ (Relationships)”: แฟ้มในลิ้นชักต่างๆ สามารถอ้างอิงถึงกันได้ เช่น แฟ้ม “บันทึกการซ่อม” อาจมีช่อง “รหัสเครื่องจักรที่ซ่อม” เพื่อให้รู้ว่าเป็นการซ่อมเครื่องจักรเครื่องไหนในลิ้นชัก “ข้อมูลเครื่องจักร” การเชื่อมโยงนี้ทำผ่าน คีย์ (Keys)
- Primary Key (กุญแจหลัก): เหมือนเลขประจำตัวประชาชนของแฟ้มแต่ละแฟ้มในลิ้นชัก ไม่ซ้ำกันเลย ทำให้หาแฟ้มนั้นเจอได้ทันที
- Foreign Key (กุญแจอ้างอิง): เหมือนการจดเลขประจำตัวประชาชนของแฟ้มจากลิ้นชักอื่นมาใส่ไว้ในแฟ้มปัจจุบัน เพื่อบอกว่าแฟ้มนี้เกี่ยวข้องกับแฟ้มนั้น
- ภาษา SQL (Structured Query Language): เป็น “ภาษาคำสั่ง” ที่ใช้สั่งงานตู้เก็บเอกสารนี้ เช่น “ขอดูแฟ้มเครื่องจักรทุกเครื่องที่ติดตั้งหลังปี 2020” หรือ “เพิ่มแฟ้มเครื่องจักรใหม่เข้าไป”
- คุณสมบัติ ACID (Atomicity, Consistency, Isolation, Durability): เปรียบเสมือน “ระบบประกันคุณภาพ” ของตู้เก็บเอกสาร ทำให้มั่นใจว่าทุกการเปลี่ยนแปลงข้อมูลจะถูกต้อง ครบถ้วน ไม่ว่าจะเกิดเหตุการณ์ไม่คาดฝันอะไรขึ้นก็ตาม
- เน้นย้ำ: ACID สำคัญมากสำหรับข้อมูลที่ต้องการความแม่นยำสูง เช่น ข้อมูลทางการเงิน หรือข้อมูลการตั้งค่าที่สำคัญของเครื่องจักรในโรงงาน
- จุดเด่น:
- ข้อมูลเป็นระเบียบ แม่นยำสูง: เหมาะกับข้อมูลที่ต้องตรวจสอบความถูกต้องอยู่เสมอ
- โครงสร้างชัดเจน เข้าใจง่าย (เมื่อคุ้นเคย): เมื่อออกแบบดีแล้ว การค้นหาและเชื่อมโยงข้อมูลทำได้ดี
- ข้อจำกัด:
- ไม่ค่อยยืดหยุ่นกับข้อมูลที่เปลี่ยนรูปแบบบ่อยๆ: ถ้าจู่ๆ อยากเพิ่มช่องข้อมูลใหม่ๆ ในแฟ้มทุกแฟ้ม อาจต้องรื้อระบบตู้กันพอสมควร
- การรับมือกับข้อมูลจำนวนมหาศาลมากๆ และเติบโตเร็วมาก อาจต้องใช้ตู้ที่ใหญ่และแพงมาก (Vertical Scaling): หรือการทำสำเนาหลายตู้แล้วให้ทำงานร่วมกัน (Horizontal Scaling) อาจจะซับซ้อน
- ความเหมาะสมกับข้อมูล IoT ในโรงงานอัจฉริยะ:
- ข้อมูลอ้างอิง (Master Data): ข้อมูลจำเพาะของเครื่องจักรแต่ละเครื่อง, รายละเอียดของผลิตภัณฑ์แต่ละชนิด, ข้อมูลผู้ใช้งานระบบ
- ข้อมูลการกำหนดค่า (Configuration Data): พารามิเตอร์การทำงานของเครื่องจักร, สูตรการผลิต
- ข้อมูล Transaction ที่สำคัญ: ประวัติการสั่งงานเครื่องจักร, ผลการตรวจสอบคุณภาพที่สำคัญมากๆ
- 1.2 ระบบฐานข้อมูลแบบ NoSQL (Not Only SQL): “ห้องสมุดที่มีชั้นหนังสือหลากหลายรูปแบบ”
- แนวคิดหลัก: ไม่ได้มีแค่ “ตู้เก็บเอกสารแบบเดียว” แต่เหมือนห้องสมุดที่มีชั้นหนังสือหลายแบบ บางชั้นอาจเก็บม้วนกระดาษ (Document), บางชั้นเก็บกล่องเล็กๆ ที่มีป้ายชื่อ (Key-Value), บางชั้นเก็บแฟ้มขนาดใหญ่มาก (Column-Family), หรือบางชั้นมีแผนผังโยงใยความสัมพันธ์ของหนังสือ (Graph) ออกแบบมาเพื่อรองรับข้อมูลที่ “ไม่เป็นระเบียบ” เท่า RDBMS หรือข้อมูลที่ “เยอะและเร็ว” มากๆ
- ความยืดหยุ่นคือจุดขาย (Schema Flexibility): ไม่จำเป็นต้องกำหนดช่องข้อมูลตายตัวเสมอไป ทำให้เก็บข้อมูลที่หลากหลายได้ง่าย
- ประเภทหลักของ NoSQL และความเหมาะสมกับข้อมูล IoT (พร้อมตัวอย่างเปรียบเทียบเพิ่มเติม):
- Document Databases (เช่น MongoDB): “ชั้นเก็บม้วนรายงานการทดลอง”
- แต่ละ “ม้วน” (เอกสาร JSON/BSON) คือข้อมูลของสิ่งหนึ่ง เช่น “รายงานผลจากเซ็นเซอร์ตัวที่ 1 วันนี้” ซึ่งอาจมีรายละเอียดไม่เท่ากับ “รายงานผลจากเซ็นเซอร์ตัวที่ 2” ก็ได้
- เหมาะกับ IoT: ข้อมูล Log จากอุปกรณ์, ข้อมูล Profile ของเซ็นเซอร์แต่ละตัวที่อาจมีคุณสมบัติปลีกย่อยต่างกัน, ผลการอ่านค่าจากเซ็นเซอร์ที่ซับซ้อนและมีหลายมิติ
- Key-Value Stores (เช่น Redis): “ตู้ล็อกเกอร์เก็บของพร้อมป้ายชื่อ”
- มี “ป้ายชื่อ” (Key) ที่ไม่ซ้ำกัน และ “ของในล็อกเกอร์” (Value) ซึ่งเป็นอะไรก็ได้ เข้าถึงของได้เร็วมากถ้าจำป้ายชื่อได้
- เหมาะกับ IoT: เก็บค่าสถานะล่าสุดของเซ็นเซอร์ (เช่น “อุณหภูมิห้อง_A_ล่าสุด”: “25.5 C”), เก็บข้อมูล Session ของผู้ใช้ที่กำลังดู Dashboard, ทำ Cache ข้อมูลที่ดึงบ่อยๆ
- Column-Family (Wide-Column) Stores (เช่น Apache Cassandra): “ห้องเก็บเอกสารขนาดใหญ่ที่จัดเรียงตามหัวเรื่องหลัก”
- เหมาะกับการเก็บข้อมูลจำนวนมหาศาลที่ “หัวเรื่องหลัก” (Row Key เช่น SensorID+Timestamp) เหมือนกัน แต่ “รายละเอียดปลีกย่อย” (Columns) อาจมีเยอะมากและไม่จำเป็นต้องมีครบทุกหัวเรื่อง
- เหมาะกับ IoT: ข้อมูลอนุกรมเวลา (Time-Series Data) จากเซ็นเซอร์จำนวนมาก ที่ส่งค่าเข้ามาอย่างต่อเนื่อง เช่น ค่าอุณหภูมิ, แรงดัน, การสั่นสะเทือน จากเซ็นเซอร์หลายร้อยตัว ทุกๆ เสี้ยววินาที
- Graph Databases (เช่น Neo4j): “แผนผังเครือข่ายความสัมพันธ์ของตัวละครในนิยาย”
- เน้นที่ “ใคร” (Nodes) เกี่ยวข้องกับ “ใคร” (Nodes) อย่างไร (Relationships)
- เหมาะกับ IoT: วิเคราะห์ว่าอุปกรณ์ใดเชื่อมต่อกับอุปกรณ์ใดบ้างในเครือข่ายโรงงาน, ติดตามว่าวัตถุดิบชิ้นนี้ผ่านเครื่องจักรใดมาบ้าง, หาจุดที่อาจเป็นคอขวดในสายการผลิตจากความสัมพันธ์ของกระบวนการ
- Document Databases (เช่น MongoDB): “ชั้นเก็บม้วนรายงานการทดลอง”
- จุดเด่น:
- รับมือข้อมูลหลากหลายรูปแบบได้ดี
- ขยายระบบเพื่อรองรับข้อมูลจำนวนมากได้ง่าย (Horizontal Scaling) โดยการเพิ่มเครื่องเซิร์ฟเวอร์เข้าไปในกลุ่ม
- เร็วสำหรับการอ่าน/เขียนข้อมูลบางประเภท
- ข้อจำกัด:
- ความเข้มงวดเรื่องความถูกต้องของข้อมูลอาจน้อยกว่า RDBMS (บางระบบอาจใช้ Eventual Consistency – ข้อมูลอาจจะยังไม่เหมือนกันทุกที่ในทันที แต่สุดท้ายจะเหมือนกัน)
- การ Query ข้อมูลที่ซับซ้อนมากๆ และต้องเชื่อมโยงหลายส่วน อาจทำได้ยากกว่า RDBMS (ถ้าไม่ได้ออกแบบมาเพื่อการนั้นโดยเฉพาะ)
2. สถาปัตยกรรมระบบฐานข้อมูล (Database Architectures) 🏗️
- 2.1 สถาปัตยกรรมแบบไคลเอนต์-เซิร์ฟเวอร์ (Client-Server Architecture): “ร้านอาหารที่มีลูกค้าและห้องครัว”
- แนวคิด:
- ไคลเอนต์ (Client): คือ “ลูกค้า” ที่มาสั่งอาหาร (ร้องขอข้อมูล/บริการ) เช่น แอปพลิเคชันบนมือถือที่ใช้ดูกราฟอุณหภูมิ, หน้าจอ HMI ที่เครื่องจักร, โปรแกรมบน PC ที่ใช้ป้อนข้อมูลการผลิต
- เซิร์ฟเวอร์ (Server): คือ “ห้องครัวและพ่อครัว” ที่รับออเดอร์ (คำสั่ง) ไปปรุงอาหาร (ประมวลผลข้อมูล) และนำมาเสิร์ฟ (ส่งผลลัพธ์) นั่นคือ Database Server ที่มี DBMS และฐานข้อมูลอยู่
- การทำงาน: ลูกค้า (Client) บอกรายการอาหาร (Request) -> พนักงานเสิร์ฟ (Network) นำไปให้ห้องครัว (Server) -> ห้องครัวปรุง (Process) -> พนักงานเสิร์ฟนำอาหารมาให้ลูกค้า (Response)
- ระดับของ Client-Server (Tiers):
- 2-Tier: ลูกค้าคุยกับพ่อครัวโดยตรง (Client <-> Database Server) ง่าย แต่ถ้าลูกค้าเยอะ พ่อครัวอาจจะงง
- 3-Tier/N-Tier: มี “ผู้จัดการร้าน/แคชเชียร์” (Application Server) คั่นกลาง ลูกค้าสั่งอาหารกับผู้จัดการร้าน ผู้จัดการร้านประสานงานกับห้องครัวอีกที ช่วยแบ่งเบาภาระและจัดการระบบได้ดีขึ้น (Client <-> App Server <-> Database Server)
- ข้อดี:
- จัดการง่ายที่ “ห้องครัว” (Server): สูตรอาหาร, วัตถุดิบ, ความสะอาด อยู่ที่ส่วนกลาง
- “ลูกค้า” (Client) ไม่ต้องทำงานหนัก: แค่สั่งกับรอรับอาหาร
- ข้อเสีย:
- ถ้า “ห้องครัว” ปิด (Server Down): ลูกค้าทุกคนอดกิน (Single Point of Failure)
- ถ้าลูกค้ามาพร้อมกันเยอะๆ “ห้องครัว” อาจทำไม่ทัน (Bottleneck): ต้องมีระบบจัดการคิวที่ดี หรือขยายห้องครัว
- การประยุกต์ในโรงงานอัจฉริยะ: ระบบควบคุมการผลิตส่วนกลาง, ระบบแสดงผล Dashboard, โปรแกรมบำรุงรักษาที่เชื่อมต่อกับฐานข้อมูลเครื่องจักร
- แนวคิด:
- 2.2 สถาปัตยกรรมแบบกระจาย (Distributed Database Architecture): “เครือข่ายร้านอาหารแฟรนไชส์”
- แนวคิด: แทนที่จะมีร้านอาหารใหญ่ร้านเดียว เรามี “ร้านสาขา” หลายร้านกระจายอยู่ตามที่ต่างๆ แต่ละร้านอาจมีเมนูหลักเหมือนกัน (Homogeneous) หรือมีเมนูพิเศษของตัวเอง (Heterogeneous) และข้อมูล (เช่น สูตรอาหาร, ยอดขาย) อาจจะเก็บแยกกันที่แต่ละสาขา หรือมีการทำสำเนาส่งถึงกัน หรือแบ่งส่วนกันดูแล
- เหตุผลที่ต้องมี “ร้านสาขา”:
- ลูกค้าที่อยู่ใกล้สาขาไหน ก็ไปสาขานั้นได้เลย (เข้าถึงข้อมูลเร็ว)
- ถ้าสาขาหนึ่งปิดปรับปรุง สาขาอื่นยังเปิดบริการได้ (ระบบไม่ล่มทั้งหมด – High Availability)
- รองรับลูกค้าจำนวนมากได้พร้อมกัน โดยกระจายไปตามสาขาต่างๆ
- รูปแบบการกระจายข้อมูล:
- การทำสำเนา (Replication): “ทุกสาขามีสูตรอาหารเดียวกันเป๊ะๆ”
- ข้อดี: อ่านข้อมูลเร็ว (ลูกค้าไม่ต้องรอสูตรจากส่วนกลาง), ถ้าสาขาหลักมีปัญหา สาขาอื่นยังมีสูตรทำอาหารได้
- ข้อเสีย: ถ้ามีการเปลี่ยนสูตรใหม่ ต้องแจ้งทุกสาขาให้ตรงกัน (อาจเกิดความล่าช้า), เปลืองที่เก็บสูตร (ข้อมูลซ้ำซ้อน)
- การแบ่งส่วน (Fragmentation): “สาขานี้ดูแลเมนูเส้น สาขานั้นดูแลเมนูข้าว”
- Horizontal Fragmentation: แบ่งตามลูกค้า เช่น ลูกค้าโซนเหนือเข้าร้านสาขาเชียงใหม่ ลูกค้าโซนใต้เข้าร้านสาขาหาดใหญ่
- Vertical Fragmentation: แบ่งตามประเภทข้อมูล เช่น แผนกบัญชีเก็บข้อมูลราคา แผนกครัวเก็บข้อมูลสูตร
- ข้อดี: แต่ละสาขาดูแลเฉพาะส่วนของตัวเอง, ลดข้อมูลที่ไม่จำเป็นในแต่ละที่
- ข้อเสีย: ถ้าลูกค้าต้องการสั่งทั้งข้าวและเส้น อาจต้องมีการประสานงานระหว่างสาขา (Query ซับซ้อน)
- การทำสำเนา (Replication): “ทุกสาขามีสูตรอาหารเดียวกันเป๊ะๆ”
- ข้อดี:
- น่าเชื่อถือสูง ระบบไม่ล่มง่าย
- เข้าถึงข้อมูลได้รวดเร็วสำหรับผู้ใช้ในพื้นที่นั้นๆ
- ขยายระบบได้ง่าย (เพิ่มสาขาใหม่)
- ข้อเสีย:
- ออกแบบและจัดการซับซ้อนมาก
- การทำให้ข้อมูลทุกสาขา “ตรงกัน” และ “ทันสมัย” เป็นเรื่องท้าทาย
- ค่าใช้จ่ายสูง
- การประยุกต์ในโรงงานอัจฉริยะ:
- บริษัทที่มีโรงงานหลายแห่งทั่วโลก แต่ละแห่งมีฐานข้อมูลการผลิตของตนเอง และมีการส่งข้อมูลสรุปที่สำคัญไปยังฐานข้อมูลกลางของสำนักงานใหญ่
- ระบบ IoT ขนาดใหญ่ที่ใช้ Edge Computing โดยมีฐานข้อมูลขนาดเล็กเก็บและประมวลผลข้อมูลเบื้องต้นที่ “ขอบ” ของเครือข่าย (ใกล้กับเซ็นเซอร์) ก่อนส่งข้อมูลที่จำเป็นไปยัง Cloud Database ส่วนกลาง
🛠️ ภาคปฏิบัติ
เป้าหมาย: ฝึกฝนกระบวนการคิดวิเคราะห์เพื่อแปลงความต้องการของระบบในโรงงานอัจฉริยะออกมาเป็น “สิ่งที่ต้องเก็บข้อมูล (Entities)” และ “รายละเอียดของสิ่งนั้นๆ (Attributes)” ซึ่งเป็นหัวใจสำคัญของการเริ่มต้นออกแบบฐานข้อมูล
ส่วนที่ 1: ทบทวนจากสัปดาห์ที่ 1 และปูทางสู่การวิเคราะห์ความต้องการข้อมูล
- ทบทวน: ผู้สอนทบทวนภาพรวมของข้อมูลที่ได้จาก MCU (อุณหภูมิ, ความชื้น, สถานะสวิตช์ ฯลฯ) จากปฏิบัติการสัปดาห์ที่ 1
- เชื่อมโยง:
- “จากสัปดาห์ที่แล้ว เราเห็นข้อมูลดิบจากเซ็นเซอร์ เช่น ‘27.5’, ’60’, ‘ON’ ข้อมูลเหล่านี้มีประโยชน์ในตัวเอง แต่ถ้าเราต้องการนำไปใช้ในวงกว้าง เช่น วิเคราะห์ว่าเครื่องจักรตัวไหนทำงานผิดปกติ หรือห้องไหนร้อนเกินไป เราต้องจัดเก็บข้อมูลเหล่านี้อย่างเป็นระบบเสียก่อน”
- “ก่อนจะสร้าง ‘บ้าน’ (ฐานข้อมูล) เราต้องรู้ว่าเราอยากให้บ้านมีกี่ห้อง (Entities) และแต่ละห้องจะเก็บอะไรบ้าง (Attributes) นี่คือสิ่งที่เราจะทำกันในวันนี้: การวิเคราะห์ความต้องการข้อมูล”
ส่วนที่ 2: การวิเคราะห์ความต้องการข้อมูลจากกระบวนการผลิตและอุปกรณ์ MCU: “ล้วงลึกความต้องการของโรงงาน” 📝⚙️
- หลักการและขั้นตอน (เน้นการตั้งคำถาม WHY, WHAT, WHO, WHERE, WHEN, HOW):
- กำหนดขอบเขตของระบบ (System Scope): “เรากำลังจะสร้างระบบอะไรกันแน่?”
- WHY: ทำไมต้องมีระบบนี้? แก้ปัญหาอะไร? เพิ่มประสิทธิภาพด้านไหน? (เช่น เพื่อลดของเสีย, เพื่อคาดการณ์การเสียของเครื่องจักร)
- WHAT: ระบบนี้จะทำอะไรได้บ้าง? (เช่น เก็บข้อมูลอุณหภูมิ, แสดงผลกราฟ, แจ้งเตือน)
- ระบุผู้มีส่วนได้ส่วนเสีย (Stakeholders) และความต้องการของพวกเขา: “ใครอยากรู้ข้อมูลอะไรจากระบบนี้ และจะเอาไปทำอะไร?”
- WHO: ผู้จัดการฝ่ายผลิต, วิศวกร, ช่างเทคนิค, ผู้ควบคุมคุณภาพ, หรือแม้กระทั่งลูกค้า (ถ้าเป็นข้อมูลที่เปิดเผยได้)
- WHAT information do they need?: พวกเขาต้องการดูรายงานแบบไหน? ข้อมูลอะไรบ้างที่จำเป็นต่อการตัดสินใจหรือการทำงานของพวกเขา? (เช่น ผู้จัดการอาจต้องการดู OEE, วิศวกรอาจต้องการดูกราฟการสั่นสะเทือนของมอเตอร์)
- HOW will they use it?: ดูผ่าน Dashboard? Export เป็น Excel? รับแจ้งเตือนผ่าน Line/Email?
- ระบุแหล่งข้อมูล (Data Sources): “ข้อมูลที่เราต้องการมาจากไหนบ้าง?”
- ข้อมูลจาก MCU และเซ็นเซอร์ (เน้นย้ำ):
- WHAT sensors are used?: DHT22 (Temp/Humid), HC-SR04 (Distance), ACS712 (Current), Photoelectric Sensor (Object Detection), Vibration Sensor, etc.
- WHAT data do they provide?: ตัวเลขอุณหภูมิ, ค่าความชื้น, ระยะทาง, กระแสไฟฟ้า, สถานะ (ON/OFF), จำนวนครั้งที่ตรวจจับ
- WHEN/HOW OFTEN is data collected?: ทุกวินาที? ทุก 5 นาที? เมื่อมีการเปลี่ยนแปลง?
- ข้อมูลจากมนุษย์ป้อน (Manual Input):
- WHAT data?: รหัสพนักงานที่ปฏิบัติงาน, สาเหตุการหยุดเครื่องจักร (Downtime Codes), หมายเหตุการตรวจสอบ
- WHO inputs it?: พนักงานหน้าเครื่อง, ช่างซ่อม
- ข้อมูลจากระบบอื่น (Other Systems):
- WHAT data?: รายการคำสั่งผลิตจากระบบ ERP (Enterprise Resource Planning), มาตรฐานคุณภาพจากระบบ QMS (Quality Management System)
- ข้อมูลจาก MCU และเซ็นเซอร์ (เน้นย้ำ):
- รวบรวมและระบุ “รายการข้อมูล” ที่สำคัญ (Gather and List Key Data “Items”):
- จากการตอบคำถามข้างต้น ให้ลิสต์ “คำนาม” หรือ “วลี” ที่เป็นข้อมูลที่เราต้องสนใจออกมาให้หมดก่อน
- ตัวอย่าง: “รหัสเครื่องจักร”, “อุณหภูมิปัจจุบันของมอเตอร์ตัวที่ 1”, “เวลาที่เครื่องจักร X หยุดทำงาน”, “ชื่อผู้ควบคุมกะปัจจุบัน”, “จำนวนสินค้าดีที่ผลิตได้ในชั่วโมงนี้”, “ค่าความสั่นสะเทือนแกน X ของปั๊มน้ำ Y”
- วิเคราะห์คุณลักษณะเบื้องต้นของ “รายการข้อมูล” แต่ละรายการ:
- ชนิดข้อมูลคร่าวๆ: เป็นตัวเลข? เป็นข้อความ? เป็นวันเวลา? หรือเป็นแค่ ใช่/ไม่ใช่?
- ความถี่ที่ข้อมูลนี้จะถูกบันทึกหรือเปลี่ยนแปลง
- ความสำคัญของข้อมูลนี้ (จำเป็นมาก/มีก็ดี/ไม่ค่อยจำเป็น)
- กำหนดขอบเขตของระบบ (System Scope): “เรากำลังจะสร้างระบบอะไรกันแน่?”
- กิจกรรมกลุ่มย่อย: “สวมบทบาทนักสืบข้อมูลในโรงงานจำลอง” (Smart Factory Case Study Analysis)
- ผู้สอนเตรียม สถานการณ์จำลอง (Case Study) ที่มีรายละเอียดชัดเจนขึ้นเล็กน้อยเกี่ยวกับ “ปัญหา” หรือ “เป้าหมาย” ของโรงงานจำลองนั้นๆ (อาจเป็น Case Study เดียวกับสัปดาห์ที่ 1 แต่เพิ่มรายละเอียดความต้องการเชิงข้อมูล)
- ตัวอย่าง Case Study (ปรับปรุง): ระบบเฝ้าระวังและแจ้งเตือนสภาพแวดล้อมในห้องควบคุมหลัก (Main Control Room Monitoring System)
- ปัญหา/เป้าหมาย: ห้องควบคุมหลักมีอุปกรณ์อิเล็กทรอนิกส์ราคาแพงและมีความสำคัญสูง หากอุณหภูมิสูงหรือต่ำเกินไป หรือมีความชื้นมากไป อาจทำให้อุปกรณ์เสียหายหรือทำงานผิดพลาดได้ ต้องการระบบที่สามารถเฝ้าระวังและแจ้งเตือนผู้ดูแลได้ทันท่วงที และสามารถดูข้อมูลย้อนหลังเพื่อวิเคราะห์แนวโน้มได้
- MCU & Sensors ที่ใช้:
- NodeMCU (ESP8266) จำนวน 2 ตัว ติดตั้งคนละมุมห้อง
- แต่ละ NodeMCU ต่อกับเซ็นเซอร์ DHT22 (วัดอุณหภูมิและความชื้น) และเซ็นเซอร์ตรวจจับควัน (MQ-2)
- ข้อมูลอุณหภูมิและความชื้นถูกส่งทุก 1 นาที, ข้อมูลควันถูกส่งเมื่อมีการตรวจพบควัน
- ผู้เกี่ยวข้อง (Stakeholders) และความต้องการ:
- ผู้ดูแลระบบ (System Administrator):
- ต้องการดูค่าอุณหภูมิ, ความชื้น, และสถานะควัน (ปกติ/มีควัน) ล่าสุดจากเซ็นเซอร์ทุกตัวแบบ Real-time บน Dashboard
- ต้องการรับ SMS หรือ Email แจ้งเตือนทันทีเมื่อ:
- อุณหภูมิสูงกว่า 30°C หรือต่ำกว่า 18°C
- ความชื้นสูงกว่า 70%
- ตรวจพบควัน
- ต้องการดูกราฟแสดงประวัติอุณหภูมิและความชื้นย้อนหลังได้ 7 วัน เพื่อดูแนวโน้ม
- หัวหน้าฝ่าย IT (IT Manager):
- ต้องการดูรายงานสรุปจำนวนครั้งที่เกิดการแจ้งเตือนในแต่ละสัปดาห์/เดือน แยกตามประเภทการแจ้งเตือน
- ต้องการทราบว่าเซ็นเซอร์ตัวไหนแจ้งเตือนบ่อยที่สุด
- ผู้ดูแลระบบ (System Administrator):
- ตัวอย่าง Case Study (ปรับปรุง): ระบบเฝ้าระวังและแจ้งเตือนสภาพแวดล้อมในห้องควบคุมหลัก (Main Control Room Monitoring System)
- การดำเนินกิจกรรม:
- แบ่งนักศึกษาเป็นกลุ่ม
- ให้แต่ละกลุ่ม “สวมบทบาท” เป็นทีมวิเคราะห์ระบบที่ได้รับมอบหมายให้ทำ Case Study นี้
- ใช้คำถาม WHY, WHAT, WHO, WHERE, WHEN, HOW เพื่อเจาะลึกความต้องการข้อมูล:
- WHY: ทำไมต้องเก็บอุณหภูมิ? ทำไมต้องเก็บทุก 1 นาที? ทำไมผู้ดูแลต้องรู้?
- WHAT: ข้อมูลอะไรบ้างที่จำเป็น (อุณหภูมิ, ความชื้น, สถานะควัน, เวลาที่บันทึก, รหัสเซ็นเซอร์, ตำแหน่งเซ็นเซอร์, ประเภทการแจ้งเตือน, เวลาที่แจ้งเตือน, ข้อความแจ้งเตือน ฯลฯ)?
- WHO: ใครเป็นคนสร้างข้อมูลนี้ (เซ็นเซอร์)? ใครเป็นคนใช้ข้อมูลนี้ (ผู้ดูแล, หัวหน้า)?
- WHERE: ข้อมูลนี้มาจากเซ็นเซอร์ตัวไหน ตำแหน่งใด?
- WHEN: ข้อมูลนี้ถูกบันทึกเมื่อไหร่? การแจ้งเตือนเกิดขึ้นเมื่อไหร่?
- HOW: ข้อมูลนี้มีรูปแบบอย่างไร (ตัวเลขทศนิยม, ข้อความ, วันที่เวลา)?
- ให้แต่ละกลุ่ม ลิสต์ “รายการข้อมูล” ที่สำคัญทั้งหมด ที่ต้องจัดเก็บออกมาให้ละเอียดที่สุดเท่าที่จะทำได้ พร้อมระบุแหล่งที่มา (เช่น จาก DHT22, จาก MQ-2, ระบบสร้างเอง) และความถี่คร่าวๆ
- ผู้สอนเตรียม สถานการณ์จำลอง (Case Study) ที่มีรายละเอียดชัดเจนขึ้นเล็กน้อยเกี่ยวกับ “ปัญหา” หรือ “เป้าหมาย” ของโรงงานจำลองนั้นๆ (อาจเป็น Case Study เดียวกับสัปดาห์ที่ 1 แต่เพิ่มรายละเอียดความต้องการเชิงข้อมูล)
ส่วนที่ 3: แนวคิดการออกแบบฐานข้อมูลเบื้องต้น: จาก “รายการข้อมูล” สู่ “กลุ่มก้อนของข้อมูล (Entity & Attribute Identification)” ✏️🧱
- การจัดระเบียบ “รายการข้อมูล”:
- ผู้สอนอธิบายว่า “รายการข้อมูล” ที่ได้จากส่วนที่ 2 นั้นยังกระจัดกระจายอยู่ เราต้องนำมาจัดกลุ่มให้เป็นหมวดหมู่ที่สมเหตุสมผล ซึ่งก็คือการระบุ Entities และ Attributes
- Entity (เอนทิตี): “กลุ่มก้อนหลักของข้อมูลที่เราสนใจ”
- วิธีการมองหา Entity:
- มองหา “คำนาม” หลักๆ ใน Case Study หรือในรายการข้อมูล (เช่น Sensor, Reading, Alert, Room, User)
- ลองคิดว่า “อะไรคือสิ่งที่เราต้องการเก็บข้อมูลหลายๆ อย่างเกี่ยวกับมัน?”
- จาก Case Study “ระบบเฝ้าระวังห้องควบคุม”:
- อาจจะมี Entities เช่น:
SENSOR_DEVICE
(อุปกรณ์เซ็นเซอร์แต่ละตัว),ENVIRONMENTAL_READING
(ข้อมูลการอ่านค่าสภาพแวดล้อมแต่ละครั้ง),ALERT_EVENT
(เหตุการณ์การแจ้งเตือนแต่ละครั้ง),CONTROL_ROOM
(ข้อมูลห้องควบคุม ถ้ามีหลายห้อง)
- อาจจะมี Entities เช่น:
- วิธีการมองหา Entity:
- Attribute (แอตทริบิวต์): “รายละเอียดหรือคุณสมบัติของแต่ละกลุ่มก้อน”
- วิธีการกำหนด Attribute:
- นำ “รายการข้อมูล” ที่ลิสต์ไว้ มาพิจารณาว่าแต่ละรายการควรจะไปอยู่ใน Entity ไหน
- “ข้อมูลนี้ใช้อธิบาย Entity ใด?”
- ตัวอย่าง Attributes สำหรับ
SENSOR_DEVICE
(จาก Case Study):DeviceID
(รหัสเฉพาะของอุปกรณ์เซ็นเซอร์)DeviceType
(เช่น “DHT22”, “MQ-2”)LocationInRoom
(เช่น “มุมซ้ายหน้า”, “ติดเพดานกลางห้อง”)RoomID_FK
(รหัสห้องที่ติดตั้ง – ถ้ามีหลายห้อง)InstallationDate
(วันที่ติดตั้ง)Status
(เช่น “Active”, “Inactive”, “Maintenance”)
- ตัวอย่าง Attributes สำหรับ
ENVIRONMENTAL_READING
(จาก Case Study):ReadingID
(รหัสการอ่านค่าแต่ละครั้ง)DeviceID_FK
(รหัสอุปกรณ์เซ็นเซอร์ที่ส่งค่านี้มา)Timestamp
(วันเวลาที่บันทึกค่า)TemperatureValue
(ค่าอุณหภูมิ – อาจเป็น Null ถ้าเซ็นเซอร์ไม่ใช่ตัววัดอุณหภูมิ)HumidityValue
(ค่าความชื้น – อาจเป็น Null)SmokeDetected
(สถานะการตรวจพบควัน – True/False)
- ตัวอย่าง Attributes สำหรับ
ALERT_EVENT
(จาก Case Study):AlertID
(รหัสการแจ้งเตือน)ReadingID_FK
(รหัสการอ่านค่าที่ทำให้เกิดการแจ้งเตือนนี้ – ถ้าเกี่ยวข้อง)DeviceID_FK
(รหัสอุปกรณ์ที่เกี่ยวข้องกับการแจ้งเตือน)AlertType
(เช่น “High Temperature”, “Low Temperature”, “High Humidity”, “Smoke Detected”)AlertTimestamp
(วันเวลาที่เกิดการแจ้งเตือน)AlertMessage
(ข้อความที่ส่งแจ้งเตือน)AcknowledgedStatus
(สถานะการรับทราบการแจ้งเตือน – True/False)AcknowledgedBy_UserID_FK
(รหัสผู้ใช้ที่รับทราบ – ถ้ามีระบบ User)
- วิธีการกำหนด Attribute:
- กิจกรรมกลุ่มย่อย: “สร้างพิมพ์เขียวข้อมูลเบื้องต้น”
- ให้แต่ละกลุ่มนำ “รายการข้อมูล” ที่ได้จาก Case Study ของตนเองในส่วนที่ 2 มาทำงานต่อ
- ระดมสมองเพื่อกำหนด Entities หลักๆ ที่เกี่ยวข้อง (ตั้งเป้า 3-5 Entities ก่อน)
- สำหรับแต่ละ Entity ที่ระบุได้ ให้ ลิสต์ Attributes ที่เกี่ยวข้อง ให้ครบถ้วนที่สุด โดยอ้างอิงจากรายการข้อมูลเดิม และอาจเพิ่มเติม Attributes ที่จำเป็นอื่นๆ (เช่น ID ต่างๆ, วันที่สร้างข้อมูล)
- ลองพิจารณาว่า Attribute ไหนในแต่ละ Entity ที่น่าจะเป็น “ตัวแทน” หรือ “รหัสอ้างอิง” (Primary Key เบื้องต้น) ของ Entity นั้นได้ (ต้องไม่ซ้ำ)
- (เสริม ถ้ามีเวลา) ลองวาดภาพง่ายๆ แสดงว่า Entity ไหนน่าจะ “คุย” หรือ “เกี่ยวข้อง” กับ Entity ไหนบ้าง (เป็นการปูทางไปสู่เรื่อง Relationship ในสัปดาห์หน้า)
- ให้นักศึกษาบันทึกผลงาน โดยอาจเขียนในรูปแบบ:
Entity: [ชื่อ Entity] Attributes: - [ชื่อ Attribute 1] (ลักษณะข้อมูล: เช่น ตัวเลข, ข้อความ) - [ชื่อ Attribute 2] (PK) (ลักษณะข้อมูล: ...) - ... Entity: [ชื่อ Entity อื่น] Attributes: - ...