วันอังคารที่ 23 สิงหาคม พ.ศ. 2554

การออกแบบฐานข้อมูลโดยอาศัยแนวความคิดแบบ Master-Detail

หรืออาจเรียกอีกอย่างหนึ่งว่า Master-Transactions ก็ได้ โดยแนวความคิดในการออกแบบฐานข้อมูลแบบ Master-Detail มีรากฐานมาจากทฤษฏีจากการทำ Normalization หรือ BCNF เป็นหลัก ซึ่งจะช่วยให้สามารถออกแบบระบบได้ตรงกับความต้องการของผู้ใช้ได้อย่างรวดเร็ว และง่ายกว่าการใช้วิธี Normalization หรือ BCNF โดยตรง แต่คุณยังคงต้องใช้ความรู้ของทฤษฏีทั้งสองอยู่เหมือนเดิม ซึ่งถูกเรียกว่า “แบบ Master-Transactions

การออกแบบฐานข้อมูลโดยอาศัยแนวความคิดแบบ Master-Transactions จะมองตารางที่อยู่ในฐานข้อมูลทั้งหมดทุกตาราง แล้วนำมาแยกว่าตารางดังกล่าวจัดอยู่ในลักษณะใด โดยใช้ลักษณะของข้อมูลที่ตารางนั้นเก็บไว้เป็นตัวแบ่งลักษณะของตาราง

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

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

เมื่อระบบถูกใช้งานไประยะหนึ่ง ก็จะได้ข้อมูลที่เกิดจากการทำงานของระบบ แล้วคุณต้องการสรุปข้อมูลเหล่านี้ว่า ผลรวมเป็นเท่าใด ค่าเฉลี่ยทั้งหมดเป็นเท่าใด โดยใช้เงื่อนไขของเวลาเป็นตัวกำหนด ข้อมูลลักษณะนี้เรียกว่า Derived Data (ดี-ไรฟ์ ดาต้า) หรือข้อมูลที่ถูกสรุปมาจากข้อมูลขั้นต้น

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

จากลักษณะของข้อมูลทั้ง 2 ประเภท คือ Primitive Data และ Derived Data เมื่อนำมาเก็บในตารางแล้ว จะทำให้เราสามารถแบ่งตารางออกได้ 5 ประเภทใหญ่ๆ

1. Master Table ลักษณะของตารางประเภทนี้ จะเก็บข้อมูลหลักๆ ของระบบนั้นๆ เอาไว้ ซึ่งจะประกอบไปด้วย Primary Key และฟิลด์ที่เกี่ยวข้องกับข้อมูลหลักทั้งสิ้น ไม่มีฟิลด์อื่นมาปะปน

ยกตัวอย่างเช่น ตารางที่เก็บข้อมูลสินค้า ซึ่งถือว่าเป็นข้อมูลหลักตัวหนึ่งของระบบซื้อขาย-สินค้า ก้จะประกอบไปด้วยฟิลด์รหัสสินค้า, ชื่อสินค้า, ประเภทสินค้า และยี่ห้อสินค้า ฯลฯ จะเห็นได้ว่าเป็นข้อมูลที่เกี่ยวข้องกับสินค้าทั้งสิ้น

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

2. Transaction Table เป็นตารางงที่ทำหน้าที่เชื่อมความสัมพันธ์ของตาราง Master ตั้งแต่ 3 ตารางขึ้นไป เพื่อเงื่อนไขใดเงื่อนไขหนึ่ง อาจกล่าวได้อีกนัยหนึ่งว่า เป็นที่รวบรวม Primary Key ของตาราง Master นั่นเอง

การสร้างตาราง Transaction ก็จะมาจากเงื่อนไขทางธุรกิจ หรือความต้องการต่างๆ (Business Requirement) ที่ได้มาจากผู้ใช้นั่นเอง ตาราง Transaction จะมีกี่ตารางก็ขึ้นอยู่กับเงื่อนไขของระบบ ความซับซ้อนของระบบ และขนาดของระบบ

การรวบรวม Primary Key ของตาราง Master เพื่อนำมาสร้างเป็นตาราง Transaction จะมีมากน้อยเพียงใดก็จะขึ้นอยู่กับความต้องการว่ารวมมาเพื่อรองรับเงื่อนไขอะไร

