ใบความรู้เรื่องการออกแบบฐานนข้อมูล

การออกแบบฐานข้อมูล

โปรแกรมการจัดการฐานข้อมูล     เป็นสิ่งที่ซับซ้อนกว่าการใช้งานตามปกติทั่วไป     และมีความแตกต่างจากโปรแกรมทางด้านเวิร์ดโปรเซสเซอร์ หรือสเปรทชีทอยู่มาก    ซึ่งคนทั่วไปอาจสามารถใช้โปรแกรมเวิร์ดโปรเซสเซอร์พิมพ์งานเอกสารและสิ่งพิมพ์ โดยมีการเรียนรู้รายละเอียดเกี่ยวกับโปรแกรมเพียงเล็กน้อยก็ใช้งานได้  หรืออาจใช้โปรแกรมสเปรทชีททำตารางงบดุล  โดยมีพื้นความรู้นิดหน่อยก็สามารถสร้างตารางงบดุลที่สมบูรณ์ออกมาได้  ซึ่งอาจจะทำไปแก้ไขไปก็ได้  แต่สำหรับโปรแกรมการจัดการฐานข้อมูลนั้น   เราไม่สามารถทำเช่นนั้นได้เพราะผลที่ได้รับมักเป็นสิ่งที่เกิดภายหลังจากขบวนการอันยืดยาวที่ได้กระทำไว้แล้วก่อนหน้า   เช่น กว่าที่เราจะพิมพ์   รายงานออกมาให้เห็นได้  เราจะต้องทำขั้นตอนอื่นๆ มาก่อนมากมายไม่ว่าจะเป็นการสร้างตาราง  ข้อมูล  จัดแบบฟอร์มสำหรับกรอกข้อมูล  ทำดัชนี  หรืออื่นๆ ซึ่งสิ่งเหล่านี้จะไม่ปรากฏเป็นผลลัพธ์ให้เห็นโดยทันที   ต่างจากโปรแกรมประเภทเวิร์ดโปรเซสเซอร์หรือ สเปรทชีทที่แสดงผลสิ่งที่ทำได้โดยทันทีเมื่อพิมพ์หรือใช้คำสั่งใดๆ

กระบวนการออกแบบโครงสร้างฐานข้อมูล  เป็นส่วนที่สำคัญมากที่สุดในขั้นตอนทั้งหมด   หากการออกแบบฐานข้อมูลไม่ดีแล้วจะทำให้ประสิทธิภาพในการทำงานของโปรแกรมลดลง  และจะส่งผลให้การแก้ไขสิ่งที่ออกแบบไปแล้วย่อมทำได้ยาก   การแก้ไขโครงสร้างของฐานข้อมูลอาจต้องทำให้เราต้องไปแก้ไขในส่วนอื่น ๆ ทั้งหมดไปด้วย   เพราะในโปรแกรมการจัดการฐาน     ข้อมูล   ส่วนประกอบต่างๆ  ไม่ว่าจะเป็นการคำนวณ รายงาน หรือแบบฟอร์มจะถูกออกแบบให้อยู่ล้อมรอบโครงสร้างฐานข้อมูล  และยิ่งถ้าได้ใช้ฐานข้อมูลเป็นเวลานานๆ   แล้วการแก้ไขยิ่งเป็นปัญหามากยิ่งขึ้น  โดยเฉพาะความเข้ากันได้ของข้อมูลในโครงสร้างแบบเก่าและแบบใหม่

Bข้อมูล

ข้อมูล (Data)  คืออะไร   ข้อเท็จจริงเกี่ยวกับบุคคล  สิ่งของ  สถานที่  หรือเหตุการณ์ใดๆ ที่เราสนใจศึกษา  ซึ่งข้อมูล (Data)  อาจจะได้มาจากการสังเกต  การนับ  หรือการวัด  และข้อมูลอาจเป็นไปได้ทั้งตัวเลขหรือเป็นข้อความก็ได้  ที่สำคัญคือ  ข้อมูล (Data) จะต้องเป็นสิ่งที่เป็นความจริง

 โครงสร้างข้อมูล

ข้อมูลที่จะนำมาใช้สำหรับเครื่องคอมพิวเตอร์เพื่อประมวลผล  จะต้องจัดให้อยู่ในลักษณะที่เครื่องคอมพิวเตอร์จะรับได้  กล่าวคือ  ต้องมีโครงสร้างข้อมูลซึ่งประกอบด้วย

process1

หน่วยข้อมูล  (Data item)คือ  ส่วนที่เล็กที่สุดของข้อมูล  ซึ่งประกอบด้วยตัวอักษร  และตัวเลขหรือสัญลักษณ์พิเศษ  เช่น  ชื่อ  เลขที่บ้าน

เขตข้อมูล  (Field)คือ  การนำหน่วยข้อมูลที่มีความสัมพันธ์กันมารวมกันเข้า  และก่อให้มีความหมาย  เช่น  ชื่อกับนามสกุลของบุคคล  ซึ่งให้ความหมายว่าเป็นบุคคลใด

ระเบียน  (Record)  คือ  เขตข้อมูลหลายเขตข้อมูลที่สัมพันธ์กันมารวมกัน  เช่น ชื่อ-นามสกุล  เลขที่บ้าน  ถนน  จังหวัด  ของบุคคลเดียวกันจะเป็นระเบียนหนึ่งระเบียน

แฟ้มข้อมูล (File)คือ  ระเบียนหลายๆ  ระเบียนที่เกี่ยวข้องกันมารวมกัน  เช่น  แฟ้ม    ข้อมูลของพนักงาน  เป็นต้น

 

