วิธีออกแบบฐานข้อมูล : ตอน 1

 

   Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

 

วิธีออกแบบฐานข้อมูล : ตอน 1

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

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

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

 

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


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


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


•    คิวรีแบบประจำและแบบจร: คิวรีแบบประจำคือคิวรีที่ผู้สร้างหรือผู้ดูแลฐานข้อมูล (DBA) สร้างเก็บไว้ให้ผู้ใช้เรียกใช้กระทำการต่างๆ กับฐานข้อมูล คิวรีแบบจร (ad-hoc) คือคิวรีที่ผู้ใช้เขียนขึ้นเองสดๆ เพื่อใช้เฉพาะกิจ เนื่องจากผู้เขียนคิวรีแบบจรมักไม่ใช่นักคอมพิวเตอร์ (เช่นอาจเป็นผู้จัดการฝ่ายขาย) จึงไม่รู้วิธีเขียนคิวรีให้มีประสิทธิภาพ คิวรีแบบจรจึงมักถูกห้ามใช้ในสภาพแวดล้อมที่คับขัน (คืองานที่มีผู้ใช้พร้อมกันมาก มีปริมาณข้อมูลไหลมากเช่นในงาน OLTP) แต่อาจใช้ได้ในสภาพแวดล้อมที่ผ่อนคลายกว่า (คืองานที่มีผู้ใช้งานพร้อมๆ กันน้อย มีปริมาณข้อมูลไหลน้อย เช่นในงานคลังข้อมูล)  ในการออกแบบฐานข้อมูลท่านควรพิจารณาว่าจะสนับสนุนคิวรีแบบประจำหรือแบบจร หรือทั้งสองแบบ


•    การคิวรี: ฐานข้อมูลที่ออกแบบมาสำหรับสภาพแวดล้อมที่คับขัน (เช่นในงาน OLTP) อาจเน้นประสิทธิภาพมากเกินไป (คือทำนอร์มัลไลซ์อย่างหนัก) การทำเช่นนั้นจะทำให้เขียนคิวรียาก ส่วนการออกแบบฐานข้อมูลในสภาพแวดล้อมที่ผ่อนคลายกว่า (เช่นในงานคลังข้อมูล) อาจนำฐานข้อมูลเพื่องาน OLTP มาลดการแยกย่อยตารางเพื่อให้นอร์มัลไลซ์มีความเข้มข้นน้อยลง (denornalize) เพื่อให้สะทอนลักษณะทางธุรกิจมากขึ้น ซึ่งจะช่วยให้เขียนคิวรีได้ง่ายกว่า (ดุรายละเอียดเกี่ยวกับการทำนอร์มัลไลซ์ในบทที่ 5 และ 6) ในการออกแบบฐานข้อมูลท่านจะต้องพิจารณาว่าควรทำนอร์มัลไลซ์มากน้อยเพียงใด ด้วยการชั่งน้ำหนักระหว่างประสิทธิภาพและความยากง่ายของการเขียนคิวรี


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


•    การแยก-รวมตาราง: การออกแบบฐานข้อมูลเพื่องาน OLTP ควรแยกย่อยตารางออกเป็นจำนวนมากโดยละเอียด (อาจไม่เป็นเช่นนั้นในทุกๆ กรณี) ส่วนการออกแบบฐานข้อมูลเพื่องานคลังข้อมูลไม่ควรแยกย่อยตาราง แต่ให้รวมข้อมูลเรื่องเดียวไว้ภายในตารางเดียวกัน ในการออกแบบฐานข้อมูลท่านจะต้องพิจารณาว่าควรแยกหรือรวมตารางมากเพียงใดจึงจะเหมาะกับงานนั้นๆ


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