ในการกำหนด Primary Key ของตารางประเภทนี้ อาจจะใช้ฟิลด์ตั้งแต่ 2 ฟิลด์ขึ้นไป ทำหน้าที่เป็น Primary Key ของตารางใหม่ก็ได้หรืออาจจะสร้างฟิลด์ขึ้นมาใหม่ เพื่อทำหน้าที่เป็น Primary Key โดยเฉพาะก็ได้เช่นกัน ตาราง Transaction สามารถแบ่งออกได้ 2 ประเภทคือ

§ ตาราง Tranasaction-Master เป็นตารางที่เชื่อมความสัมพันธ์ของตาราง Master เพื่อระบุความสัมพันธ์ขั้นต้นระหว่างตาราง Master djvo

§ ตาราง Transaction-Detail เป็นตารางที่ใช้แสดงรายละเอียดว่า ความสัมพันธ์ดังกล่าวมีรายการหรือมีรายละเอียดอะไรบ้าง

ตารางที่ถูกจัดอยู่ในประเภทตาราง Master และตาราง Transactions จะทำหน้าที่เก็บ Primitive Data ทั้งสิ้น การออกแบบฐานข้อมูลโดยการทำ Normalization ก็จะได้ตารางที่อยู่ในประเภท 1 และ 2

แต่ยังมีตารางอีก 3 ประเภทที่ไม่ได้มาจากการทำ Normalization เป็นตารางที่มีประโยชน์เป็นอย่างยิ่งในการรองรับระบบที่มีความซับซ้อน

3. System Table หรือ Initial value Table เป็นตารางที่สร้างขึ้นมา เพื่อใช้สำหรับกำหนดค่าเริ่มต้น เก็บค่าเริ่มต้น หรือเก็บค่าที่ด้จากการทำงานของระบบเอาไว้ เพื่อนำไปใช้เป็นเงื่อนไขต่อไป ถ้าคุณออกแบบฐานข้อมูลโดยอาศัยทฤษฏี Normalization จะไม่ม่ตารางประเภทนี้ปรากฏอยู่ในฐานข้อมูล

4. Summarized Table เป็นตารางที่นำแนวความคิดมาจากการทำ Data-Warehouse มาใช้ในฐานข้อมูล เป็นตารางงที่ใช้สำหรับเก็บ Derived Data หรือข้อมูลสรุปต่างๆแยกออกมาไว้ต่างหาก เพื่อให้สามารถดูข้อมูลได้รวดเร็วขึ้น

5. Temporary Table หรืออาจเรียกว่า Active Table หรือ Working Table ก็ได้ เป็นเทคนิคอย่างหนึ่งที่โปรแกรมเมอร์ใช้แสดงข้อมูลของตารางที่เกี่ยวเนื่องกัน แต่ไม่ได้มีความสัมพันธ์กัน หรือบางครั้งอาจใช้เก็บรายการไว้ชั่วคราวก่อน แล้วค่อยนำไปใช้ในภายหลังก็ได้ เป็นตารางงที่ช่วยอำนวยความสะดวกให้การเขียนโค้ดง่ายขึ้น การออกแบบโดยอาศัยทฤษฏี Normalization จะไม่มีตารางประเภทนี้อยู่ในฐานข้อมูลเช่นกัน

สรุปแล้ว การออกแบบฐานข้อมูลโดยใช้แนวความคิดแบบบ Master-Transactions ก็คือ การมองฐานข้อมูลในหน่วยที่ใหญ่ขึ้น แทนที่จะมองว่าฟิลด์นี้ควรจะอยู่ในตารางใด ในแต่ละตารางจะมีฟิลด์อะไรบ้าง ซึ่งเป็นของทฤษฏี Normalization เปลี่ยนมาเป็นการมองว่าในฐานข้อมูลควรจะมีตารางอะไรบ้าง แต่ละตารางทำหน้าที่เก็บข้อมูลอะไร เป็นต้น จึงส่งผลให้สามารถออกแบบฐานข้อมูลได้รวดเร็วกว่านั่นเอง

ที่มา : สร้างระบบงานฐานข้อมูลด้วย Visual Basic. NET ฉบับโปรแกรมเมอร์ โดย ศุภชัย สมพานิช

นางสาวเฉลิมขวัญ ส่งศรีจันทร์ (ขวัญ)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

หมายเหตุ: มีเพียงสมาชิกของบล็อกนี้เท่านั้นที่สามารถแสดงความคิดเห็น