ฐานข้อมูล

ฐานข้อมูล  คือ กลุ่มของข้อมูลที่ถูกรวบรวมเข้าไว้ด้วยกัน   จะครอบคลุมเรื่องราวตั้งแต่หมายเลขโทรศัพท์ของลูกค้าจนถึงห้องสมุดใหญ่   การนิยามความหมายของฐานข้อมูลเป็นเรื่องที่พ้นวิสัยที่จะให้ครอบคลุมได้ทั้งหมด  แต่สำหรับการออกแแบบฐานข้อมูลเพื่อใช้กับคอมพิวเตอร์มีการนิยามที่ใช้สำหรับจุดประสงค์นี้   คือ  กลุ่มของข้อมูลที่มีการจัดโครงสร้างในวิถีทางที่ให้เราสามารถนำเอาส่วนประกอบของสิ่งที่สัมพันธ์กันและเป็นที่ต้องการออกมาใช้ให้เป็นประโยชน์

Bโครงสร้างของฐานข้อมูล

หลักการพื้นฐานของการออกแบบโครงสร้างของฐานข้อมูลถูก  เรียกว่า  สถาปัตยกรรมของฐานข้อมูล สถาปัตยกรรม  หมายถึง แนวความคิดหรือวิธีในโครงสร้างของฐานข้อมูล  ในประวัติศาสตร์ที่ผ่านมามีการออกแบบสถาปัตยกรรมของฐานข้อมูลอยู่หลายแบบดังต่อไปนี้

  1. โครงร่างแบบต้นไม้ หรือ โครงร่างแบบลำดับชั้น (tree หรือ hierarchical structure)

เป็นโครงร่างที่เขตข้อมูลต่าง ๆ ถูกกำหนดไว้เป็นลำดับขั้นเหนือกับรากต้นไม้ที่มีการแตกรากงอกจากรากแก้ว และ รากฝอยแตกออกจากกิ่งซึ่งเป็นฟิลด์ในลำดับสุดท้ายที่ไม่มีการแตกออกไปอีก  ดังแสดงจากภาพด้านล่าง

tree

 3. โครงร่างแบบเครือข่าย (network  structure)

โครงร่างแบบนี้มีลักษณะการจัดแบบเชื่อมโยงถึงกันหมด เป็นโครงร่างข้อมูลที่สมบูรณ์ที่สุด  ทุก ๆ เขตข้อมูลสามารถเชื่อมโยงถึงกันหมด  ดังแสดงจากภาพด้านล่าง

mesh

 3.โครงร่างแบบแบนราบ (flat-file structure)

ลักษณะของข้อมูลจะบันทึกในโครงร่างแบบ 2 มิติ คือ แถวหรือคอลัมน์ ข้อมูลแต่ละแถวเรียกว่า “ระเบียน”และข้อมูลแต่ละคอลัมน์เรียกว่า  เขตข้อมูล  ซึ่งเป็นข้อมูลในกลุ่มเดียวกัน  เช่น  ชื่อ , ที่อยู่ , เบอร์โทรศัพท์ โครงร่างชนิดนี้ง่ายต่อการศึกษาและทำความเข้าใจ แต่โปรแกรมจัดการฐานข้อมูลที่ใช้สถาปัตยกรรมแบบนี้จะยอมให้เข้าถึงฐานข้อมูลได้ชุดเดียวในเวลาเดียวเท่านั้น มันจึงขาดความยืดหยุ่นที่จำเป็นต่อการเป็นฐานข้อมูลที่ดีฟังก์ชั่นฐานข้อมูลในสเปรดชีทเวิรด์โปรเซสเซอร์มักใช้การจัดโครงสร้างแบบ  flat-file      ส่วนโปรแกรมจัดการฐานข้อมูลบางตัวใช้โครงสร้างแบบนี้เช่นกัน   แต่สามารถอ้างอิงข้อมูลได้มากกว่าชุดเดียวโดยใช้เทคนิคที่ค่อนข้างซับซ้อน

โครงสร้างฐานข้อมูลชนิดนี้มักใช้ในโปรแกรมจัดการฐานข้อมูลของเครื่องไมโครคอมพิวเตอร์ในยุคต้น ๆ

ฟิลด์ 1 ฟิลด์ 2 ฟิลด์ 3 ฟิลด์ N
xxxxx xxxxxxxx xxxxxxx xxxxx
xxxxx xxxxxxxx xxxxx xxxxx
xxxxxx xxxxx xxxxxxxxxxx xxxxx
xxxx xxxxxxxxxxxxxxxx xxxxxxxx xxxxxxxx

รูป    โครงร่างแบบแบนราบ

 

  1. โครงสร้างแบบสัมพันธ์ (relational structure)

โครงร่างแบบนี้มีลักษณะเหมือนกับโครงร่างแบบแบนราบ   แต่โปรแกรมที่ใช้โครงร่างแบบนี้สามารถทำงานกับฐานข้อมูลได้หลายกลุ่มในเวลาเดียวกันทำให้ลดการเก็บข้อมูลที่ซ้ำซ้อนกัน  การใช้งานมีความยืดหยุ่นสูง  ใน Access 2010ใช้การจัดโครงสร้างแบบนี้ด้วย  แต่ละตารางจะสามารถเชื่อมโยงถึงกันได้อย่างง่ายดาย

 

ฐานข้อมูลแบบสัมพันธ์ใน ACCESS 2010