•    ความเปลี่ยนแปลง: การเปลี่ยนแปลงโครงสร้างของฐานข้อมูลมักส่งผลกระทบกับแอพลิเกชัน วิธีป้องกันไม่ให้เกิดผลกระทบคือลดความผูกพันระหว่างแอพลิเกชันกับฐานข้อมูลโดยสร้างตัวเชื่อมต่อ (เช่นสพร็อกซ์ ดูบทที่ 22) ตัวเชื่อมต่อนี้มีสภาพเป็นกล่องดำ เพราะแอพลิเกชันสามารถเรียกใช้งานได้โดยไม่ต้องรู้การทำงานภายในของมัน เมื่อแอพลิเกชันต้องการติดต่อกับฐานข้อมูลต้องทำโดยผ่านกล่องดำเท่านั้น หากภายหลังมีการเปลี่ยนแปลงโครงสร้างของฐานข้อมูล ท่านก็เพียงแต่แก้ไขเฉพาะกล่องดำไม่ต้องแก้ไขแอพลิเกชัน การออกแบบฐานข้อมูลท่านจะต้องทำให้ฐานข้อมูลเชื่อมต่อกับแอพลิเกชันอย่างหลวมๆ (loose coupling) โปรดจำไว้ว่าการเชื่อมหลวมๆ คือดี การเชื่อมต่อแบบแน่นๆ  (tight coupling) ไม่ดี

 

ภาพ 4-1 : เว็บไซต์อย่าง ebay.com มีผู้เข้าทำธุรกรรมจากทั่วโลกวันละหลายๆ ล้านรายการ

 

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

 

4.3. หลักการออกแบบฐานข้อมูล

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

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

 

ภาพ 4-2 : ตัวอย่างแผนภูมิ ERD ของฐานข้อมูลร้านขายหนังสือในอินเตอร์เน็ตแห่งหนึ่ง

 

•    การออกแบบทางตรรกะ: เขียนคิวรี DDL (Data definition Language) เพื่อสร้างตารางต่างๆ ในฐานข้อมูล เครื่องมือสร้างแผนภูมิ ERD บางตัวอาจให้ DDL ได้โดยอัตโนมัติแต่เป็นเพียงคิวรีทั่วๆ ไป หากจะนำมาใช้ควรตรวจสอบให้ดีก่อน
•    การออกแบบทางกายภาพ: ปรับแก้คิวรีเพื่อสนับสนุนลักษณะทางกายภาพบางอย่าง เช่นพิจารณาว่าจำเป็นจะต้องต้องการเก็บออพเจ็กต์ที่เป็นไบนารีขนาดใหญ่ไว้เป็นไฟล์แยกต่างหากจากตารางมาตรฐานหรือไม่
•    การปรับแต่ง: ประกอบด้วยกระบวนการหลายอย่าง เช่นเพิ่มหรือลดระดับความเข้มข้นของการนอร์มัลไลซ์ การทำดรรชนี การจัดทำทริกเกอร์ การเพิ่มระบบรักษาความปลอดภัย หรืออะไรก็ตามที่ยังไม่ได้ทำในขึ้นตอนก่อนหน้านี้

ขั้นตอนเหล่านี้เป็นเพียงแนวทางโดยทั่วไป ท่านอาจสลับขั้นตอน ทำซ้ำ หรือนำขั้นตอนบางขั้นตอนหรือทั้งหมดมารวมกัน แล้วแบ่งแยกใหม่อย่างไรก็ได้ตามใจชอบ แต่สิ่งสำคัญที่ผู้เขียนขอแนะนำคือให้ออกแบบในกระดาษ (หรือใช้ซอฟต์แวร์) เขียนแผนภูมิ ERD ก่อนเขียนคิวรี DDL เสมอ เพื่อให้เห็นโครงสร้างในภาพรวมก่อนลงมือสร้างฐานข้อมูลจริงๆ

 

โฆษณา

2 Responses to วิธีออกแบบฐานข้อมูล : ตอน 1

  1. boy says:

    อ.ลาภลอยครับเมื่อไรหนังสือจะออกวางตลาดเหรอครับ

  2. Laploy says:

    สวัสดีครับคุณ Bird ขอบคุณที่ถามครับ สำนักพิมพ์แจ้งว่ากำลังจัดทำรูปเล่ม คาดว่าจะแล้วเสร็จประมาณเดือนเมษานะ

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google photo

You are commenting using your Google account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: