Data model คืออะไร [ Database the series ] Part 4

Database the series 3 ธ.ค. 2022

สำหรับ Part ที่ 4 นี้จะพูดถึง Data model กันน ที่ได้เกริ่นไว้ใน Part 2 ที่มีการพูดถึง Data Abstraction ที่มีการใช้งาน data model ใน part นี้จะมาดูกันว่า data model คืออะไร และใช้ทำอะไรบ้าง

Data model คือ

ชุดของแนวคิดเพื่ออธิบายโครงสร้างของฐานข้อมูล การดำเนินการเพื่อจัดการกับโครงสร้างของฐานข้อมูล และข้อจำกัดที่ฐานข้อมูลต้องปฏิบัติตาม

จากนิยามด้านบนอ่านแล้วอาจจะ งงๆ มาขยายความกันหน่อยดีกว่า

Model ก็คือ แบบจำลองที่จะอธิบายว่า data เป็นยังไง โดยมี

  • Structure -> โครงสร้าง และ ความสัมพันธ์ของข้อมูล
  • Operations -> เข้าไปใช้งานข้อมูลอย่างไร
  • Constraints -> ข้อกำหนด ข้อบังคับ เป็นตัวกำหนดว่าข้อมูลเราเป็นจริงหรือเปล่า

สรุป Data model ก็คือ ตัวกำหนด อธิบาย กรอบงาน ที่เกี่ยวกับข้อมูลนั่นเอง

จากที่ได้รู้ว่า Data model จะประกอบไปด้วย Structure , Operations และ Constraints มาดูกันว่าแต่ละอย่างคืออะไรและใช้ทำอะไร

Data Model Structure และ Constraints

ในส่วนนี้จะรวม Structure และ Constraints ด้วยกันเลยเนื่องจาก 2 อย่างนี้ใช้งานร่วมกัน

Constructs ใช้ กำหนดโครงสร้างของฐานข้อมูล โดยมี

  • elements (และ ประเภทข้อมูล)
  • groups of elements (เช่น entity, record, table)
  • relationships ของข้อมูลใน groups of elements

Constraints จะบังคับใช้ข้อจำกัด ตลอดเวลาเพื่อให้ข้อมูลใน database นั้นถูกต้องตามข้อจำกัดตลอดเวลา เช่น กำหนดให้ ชื่อ ต้องเป็น string และ require ดังนั้นในทุกๆ record จะต้องมีชื่อ และเป็น string เท่านั้น

Data Model Operations

การดำเนินการ นี้ใช้สำหรับระบุ การดึง และ การอัพเดต database โดยอ้างอิงถึงโครงสร้างของแบบจำลองข้อมูล โดยประกอบด้วย

  • basic model operations เช่น insert , delete , update
  • user-defined operations เช่น compute_student_gpa, update_inventory

ประเภทของ Data model

ประเภทของ data model ถูกแบ่งออกเป็น 3 ประเภท คือ

  • Conceptual (high-level, semantic) data models :
    โดยใช้แนวคิดที่ใกล้เคียงกับวิธีที่ ผู้ใช้ส่วนใหญ่ รับรู้ และ เข้าใจ ข้อมูล โดยมีการพัฒนามาหลากหลายรูปแบบ ตามในรูป

Hierarchical model , Network model ไม่นิยมใช้กันแล้วเนื่องจากถูกพัฒนามานานมากแล้ว จะยังลงเหลืออยู่แค่ในระบบเก่าๆ สำหรับบทความนี้และถัดๆไปเราจะใช้ Relational model (ผมได้เรียนอันนี้😅) และ เป็นพื้นฐานที่ดีสำหรับ model รูปแบบอื่นๆ

  • Implementation (representational) data models :
    หรือเรียกอีกอย่างนึงว่า logical schema โดยถูกใช้ใน DBMS ที่ใช้งานจริงหลายๆ ตัว โดยจะใช้ Relational model จากข้อก่อนหน้า สำหรับ อธิบายโครงสร้างของข้อมูลที่เราสนใจ ตัวอย่าง เช่น tables, columns , object-oriented classes , และ XML tags
  • Physical (low-level, internal) data models :
    โดยในส่วนนี้จะอธิบายถึง data จะถูกเก็บยังไงในนเครื่องคอมพิวเตอร์ ซึ่งจะมี format ที่แตกต่างกันไปตาม DBMS ที่ใช้

Schemas

ใน data model สิ่งสำคัญคือต้องแยกความแตกต่างระหว่าง คำอธิบายของฐานข้อมูล และ ตัวฐานข้อมูลเอง โดยคำอธิบายของฐานข้อมูลถูกเรียกว่า database schema และสิ่งที่แสดง schema คือ schema diagram

schema diagram

จากรูปนี่คือตัวอย่าง schema diagram สำหรับ database มหาวิทยาลัย โดยจะเห็นว่าจะมีชื่อของ Table อยู่ด้านบน และ มีหลายๆ column ย่อยที่แสดงถึงว่าต้องมีข้อมูลอะไรบ้าง

ℹ️
ไม่ค่อยนิยมใช้ออกแบบเนื่องจากไม่สามารถแสดงความสัมพันธ์ของข้อมูลได้

Database State

อีกหนึ่งสิ่งที่ควรรู้จักไว้ก็คือ database state คือ ข้อมูลจริงที่เก็บใน database ณ ช่วงเวลาใดเวลาหนึ่ง ถ้า data ใน database เกิดเปลี่ยนแปลง หรือเกิด operation state ของ database ก็จะเปลี่ยนไปด้วย ซึ่งหมายถึงการรวมข้อมูลใน database ทั้งหมด หรือ เรียกอีกอย่างว่า instance หรือ occurrence หรือ snapshot คำว่า instance ยังใช้กับส่วนประกอบ database อื่นๆอีก เช่น record instance, table instance, entity instance

  • Database State : ข้อมูลจริงที่เก็บใน database ณ ช่วงเวลาใดเวลาหนึ่ง
  • Initial Database State : database state เมื่อ เริ่มต้นถูก load เข้ามาในระบบครั้งแรก (state ณ เริ่มต้น)
  • Valid State : database state ที่ข้อมูลใน database นั้นถูกต้องตาม constrains

ความแตกต่างระหว่าง database schema และ database state

database schema -> โครงเปลี่ยนไม่บ่อย
database state -> เปลี่ยนบ่อย เมื่อเกิด operation บน database

database schema ยังคงถูกเรียกว่า intension ส่วน database state ถูกเรียกว่า extension

จบไปแล้วสำหรับ Part 4 นะครับ หากอ่านแล้วไม่เข้าใจก็ขออภัยไว้ ณ ที่นี้ด้วยนะครับ หวังว่าจะมีประโยชน์กับคนที่ได้เข้ามาอ่านนะครับ ขอบคุณทุกคนที่อ่านจนจบ สำหรับเนื้อหาต่อจากนี้สามารถติดตาม Part 5 ต่อได้เลย

Credit

Illustration by Icons 8 from Ouch!

Tags

Witchayut Gerdchai

Software Engineer คนนึง