ฐานข้อมูลแบบสัมพันธ์   คือ กลุ่มของข้อมูลที่มีการจัดโครงสร้างในตารางที่สัมพันธ์กัน แต่ละตารางเป็นกลุ่มของแบบแผนของสิ่งที่สนใจซึ่งอาจได้แก่  กลุ่มนักเรียน  วิชาที่ลงทะเบียน  ซึ่งแต่ละตารางประกอบด้วยชุดของแถว  และ คอลัมน์ที่แสดงถึงข้อมูลในตาราง แต่ละคอลัมน์แสดงถึงข้อมูลชนิดเดียวกันเช่น ชื่อ-สกุล, อายุ, ที่อยู่  แต่ละแถวประกอบด้วยชุดของข้อมูลที่สมบูรณ์หนึ่งรายการ

 

·       ความสัมพันธ์ระหว่างตาราง

Microsoft  Access 2010 สามารถเชื่อมโยงข้อมูลจากตารางต่าง ๆ   เพื่อออกรายงานหรือแสดงข้อความ (Query) ได้นั้น เพราะตารางดังกล่าวมีความสัมพันธ์ (Relation) โดยสามารถสร้างความสัมพันธ์เพราะในตารางแต่ละตารางมีการกำหนดเขตข้อมูลที่เป็นเขตข้อมูลหลัก โดยเขตข้อมูลดังกล่าวต้องอยู่เหมือนกันทั้ง 2 ตารางจึงสามารถเชื่อมความสัมพันธ์ได้

การสร้างความสัมพันธ์ระหว่างตารางภายในโปรแกรม Access 2010มีอยู่ด้วยกัน 3 ลักษณะ คือ

  1. ความสัมพันธ์แบบต่อเนื่อง (One-to-One)

เป็นความสัมพันธ์ระหว่างการเชื่อมตาราง 2 ตารางเข้าด้วยกัน โดยตารางแรกมีการกำหนดเขตข้อมูลคีย์หลักไปเชื่อมความสัมพันธ์กับตารางที่ 2 โดยมีเขตข้อมูลหลักไม่ซ้ำกันทั้งสองตาราง เช่น ความสัมพันธ์ระหว่างนักเรียน 1 คน สามารถมีเลขประจำตัวนักเรียนหมายเลขเดียว เป็นต้น

  1. ความสัมพันธ์แบบหนึ่งต่อกลุ่ม (One-to Many)

เป็นความสัมพันธ์ของตารางแรกที่มีฟิลด์คีย์หลักที่ไม่ซ้ำกันไปสัมพันธ์กับตารางที่สอง  โดยมีเขตข้อมูลหลักที่สามารถซ้ำกันได้  เช่น ในใบลงทะเบียน 1 ใบ มีรายชื่อของวิชาที่ลงทะเบียนอยู่หลายรายการ

  1. ความสัมพันธ์แบบกลุ่มต่อกลุ่ม (Many-to-Many)

เป็นความสัมพันธ์แบบตารางแรกที่มีฟิลด์คีย์หลักซ้ำกันได้และไปเชื่อมโยงกับตารางที่สองที่มีฟิลด์หลักซ้ำกันได้ด้วย  เช่น วิชาหนึ่งมีนักศึกษามาลงทะเบียนหลายคน และนักศึกษาแต่ละคนลงทะเบียนเรียนวิชาหลายวิชา

การสร้างความสัมพันธ์ระหว่างตารางของ Access 2010ไม่ว่าจะเป็นความสัมพันธ์แบบใดจำเป็นต้องมี Primary key  และ Foreign key   ซึ่งเป็นกุญแจที่ใช้เชื่อมต่อระหว่างข้อมูลของตารางหลาย ๆ ตารางเข้าด้วยกัน

  • Primary key และ Foreign key

การทำให้ตารางสองตาราง หรือมากกว่าเชื่อมโยงถึงกันได้ จำเป็นที่จะต้องมีสิ่งที่ใช้เชื่อมโดยเราจะต้องกำหนดว่าจะใช้ฟิลด์ใดของตารางเป็นส่วนเชื่อมต่อ เช่น ในตาราง     ข้อมูลนักศึกษามีข้อมูล เช่น รหัสประจำตัว, ปีการศึกษา, ที่อยู่, เพศ เป็นต้น กับตารางข้อมูลการลงทะเบียนซึ่งมีเขตข้อมูลของรหัสประจำตัว, ปีการศึกษา, เทอม และรหัสวิชา  ส่วนที่ใช้เชื่อมต่อระหว่างตารางทั้งสอง คือ รหัสประจำตัว ในตารางข้อมูลนักศึกษา เขตข้อมูลของรหัสประจำตัว คือ ส่วนที่เรียกว่า Primary key  แต่เมื่ออยู่ในตารางฐานข้อมูลการลงทะเบียนจะเรียกว่า Foreign key ทำหน้าที่เหมือนกับเป็นดัชนี เพื่อช่วยในการค้นหาข้อมูลทำได้รวดเร็วขึ้น คอลัมน์หรือเขตข้อมูลที่ใช้เป็น Primary key จะต้องมีค่าที่ไม่ซ้ำกันแต่เมื่อเป็น Foreign key ค่าในเขตข้อมูลนั้นจะมีค่าที่ซ้ำกันได้ เช่นรหัสประจำตัวของนักศึกษาจะต้องไม่มีตัวเลขที่ซ้ำกัน แต่เมื่อใช้รหัสประจำตัวเป็น Foreign key ในตารางการลงทะเบียนมันสามารถมีค่าซ้ำกันได้ เพราะถ้าตารางสองตารางมี Primary key ที่เหมือนกันโดยสิ้นเชิงแล้ว   เราควรจะรวมตารางทั้งสองเข้าด้วยกันให้เหลือเพียงตารางเดียว เพราะการแยกเป็น 2 ตาราง จะทำให้ยากต่อการใช้งาน

  • หลักการกำหนด Primary key และ Foreign key

–  ทำให้คีย์เล็กที่สุดเท่าที่เป็นได้ เนื่องจากมีการใช้คีย์เป็นตัวเชื่อมตารางเข้าด้วยกัน   ดังนั้นส่วนที่ใช้เป็น Primary key จะต้องมีการซ้ำกันของข้อมูลกับ Foreign key ของอีกตารางหนึ่ง ดังนั้น ถ้าขนาดของคีย์เล็กการทำงานจะง่าย เช่น การพิมพ์รหัสประจำตัวจะง่ายกว่าการพิมพ์ชื่อ และนามสกุล

– พยายามใช้คีย์ที่เป็นตัวเลข  โดยเฉพาะเลขจำนวนเต็ม ซึ่งจะทำงานได้ดีที่สุด เพราะจำนวนเต็มจะใช้เนื้อที่เก็บน้อยกว่าข้อความที่มีขนาดเท่ากัน และทำงานได้มีประสิทธิภาพสูงกว่า

–  เมื่อเรากำหนดคีย์ไว้แล้ว ให้ปล่อยคงเอาไว้ การเปลี่ยนแปลงคีย์อาจเสี่ยงต่อการทำลายการเชื่อมต่อระหว่างตารางที่ทำไว้

–  อย่าใช้คีย์ซ้ำ แม้ว่าข้อมูลเดิมจะถูกยกเลิกไปแล้ว เช่น หากมีนักศึกษาลาออก ไม่ควรใส่ข้อมูลของคนใหม่โดยใช้รหัสเก่า ให้ใช้ตัวเลขใหม่แทน

­สิ่งที่นำมาใช้เป็น Primary key มักเป็นสิ่งที่สร้างขึ้นมาใหม่ โดยไม่มีส่วนเกี่ยวข้องกับข้อมูลพื้นฐาน แต่ใช้เพื่อช่วยในการทำงานเท่านั้น  ข้อมูลส่วนใหญ่ไม่สามารถนำมาใช้เป็น Primary key ได้เพราะอาจซ้ำกันได้โดยง่าย เช่น คนอาจมีชื่อที่เหมือนกัน ถึงแม้ว่าเมื่อรวม นามสกุลเข้าไปด้วย ก็อาจซ้ำกันได้อีก และข้อมูลจริง ๆ มักจะเปลี่ยนได้ เช่น อาจเปลี่ยนแปลงที่อยู่, เบอร์โทรศัพท์ หรือเปลี่ยนแปลงได้แม้กระทั่งชื่อหรือนามสกุล  คงเป็นเรื่องที่ยุ่งยากมาก  หากต้องตามแก้ไขชื่อ  หรือนามสกุลในทุก ๆ ตาราง   แทนที่จะแก้ไขในตารางข้อมูลส่วนบุคคลเพียงตารางเดียว และให้ส่งผลไปยังตารางทุกตาราง

ความสัมพันธ์ระหว่างตาราง  2  ตารางหรือมากกว่าที่มีพื้นฐาน Primary key  ของ    ตารางหนึ่งที่ไปตรงกับ Foreign key  ของอีกตารางหนึ่ง ตารางที่มี Primary key มักจะเรียกว่า ตารางแม่   และตารางที่มี Foreign key จะเรียกว่า ตารางลูก ความสัมพันธ์ระหว่างตารางที่สองเรียกว่าความสัมพันธ์ในแบบ แม่ลูก  ในการออกแบบฐานข้อมูลเราต้องกำหนดส่วนที่เป็น Primary key และ Foreign key ให้แก่ตารางเหล่านั้นด้วย

Bการวางแผนการสร้างฐานข้อมูล

            การวางแผนการสร้างฐานข้อมูลนั้น  เป็นขั้นตอนแรกที่สำคัญมาก  แม้ว่าเราจะสามารถเปลี่ยนแปลงแก้ไขได้ทีหลังก็ตาม  หากวางแผนไว้ดีตั้งแต่ต้นก็จะช่วยประหยัดเวลาได้มาก  เช่น  ถ้าจะสร้าง  Table (ตาราง)  ขึ้นมาใหม่  เราต้องทราบก่อนว่าชนิดของข้อมูลในแต่ละเขตข้อมูลนั้นเป็นอะไรบ้าง  แม้ว่าจะสามารถทำการแก้ไขเปลี่ยนแปลงในภายหลังได้  (เช่น เปลี่ยนจากชนิดข้อความเป็นชนิดตัวเลข)  แต่ถ้าไม่เปลี่ยนชนิดของข้อมูลในเขตข้อมูลที่มีค่าอยู่แล้วเราอาจจะต้องป้อนข้อมูลในเขตข้อมูลนั้นใหม่ทุกระเบียนใน  Table(ตาราง) ก็ได้   ดังนั้นวิธีการที่ดีที่สุดก็คือการวางแผนล่วงหน้ารวมถึงการคาดคะเนความเป็นไปได้ในการใช้ข้อมูลต่างๆ  ด้วย  ซึ่งจำเป็นต้องคิดว่าจะเก็บระเบียนข้อมูลอย่างไรและทำอะไรกับข้อมูลนั้นได้บ้าง    อันที่จริงแล้วการสร้างฐานข้อมูลใหม่ใน  Microsoft  Access 2010นั้นจะทำให้เรามีโอกาสคิดทบทวนความต้องการใช้ข้อมูลของเราใหม่อีกครั้ง

  • ขั้นตอนการออกแบบการสร้างฐานข้อมูล

