<< Go Back

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Microsoft  Access 2007  สามารถเชื่อมโยงข้อมูลจากตารางต่าง ๆ   เพื่อออกรายงานหรือแสดงข้อความ (Query) ได้นั้น เพราะตารางดังกล่าวมีความสัมพันธ์ (Relation) โดยสามารถสร้างความสัมพันธ์เพราะในตารางแต่ละตารางมีการกำหนดเขตข้อมูลที่เป็นเขตข้อมูลหลัก โดยเขตข้อมูลดังกล่าวต้องอยู่เหมือนกันทั้ง 2 ตารางจึงสามารถเชื่อมความสัมพันธ์ได้
การสร้างความสัมพันธ์ระหว่างตารางภายในโปรแกรม Access 2007 มีอยู่ด้วยกัน 3 ลักษณะ คือ
1. ความสัมพันธ์แบบต่อเนื่อง (One-to-One)
เป็นความสัมพันธ์ระหว่างการเชื่อมตาราง 2 ตารางเข้าด้วยกัน โดยตารางแรกมีการกำหนดเขตข้อมูลคีย์หลักไปเชื่อมความสัมพันธ์กับตารางที่ 2 โดยมีเขตข้อมูลหลักไม่ซ้ำกันทั้งสองตาราง เช่น ความสัมพันธ์ระหว่างนักเรียน 1 คน สามารถมีเลขประจำตัวนักเรียนหมายเลขเดียว เป็นต้น
2. ความสัมพันธ์แบบหนึ่งต่อกลุ่ม (One-to Many)
เป็นความสัมพันธ์ของตารางแรกที่มีฟิลด์คีย์หลักที่ไม่ซ้ำกันไปสัมพันธ์กับตารางที่สอง  โดยมีเขตข้อมูลหลักที่สามารถซ้ำกันได้  เช่น ในใบลงทะเบียน 1 ใบ มีรายชื่อของวิชาที่ลงทะเบียนอยู่หลายรายการ
3. ความสัมพันธ์แบบกลุ่มต่อกลุ่ม (Many-to-Many)
เป็นความสัมพันธ์แบบตารางแรกที่มีฟิลด์คีย์หลักซ้ำกันได้และไปเชื่อมโยงกับตารางที่สองที่มีฟิลด์หลักซ้ำกันได้ด้วย  เช่น วิชาหนึ่งมีนักศึกษามาลงทะเบียนหลายคน และนักศึกษาแต่ละคนลงทะเบียนเรียนวิชาหลายวิชา
การสร้างความสัมพันธ์ระหว่างตารางของ Access 2007 ไม่ว่าจะเป็นความสัมพันธ์แบบใดจำเป็นต้องมี 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 ให้แก่ตารางเหล่านั้นด้วย

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

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

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

  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 ) ให้ใช้ตารางที่สามทำ  หน้าที่เป็นตัวเชื่อมระหว่างตารางทั้งสอง
4. ถ้าตารางไม่มีการเชื่อมกับตารางอื่นใดในฐานข้อมูล ให้สร้างการเชื่อมต่อหรือเคลื่อนย้ายตารางนั้นออกจากฐานข้อมูล
5. วางองค์ประกอบของข้อมูลใหม่ในตารางซึ่งมีความสัมพันธ์ในแบบ 1 : 1 ด้วย Primary key ถ้าจำเป็นให้สร้างตารางใหม่

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

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

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

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

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

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

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

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

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

3. การจักกลุ่มขององคืประกอบของข้อมูล
ลองจัดกลุ่มของข้อมูลที่เราจัดขึ้นมา   ซึ่งมีอยู่ 2  กลุ่ม   คือ   กลุ่มข้อมูลส่วนตัวนักศึกษาและกลุ่มของวิชา และข้อมูลทั้งสองกลุ่มคือเกรด ตอนนี้จะได้ตารางข้อมูลเบื้องต้นสำหรับเก็บ     ข้อมูลแต่ละกลุ่ม
4.    การกำหนด 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
ปีการศึกษา
เทอมการศึกษา
เกรดวิชาที่ได้รับ

 

<< Go Back