โปรแกรม Microsoft Access 2010ใช้สถาปัตยกรรมของข้อมูลในแบบสัมพันธ์ (Relation structure) ซึ่งจะมีขบวนการในการออกแบบฐานข้อมูลแตกต่างจากโปรแกรมอื่นอยู่บ้าง ในการออกแบบฐานข้อมูลสามารถแบ่งออกเป็นขั้นตอนหลาย ๆ ขั้นตอน

 

ขั้นตอนของการออกแบบฐานข้อมูลใน Access 2010มีดังต่อไปนี้

  1. ระดมความคิดถึงองค์ประกอบข้อมูลที่จะรวมไว้ในฐานข้อมูล
  2. จัดกลุ่ม (ตาราง) ที่สร้างจากองค์ประกอบของข้อมูล
  3. กำหนด Primary key สำหรับแต่ละตาราง Primary key ประกอบด้วยค่าที่ไม่ซ้ำกันในแต่ละแถวในตาราง
  4. พิจารณาความเหมาะสมของการจัดกลุ่ม และการกำหนด Primary key และแก้ไข

 การระดมความคิดในการออกแบบฐานข้อมูล

เมื่อแรกที่ตั้งใจสร้างฐานข้อมูล จุดประสงค์ยังค่อนข้างกว้าง เช่น ต้องการคิดการติดตามข้อมูลของนักเรียนการเริ่มต้นออกแบบฐานข้อมูลให้จดรายการขององค์ประกอบทุกอย่างที่ต้องการ ติดตาม อย่ากังวลถึงโครงสร้างขององค์ประกอบเหล่านั้น ถ้าเราพอจะมองเห็นกลุ่มของข้อมูลให้เดินหน้าต่อไปและจัดกลุ่มเข้าด้วยกัน แต่ในชั้นนี้มันไม่ใช้เรื่องที่สำคัญมากนักโครงร่างของข้อมูลที่ได้อาจใช้ประโยชน์ได้ รายการบางอันที่จดไว้

อาจกลายเป็นคอลัมน์บางอันอาจกลายเป็นตาราง บางอันอาจกลายเป็นความสัมพันธ์ ในขั้นต่อ ๆ ไปท่านจะแก้ไขการออกแบบให้ดีขึ้นและเจาะลึกลงไปในรายละเอียด  แต่ในขณะนี้เป็นเพียงการระดมความคิดถึงสิ่งที่เกี่ยวข้อง  ให้เราจดรายการขององค์ประกอบของข้อมูลที่ใส่ในฐานข้อมูลโดยไม่ต้องสนใจว่าจะใส่อย่างไร การจัดองค์ประกอบในขั้นตอนต่างหากจากการจัดโครงสร้างข้อมูล รายการที่ได้ทำขึ้นนี้จะถูก    ปรับปรุงในภายหลังแม้ว่ารายการที่ได้จะตอบสนองความต้องการในปัจจุบันได้เป็นที่น่าพอใจ แต่ในอนาคตเมื่อท่านค้นพบวิธีใช้ประโยชน์จากฐานข้อมูลนี้มากขึ้นท่านอาจต้องการในปัจจุบันได้เป็นที่น่าพอใจ แต่ในอนาคตเมื่อท่านค้นพบวิธีใช้ประโยชน์จากฐานข้อมูลนี้มากขึ้นท่านอาจต้องการมันไปใช้ในแบบอื่น ๆ ที่เกินกว่าที่ตั้งใจในตอนแรก ถ้าท่านออกแบบฐานข้อมูลตามแนวทางที่เสนอในที่นี้ ท่านจะสามารถเพิ่มเติม โดยไม่ต้องแก้ไขโครงสร้างทั้งหมดที่ท่านได้ทำไว้ถ้าท่านยึดติดกับการออกแบบในครั้งแรกเพียงเพื่อตอบสนองความต้องการเฉพาะหน้าในปัจุบันเราจะพบว่ามันยากที่มันปรับปรุงฐานข้อมูลในภายหลังเมื่อความต้องการมีมากขึ้นโปรแกรมฐานข้อมูลส่วนใหญ่มักถูกใช้กับคนหมู่มาก เช่น ข้อมูลที่ใช้ระหว่างแผนกหลาย ๆ แผนก หากเราต้องรับหน้าที่ออกแบบฐานข้อมูลแล้วอาจไม่ทราบถึงความต้องการในทุก ๆ แบบ ในกรณีเช่นนี้มีวิธีที่ช่วยเราได้โดย

  • สัมภาษณ์ผู้คนที่ใช้ฐานข้อมูล เก็บรายละเอียดที่เกี่ยวข้องกับการออกแบบฐานข้อมูลวิธีนี้เป็นแหล่งข่าวสารที่ดีที่สุด การให้ทุกคนมีส่วนร่วมในการออกแบบพวกเขานั้นจะรู้สึกยอมรับที่จะสนับสนุนฐานข้อมูลที่ท่านออกแบบต่อไป
  • ดูที่รายการ , แบบฟอร์ม , ไฟล์คอมพิวเตอร์และอื่น ๆ   ที่มีอยู่ในปัจจุบัน    เราคงจะได้ร่องรอยถึงหลักการของฐานข้อมูล
  • มองไปที่แผนการขององค์กรถึงความต้องการในอนาคต การขยายงาน การเติบโตขององค์กร ในการออกแบบต้องเผื่อถึงการเปลี่ยนแปลงไว้ ต้องหลังจากเราพอจะรู้ว่ามีองค์ประกอบของข้อมูลอะไรบ้างที่เป็นที่ต้องการ จากนั้นให้คิดถึงคำถามเหล่านี้

–    ชนิดและรูปแบบรายงานที่ต้องการ

–     ต้องการให้มีการคำนวณอะไรบ้าง

–     ต้องการค้นหาข้อมูลประเภทใด

คำตอบของคำถามเหล่านี้ช่วยให้ค้นพบความต้องการองค์ประกอบข้อมูลที่อาจไม่นึกถึงมาก่อน

การจัดกลุ่มขององค์ประกอบข้อมูล

หลังจากได้รวบรวมข้อมูลเกี่ยวกับลักษณะงานในแง่มุมต่าง ๆ ให้จดรายการองค์ประกอบของข้อมูลที่มีทั้งหมดขึ้นมา ลองจัดมันรวมเข้าเป็นกลุ่มก้อนที่สัมพันธ์กัน  แต่ละกลุ่มจะกลายเป็นตารางในฐานข้อมูลที่เสร็จสมบูรณ์ อย่าพึ่งเกี่ยวข้องกับการสร้างโครงสร้างที่ถูกต้องในขั้นนี้ กลุ่มที่จัดได้บางกลุ่มค่อนข้างแจ่มแจ้ง เช่น รหัสประจำตัว ,ชื่อ,ที่อยู่และชั้นถูกจัดอยู่ในกลุ่มนักเรียน   บางองค์ประกอบไม่สามารถจัดเข้ากับกลุ่มโดยทั่วไปได้ ให้เก็บมันไว้ในกลุ่มเบ็ดเตล็ดไว้เสียก่อนให้แน่ใจว่าแต่ละองค์ประกอบของข้อมูลเป็นส่วนที่เล็กที่สุดของข้อมูลที่จะใช้ ตัวอย่างเช่นการเก็บชื่อและนามสกุลสองอย่างเข้าด้วยกันเพื่อทำให้เกิดผลลัพธ์แทนที่แยกองค์ประกอบอันยิ่งใหญ่เพียงอันเดียวออกจากกันเป็นองค์ประกอบย่อยสองอัน

ให้เราจัดทำบัญชีรายละเอียดของข้อมูลสำหรับแต่ละองค์ประกอบที่จัดขึ้นมา     บันทึกข้อมูลข่าวสารเหล่านี้โดยให้มี

  • ชื่อและชื่อย่อขององค์ประกอบของข้อมูล
  • คำอธิบายแบบย่อ ๆ ถึงความหมายของข้อมูล
  • ชนิดของข้อมูล (เป็นข้อมูลประเภทข้อความ, ตัวเลข, วันที่, เงินหรือรูปภาพ) ลองนึกดูให้ดีว่าข้อมูลน่าจะเป็นแบบใดกันแน่ บางครั้งการดูข้อมูลเผิน ๆ อาจคิดว่า ข้อมูลชนิดหนึ่งแต่ที่เหมาะสมจริง ๆ ไม่ใช่แบบนั้น เช่น ข้อมูลเบอร์โทรศัพท์  เราอาจคิดว่าข้อมูลชนิดนี้เป็นแบบตัวเลข ส่วนใหญ่แล้วใช่แต่ถ้าต้องมีเบอร์ต่อหรือมีหลายเบอร์ซึ่งจะกรอกข้อมูลอย่างไร ดั้งนั้นข้อมูลที่ใช้ควรเป็นแบบข้อความยากมาก
  • ช่วงของข้อมูลที่เป็นที่ย่อมรับ ข้อมูลส่วนใหญ่มีช่วงของมันอยู่ถ้าพิมพ์ผิดสังเกตได้ทันที เช่น ช่วงอายุของนักเรียนอยู่ระหว่าง 3-20 ปี หากพิมพ์ผิดเป็น 90 ปีคงเป็นไปไม่ได้ที่จะมีข้อมูลแบบนี้
  • จำนวนตัวอักษรสูงสุดของเขตข้อมูล หากเรากำหนดขนาดของเขตข้อมูลน้อยก็อาจเกิดปัญหาการตกหล่นของข้อมูลที่ยาว เราอาจคิดว่าถ้าเป็น เช่นนั้นก็กำหนดให้ยาว ๆ ไว้ก่อนจะได้ไม่เกิดปัญหามากนัก แต่ข้อมูลของเรามีไม่มาก

ไม่กี่ร้อยระเบียน   ความล่าช้าจะไม่เป็นปัญหาใหญ่ทีเดียว ดังนั้นควรกำหนดให้พอเหมาะ

  • ค่าปกติของรายการที่จะใส่เข้าไปในการกรอกข้อมูลส่วนใหญ่จะมีบางเขตข้อมูลที่มีค่าซ้ำกันเสมอโดยมีค่าที่แตกต่างออกไปไม่กี่ค่าฉะนั้นหากกำหนดค่าปกติไว้เลยจะช่วยให้ไม่ต้องเสียเวลากรอกข้อมูลซ้ำๆ กัน เช่น นักเรียนส่วนใหญ่เป็นคนกรุงเทพ ในเขตข้อมูลจังหวัดให้ใช้ค่าปกติเป็นกรุงเทพจะได้ไม่ต้องเสียเวลากรอกข้อมูลอีก
  • กฎเกณฑ์ในการยอมรับข้อมูล ต้องยอมรับว่าการกรอกข้อมูลมีโอกาสผิดพลาดได้เสมอหากกำหนดกฏเกณฑ์ในการยอมรับข้อมูลช่วยให้ลดความผิดพลาดได้เช่น เขตข้อมูลของเพศจะมีข้อมูลได้สองอย่างเท่านั้นไม่เป็นชายก็ต้องเป็นหญิง การกรอกข้อมูลเพศมักนิยมใช้รหัสแทน เช่น F คือหญิง และ M คือชาย หากกรอก ข้อมูลนอกเหนือไปจากนี้แสดงว่าผิด
  • ค่าจำเป็นต้องให้มีการบันทึกในแต่ละระเบียน

 

การกำหนด Primary key ให้แก่ตาราง

ในการปรับแก้ไขโครงสร้างฐานข้อมูลในตารางแต่ละตารางประกอบด้วยชนิดของข้อมูล สองชั้น ข้อมูลที่เราสนใจและข้อมูลที่เชื่อมต่อกับตารางอื่น ๆ ชั้นของข้อมูลแบบหลังนี้เรียกว่าคีย์ของตาราง บางครั้งชั้นของข้อมูลทั้งสองนี้ก็เหลื่อมกันแต่ไม่บ่อยนัก มีชนิดของคีย์หลัก ๆ ในฐานข้อมูลแบบสัมพันธ์สองชนิดคือ Primary key และ Foreign key ส่วนของ Primary key ในตารางเชื่อมต่อกับ Foreign key ของอีกตาราง ลองจินตนาการดูว่าตารางเหมือนเป็นโครงกระดูกของฐานข้อมูล และคีย์คือเอ็นที่ยึดกระดูกแต่ละชิ้นเข้าด้วยกัน หลังจากท่านสร้างฐานข้อมูลขึ้นเรียบร้อยแล้ว Primary key จะกลายเป็นดัชนี ซึ่งดัชนีเป็นเครื่องมือในการเพิ่มความเร็วในเข้าถึงข้อมูล เราจะเรียนรู้มากขึ้นเกี่ยวกับดัชนีในบทต่อ ๆ ไป

หลักการสำคัญที่ควรกระทำในการสร้างตารางและกำหนด Primary key มีดังต่อไปนี้

  1. ถ้าตารางสองตารางมี Primary key เหมือนกันโดยสิ้นเชิง ให้รวมมันไว้ในตารางอันเดียวจะง่ายต่อการดูแลมากกว่า
  2. ถ้าองค์ประกอบอันหนึ่งหรือมากกว่าในตาราง สามารถมีค่าได้หลายค่าสำหรับค่าของ  Primary key อันเดียว ให้เคลื่อนย้ายองค์ประกอบเหล่านั้นไปยังตารางใหม่
  3. ถ้าตารางสองตารางมีความสัมพันธ์แบบหลายต่อหลาย ( M : M ) ให้ใช้ตารางที่สามทำ

หน้าที่เป็นตัวเชื่อมระหว่างตารางทั้งสอง

  1. ถ้าตารางไม่มีการเชื่อมกับตารางอื่นใดในฐานข้อมูล ให้สร้างการเชื่อมต่อหรือเคลื่อนย้ายตารางนั้นออกจากฐานข้อมูล
  2. วางองค์ประกอบของข้อมูลใหม่ในตารางซึ่งมีความสัมพันธ์ในแบบ 1 : 1 ด้วย Primary key ถ้าจำเป็นให้สร้างตารางใหม่

  ทบทวนฐานข้อมูลที่ได้ออกแบบไว้

ฐานข้อมูลที่ได้ออกแบบไว้ในเบื้องต้นอาจยังไม่สมบูรณ์หรือมีข้อบกพร่องที่คาด

ไม่ถึง ให้ลองพิจารณาใหม่อีกครั้ง    ทดสอบกับลักษณะงานในปัจจุบันและความต้องการในอนาคตว่าฐานข้อมูลสามารถตอบสนองได้ดีหรือไม่ ทบทวนและปรับโครงสร้างฐาน  ข้อมูลอีกถ้าจำเป็น

ตัวอย่างการทดลองสร้างฐานข้อมูล

ตัวอย่างที่ใช้ในหนังสือเล่มนี้เป็นการสร้างแบบจำลองง่าย ๆ ของการออกแบบและพัฒนาฐานข้อมูลของสถาบันการศึกษา สมมติว่าตัวเราเป็นเจ้าหน้าที่ฝ่ายทะเบียนที่ต้องดูแลข้อมูลของสถาบันการศึกษาแห่งนั้น

1.  วัตถุประสงค์ของการใช้ฐานข้อมูล

ในฐานข้อมูลที่ออกแบบนี้มีเป้าหมายอยู่ 2 ประเภท คือ เก็บข้อมูลทางการเงินจากการลงทะเบียนของนักเรียนเพื่อให้ฝ่ายการเงินและเก็บข้อมูลการศึกษาของนักเรียนให้แก่ฝ่ายทะเบียนเพื่อเป็นประวัติการศึกษา

2.   การจดรายการองค์ประกอบข้อมูล

ขั้นตอนแรกของการออกแบบฐานข้อมูล คือ ให้เราจดรายการข้อมูลที่จำเป็นต้องใช้ ลอกแจกแจงองค์ประกอบต่างๆ ที่มีทั้งหมด

  • ชื่อนักเรียน
  • นามสกุลนักเรียน
  • รหัสประจำตัวนักเรียน
  • ที่อยู่ของนักเรียน
  • เพศของนักเรียน
  • ระดับการศึกษา
  • ห้องเรียน
  • วันเกิดนักเรียน
  • ปีที่เข้าศึกษา
  • ศาสนา
  • รหัสอาจารย์ที่ปรึกษา
  • รหัสอาจารย์ที่ปรึกษา
  • รหัสวิชา
  • ลักษณะวิชา
  • จำนวนหน่วยกิต
  • ค่าหน่วยกิต
  • วิชาบังคับ หรือ วิชาเลือก
  • รายวิชาที่ได้รับ
  • ปีการศึกษา
  • เทอมการศึกษา
  • วิชาที่ลงทะเบียน

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

3.    การจัดกลุ่มขององค์ประกอบของข้อมูล

ลองจัดกลุ่มของข้อมูลที่เราจัดขึ้นมา   ซึ่งมีอยู่ 2  กลุ่ม   คือ   กลุ่มข้อมูลส่วนตัวนักศึกษาและกลุ่มของวิชา และข้อมูลทั้งสองกลุ่มคือเกรด ตอนนี้จะได้ตารางข้อมูลเบื้องต้นสำหรับเก็บ     ข้อมูลแต่ละกลุ่ม

  1. การกำหนด Primary key ให้ตารางแม่

สิ่งใดที่เราจะใช้เป็น  Primary key สำหรับกลุ่มข้อมูลนักเรียนใช้ตัวเลขรหัสประจำตัวนักเรียน และรหัสวิชาสำหรับกลุ่มข้อมูลวิชา มีบางส่วนของข้อมูลที่พาดพิงระหว่างทั้งสองกลุ่ม คือวิชาที่ลงทะเบียนและเกรดซึ่งสัมพันธ์กับรายชื่อและเป็นของนักเรียนแต่ละคนด้วย ตารางของนักเรียน   และตารางรายวิชาจะเป็นตารางแม่      ส่วนตารางเกรดและตารางวิชาที่ลงทะเบียนเป็นตารางลูก กำหนดPrimary key ให้แก่ตารางที่เป็นแม่

เป็นความคิดที่ดีวางองค์ประกอบข้อมูลที่ใช้เป็น Primary key ไว้ที่ส่วนแรกของตารางซึ่งทำให้ง่ายต่อการดู Primary key เมื่อท่านดูที่โครงสร้างของตาราง

ตารางกลุ่มข้อมูลนักเรียน

รหัสประจำตัวนักเรียน           ————– -Primary key

ชื่อนักเรียน

นามสกุลนักเรียน

ที่อยู่ของนักเรียน

เพศของนักเรียน

ระดับการศึกษา

ห้องเรียน

วันเกิดนักเรียน

ปีที่เข้าศึกษา

ศาสนา

รหัสอาจารย์ที่ปรึกษา

ตารางข้อมูลกลุ่มของวิชา

รหัสวิชา

ลักษณะวิชา

จำนวนหน่วยกิต

ค่าหน่วยกิต

วิชาบังคับหรือวิชาเลือก

รายวิชาของระดับ

กำหนด Foreign ให้ตาราง

ในกลุ่มของตารางเกรดและตารางวิชาที่ลงทะเบียนซึ่งเป็นส่วนของตาราง จะมีข้อมูลของนักเรียนและวิชาควบคู่อยู่ด้วย  ดังนั้นในตารางทั้งสองจะต้องมีตัวชี้ไปยังนักเรียนแต่ละคน  และชี้ไปยังรายวิชาซึ่งก็คือ Primary key ซึ่งในตารางลูกจะต้องมีเขตข้อมูลที่เป็น Primary key ของตารางแม่อยู่ด้วย

ตารางเกรดวิชา

รหัสประจำตัวนักเรียน                       ——————Primary  key

รหัสวิชา                                                ——————Foreign  key

ปีการศึกษา

เทอมการศึกษา

เกรดวิชาที่ได้รับ

ตารางวิชาที่ลงทะเบียน

รหัสประจำตัวนักเรียน                       ——————Foreign key

รหัสวิชา

ปีการศึกษา

เทอมการศึกษา

พิจารณาถึงตารางที่ได้ออกแบบไว้

หลังจากออกแบบโครงสร้างฐานข้อมูลเบื้องต้นแล้ว ลองพิจารณาดูตารางที่ได้ออกแบบไว้หาสิ่งที่ยังบกพร่องอยู่ตารางที่ออกแบบไว้นี้ยังมีส่วนปรับปรุงได้คือส่วนของตารางเกรดและตารางวิชาที่ลงทะเบียน ตารางทั้งสองนี้มีความสัมพันธ์กันในแบบหนึ่งเพราะวิชาที่ลงทะเบียนทุกวิชาจะต้องมีผลเกรดออกมา ดังนั้นแทนที่จะแยกตารางทั้งสองเข้าเป็นตารางเดียวกันซึ่งจะทำกันทำให้การบริหารข้อมูลง่ายขึ้น

ตารางวิชาที่ลงทะเบียนและเกรดที่ได้รับ

รหัสประจำตัวนักศึกษา                      ——————Primary  key

รหัสวิชา                                                ——————Foreign  key

ปีการศึกษา

เทอมการศึกษา

เกรดวิชาที่ได้รับ

%d bloggers like this: