Laploy's profileLoy Business Intelligenc...PhotosBlogListsMore Tools Help

Blog


    February 23

    เครื่องมือและการติดตั้ง: ตอน 6

     

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

     

    เครื่องมือและการติดตั้ง: ตอน 6

    ตอน 1 2 3 4 5 6

    ฉ.8. วิธีตั้งค่า Reporting Services
    ก่อนจะใช้งาน SSRS ได้ท่านจำเป็นต้องกำหนดค่าเริ่มต้นและเปิดใช้งานมันเสียก่อนโดยมีขั้นตอนดังนี้

    041

    ภาพ ฉ-41 : เปิดโปรแกรม Reporting Services Configuration Manager ย่อ (RSCM)

    042

    ภาพ ฉ-42 : โปรแกรม RSCM จะแสดงกรอบข้อความ Connect to a report server instance เพื่อให้เลือกอินสแตนซ์ของ SSRS ที่ต้องการกำหนดค่า ป้อนชื่ออินสแตนซ์ที่ต้องการ (ในกรณีที่ท่านสร้าง SSRS ไว้หลายอินสแตนซ์) แล้วกดปุ่ม Connect

    043

    ภาพ ฉ-43 : โปรแกรม RSCM จะแสดงหน้า Report Server Status ให้กดปุ่ม Apply

    044

    ภาพ ฉ-44 : โปรแกรม RSCM จะแสดงหน้า Service Account เพื่อให้กำหนดบัญชีผู้มีสิทธิสร้างรายงาน ให้เลือก User build in account เป็น Network Service แล้วกดปุ่ม Apply

    045

    ภาพ ฉ-45 : โปรแกรม RSCM จะแสดงหน้า Web Service URL เพื่อให้กำหนด URL ที่ผู้ใช้รายงานเรียกดูรายงานได้ด้วยเว็บเบราวเซอร์ ให้ใช้ค่าโดยปริยายที่ RSCM กำหนดให้แล้วกดปุ่ม Apply

    046

    ภาพ ฉ-46 : หลังกดปุ่ม Apply โปรแกรม RSCM จะสร้าง Virtual directory และจอง URL ที่กำหนด

    047

    ภาพ ฉ-47 : ให้ตรวจสอบว่า URL ที่โปรแกรม RSCM สร้างขึ้นสามารถใช้งานได้จริงหรือไม่โดยกดที่ URL หลังข้อความ URLs: ในกรอบ Report Server Web Service URLs หากใช้งานได้เว็บเบราวเซอร์จะเปิดขึ้นและแสดงหน้าเว็บดังที่เห็นในภาพนี้

    048

    ภาพ ฉ-48 : ขั้นตอนต่อไปโปรแกรม RSCM จะแสดงหน้า Report Server Database เพื่อให้ท่านกำหนดฐานข้อมูลที่ SSRS จะใช้เพื่อเก็บข้อมูลขณะที่มันทำงาน ให้กดปุ่ม Change Database

    049

    ภาพ ฉ-49 : โปรแกรม RSCM จะเปิดโปรแกรม Report Server Database Configuration Wizard เป็นวิซาร์ดที่ช่วยให้กำหนดฐานข้อมูลที่ SSRS จะใช้เพื่อเก็บข้อมูลได้ง่าย ท่านจะสร้างฐานข้อมูลขึ้นใหม่ ซึ่งทำได้โดยเลือกหัวข้อ Create a new report server database แล้วกดปุ่ม Next

    050

    ภาพ ฉ-50 : โปรแกรมวิซาร์ดจะแสดงหน้า Database Server เพื่อให้ท่านกำหนดดาต้าเบสเซอฟเวอร์ที่จะสร้างฐานข้อมูลขึ้นใหม่ (เป็นฐานข้อมูลสำหรับ SSRS ใช้เป็นการภายใน ไม่ใช่ฐานข้อมูลที่ท่านจะใช้ทำงาน) ให้ป้อนพิมพ์ชื่อเซอฟเวอร์ในช่อง Server Name แล้วกดปุ่ม Next

    051

    ภาพ ฉ-51 : โปรแกรมวิซาร์ดจะแสดงหน้า Database ให้ป้อนชื่อฐานข้อมูลที่จะสร้าง  ในตัวอย่างนี้ผู้เขียนตั้งชื่อว่า ReportServer ท่านจะใช้ชื่ออะไรก็ได้ เสร็จแล้วกดปุ่ม Next

    052

    ภาพ ฉ-52 : โปรแกรมวิซาร์ดจะแสดงหน้า Credentials เพื่อให้ท่านกำหนดวิธีจัดสิทธิของฐานข้อมูล ในตัวอย่างนี้ผู้เขียนเลือก Service Credentials เพื่อความสะดวก ในการใช้งานจริงควรสร้างผู้ใช้ใหม่แล้วกำหนดสิทธิให้รัดกุม เสร็จแล้วกดปุ่ม Next

    053

    ภาพ ฉ-53 : โปรแกรมวิซาร์ดจะแสดงหน้า Summary เป็นรายงานบอกให้รู้ว่าท่านได้ตั้งค่าอะไรไว้บ้าง อ่านแล้วให้กดปุ่ม Next

    054

    ภาพ ฉ-54 : โปรแกรมวิซาร์ดจะเริ่มกระบวนการสร้างฐานข้อมูลใหม่ หากทุกอย่างเป็นไปได้ด้วยดีจะเห็นข้อความดังในภาพนี้ อ่านแล้วให้กดปุ่ม Next โปรแกรมวิซาร์ดจะจบการทำงาน

    055

    ภาพ ฉ-55 : โปรแกรม RSCM จะแสดงรายละเอียดว่าการสร้างฐานข้อมูลใหม่มีภาวะอย่างไร ต่อไปให้กดปุ่ม Apply

    056

    ภาพ ฉ-56 : โปรแกรม RSCM จะแสดงหน้า Report Manager URL เพื่อให้ท่านกำหนด URL สำหรับเปิดโปรแกรมรีพอร์ทเมนเนเจอร์ ควรยอมรับค่าโดยปริยายโดยกดปุ่ม Apply

    057

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

    ตอน 1 2 3 4 5 6

     

     

    February 22

    เครื่องมือและการติดตั้ง: ตอน 5

     

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

     

    เครื่องมือและการติดตั้ง: ตอน 5

    ตอน 1 2 3 4 5 6

    027

    ภาพ ฉ-27 :  โปรแกรมติดตั้งจะแสดงหน้า Feature Selection เพื่อให้เลือกสิ่งที่ต้องการติดตั้ง เพื่อไม่ให้กินแรงเครื่องและเปลืองเนื้อที่ในฮาร์ดดิสก์ ให้เลือกเฉพาะที่จำเป็นต้องใช้ คือเลือกอย่างในภาพนี้ แล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    028

    ภาพ ฉ-28 :  โปรแกรมติดตั้งจะแสดงหน้า Instance Configuration เพื่อให้กำหนดคุณสมบัติของอินสแตนซ์ SQL2008 สามารถรันหลายๆ อินสแตนซ์ได้พร้อมๆ กันในคอมพิวเตอร์ตัวเดียว  หนึ่งอินสแตนซ์คือหนึ่งเซอฟเวอร์ หากท่านสร้างไว้สามอินสแตนซ์ จะมีผลให้ท่านมีดาต้าเบสเซอฟเวอร์สามตัวภายในคอมพิวเตอร์เครื่องเดียว ให้เลือกหัวข้อ Named instance แล้วใส่ชื่ออินสแตนซ์ที่ต้องการ (กำหนดชื่อขึ้นเอง) ค่าอื่นๆ ให้ใช้ค่าโดยปริยาย แล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    029

    ภาพ ฉ-29 :  โปรแกรมติดตั้งจะแสดงหน้า Disk Space Requirements เพื่อรายงานว่าสิ่งต่างๆ ที่ท่านเลือกติดตั้งรวมกันแล้วจะใช้เนื้อที่ในฮาร์ดดิสก์เท่าใด ดูเสร็จแล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    030

    ภาพ ฉ-30 :  โปรแกรมติดตั้งจะแสดงหน้า Service Accounts เพื่อให้ท่านกำหนดเจ้าของเซอร์วิส เพื่อความสะดวกในเครื่องทดสอบนี้จะใช้ NT AUTHORITY\NETWORK ซึ่งจะทำให้ไม่ต้องป้อนชื่อผู้ใช้และรหัสผ่าน เพราะจะเป็นชื่อผู้ใช้และรหัสผ่านชุดเดียวกันกับที่ท่านกำหนดไว้ในตอนล็อกอินเข้าวินโดวส์ การติดตั้งใช้งานจริง (ใน production server) ควรกำหนดบัญชีผู้ใช้ซึ่งทำหน้าที่เป็น DBA โดยเฉพาะ เสร็จแล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    031

    ภาพ ฉ-31 :  โปรแกรมติดตั้งจะแสดงหน้า Collation เพื่อให้กำหนดลักษณะภาษา ในหนังสือนี้ฐานข้อมูลเป็นตัวอักษรภาษาอังกฤษล้วน จึงเปลี่ยนจากไทยเป็น Latin1_General_AS เสร็จแล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    032

    ภาพ ฉ-32 :  โปรแกรมติดตั้งจะแสดงหน้า Account Provisioning เพื่อใช้กำหนดโหมดของการระบุสิทธิในการจัดการฐานข้อมูล  เพื่อความสะดวกในเครื่องทดสอบนี้จะใช้ Windows authentication mode แล้วกดปุ่ม Add Current User เพื่อใช้ชื่อผู้ใช้และรหัสผ่านชุดเดียวกันกับที่ท่านกำหนดไว้ในตอนล็อกอินเข้าวินโดวส์ เสร็จแล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    033

    ภาพ ฉ-33 :  โปรแกรมติดตั้งจะแสดงหน้า Data Directories ท่านสามารถใช้ค่าโดยปริยายได้ทั้งหมด ให้กดปุ่ม Next เพื่อไปยังหน้าถัดไป

    034

    ภาพ ฉ-34 :  โปรแกรมติดตั้งจะแสดงหน้า Reporting Services Configuration ให้เลือกหัวข้อล่างสุด Install, but do not configure the report server ซึ่งเป็นการสั่งให้ติดตั้ง SSRS แต่ไม่ต้องกำหนดค่าต่างๆ เพราะท่านจะไปกำหนดค่าต่างๆ ด้วยตนเองภายหลัง เสร็จแล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    035

    ภาพ ฉ-35 :  โปรแกรมติดตั้งจะแสดงหน้า Installation Rules จะแสดงรายงานว่าสิ่งต่างๆ ที่ท่านกำหนดให้ติดตั้งมีข้อติดขัดอะไรหรือไม่ ทุกบรรทัดต้องแสดงคำว่า Passed หากมีบรรทัดใด Failed ต้องออกจากการติดตั้งเพื่อไปแก้ปัญหานั้นเสียก่อนจึงจะติดตั้งได้สำเร็จ ดูเสร็จแล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    036

    ภาพ ฉ-36 :  ถ้าทุกอย่างราบรื่น โปรแกรมติดตั้งจะแสดงหน้า Ready to Install พร้อมกับแสดงรายการแจกแจงให้รู้ว่าท่านกำหนดให้ติดตั้งอะไรไว้บ้าง ดูเสร็จแล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    037

    ภาพ ฉ-37 :  โปรแกรมติดตั้งจะแสดงหน้า Installation Progress พร้อมกับเริ่มกระบวนการติดตั้งซึ่งเป็นขั้นตอนที่ยาวนานและเจ็บปวด

    038

    ภาพ ฉ-38 : หากท่านโชคดีโปรแกรมติดตั้งจะแสดงหน้า Complete เพื่อแจ้งให้ทราบว่าการติดตั้งสำเร็จโดยไม่มีปัญหาใดๆ  ดูเสร็จแล้วกดปุ่ม Next เพื่อออกจากโปรแกรมติดตั้ง

    039

    ภาพ ฉ-39 : หากท่านลืมติดตั้งคอมโพเนนท์ใดๆ ก็สามารถเริ่มโปรแกรมติดตั้งใหม่ได้ คราวนี้ให้เลือกเฉพาะชิ้นส่วนที่ต้องการเพิ่มเติม ยกตัวอย่างเช่น หากลืมก็อาจติดตั้ง Reporting Services และ Business Intelligence Development Studio เพิ่มเติมภายหลังได้

    040

    ภาพ ฉ-40 : เมื่อติดตั้งเสร็จแล้วให้เปิดโปรแกรม MSVS2008 เพื่อตรวจสอบว่าตอนนี้ MSVS2008 จะมีเท็มเพลตต่างๆ สำหรับสร้างโปรเจ็กต์ที่เกี่ยวข้องกับ SQL2008 เพิ่มขึ้นหรือไม่ เลือกเมนู File / New Project ... จะเห็นรายการดังในภาพนี้ โปรดสังเกตว่าตอนนี้  SQL2008 มีหัวข้อ Business Intelligence Projects เพิ่มขึ้น ภายในจะมีเท็มเพลตต่างๆ สำหรับสร้างโปรเจ็กต์ที่เกี่ยวข้องกับ SQL2008 อยู่จำนวนหนึ่ง

    ตอน 1 2 3 4 5 6

     

     

    เครื่องมือและการติดตั้ง: ตอน 4

     

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

     

    เครื่องมือและการติดตั้ง: ตอน 4

    ตอน 1 2 3 4 5 6

    ฉ.7. วิธีติดตั้งโปรแกรม Microsoft SQL Server 2008
    โปรแกรม Microsoft SQL Server 2008 (SQL2008) มีหลายเอดิชัน ต่อไปนี้จะสาทิตวิธีติดตั้งเอดิชัน Enterprise

    016

    ภาพ ฉ-16 : ให้ใส่แผ่น DVD โปรแกรม SQL2008 Enterprise หากท่านยังไม่ได้จัดซื้อ SQL2008 Enterprise แต่ต้องการทดสอบการใช้งานเอดิชันเต็ม (ไม่ใช่เอดิชันที่เป็นเอ็กซ์เพรส) ให้ไปที่เว็บไซต์ SQL2008 เพื่อดาว์นโหลด SQL2008 Enterprise สำหรับการทดลองใช้ที่มีอายุการใช้งาน 180 วัน ให้เลือกแบบที่เตรียมไว้เพื่อนักพัฒนา (หัวข้อ Developers) ขนาดของไฟล์ใหญ่ประมาณสี่กิกกะไบต์ เป็นไฟล์ฟอร์แมต ISO สำหรับบันทึกลงสู่แผ่น DVD

    017

    ภาพ ฉ-17 : อีกทางเลือกหนึ่งสำหรับผู้ที่ยังไม่ได้จัดซื้อใบอนุญาตการใช้ SQL2008 Enterprise แต่ต้องการทดสอบการใช้งานคือ SQL Server 2008 Express ซึ่งเป็นเอดิชันที่ใช้ได้ฟรี แต่มีข้อเสียคือขาดสิ่งที่จำเป็นในการใช้งานระดับสูงสำหรับองค์กรหลายอย่าง เช่นไม่สนับสนุนการเชื่อมต่อเครื่องแม่ข่ายผู้ให้บริการเป็นกลุ่มเพื่อเพิ่มประสิทธิภาพ (server cluster) แต่ SQL Server 2008 Express มีข้อดีคือไม่จำกัดอายุการใช้งาน และมีคุณสมบัติครอบคลุมทุกหัวข้อในหนังสือเล่มนี้

    018

    ภาพ ฉ-18 : เมื่อดาวน์โหลดเสร็จแล้วและบันทึกใส่แผ่น DVD แล้ว จะพบว่า SQL2008 Enterprise สำหรับการทดลองใช้งานมีสิ่งต่างๆ ครบเหมือนเวอร์ชันจริงทุกประการ (จะขาดไปก็เพียงใบอนุญาตในการใช้งาน) โฟลเดอร์ x86 คือที่เก็บแฟ้มสำหรับการติดตั้งในระบบปฏิบัติการวินโดวส์ 32 บิต  โฟลเดอร์ x64 คือที่เก็บแฟ้มสำหรับการติดตั้งในระบบปฏิบัติการวินโดวส์ 64 บิต  และ โฟลเดอร์ ia64 คือที่เก็บแฟ้มสำหรับการติดตั้งในระบบปฏิบัติการวินโดวส์ 64 บิตเวอร์ชันสำหรับซีพียูอิทาเนียม (ซีพียูตระกูลหนึ่งของอินเทลที่ท่านจะพบในเครื่องแม่ข่ายระดับสูง)

    019

    ภาพ ฉ-19 : เมื่อใส่แผ่น DVD ของ SQL2008 Enterprise โปรแกรมออโต้รันจะเปิดหน้า Installation Center (ย่อ IC) แถบทางซ้ายเป็นหัวข้อเจ็ดหัวข้อ ประกอบด้วย Planning มีรายการคำสั่งย่อยเพื่อใช้ช่วยวางแผนกการติดตั้ง Installation มีรายการคำสั่งย่อยเพื่อใช้ติดตั้งโปรแกรม Maintenance มีรายการคำสั่งย่อยเพื่อใช้บำรุงรักษา Tools มีรายการคำสั่งย่อยเป็นเครื่องมือสำหรับการกำหนดค่าต่างๆ Resource มีรายการคำสั่งย่อยเป็นเอกสารต่างๆ เช่นคู่มือการใช้งาน Advanced มีรายการคำสั่งย่อยเพื่อใช้ตั้งค่าต่างๆ สำหรับผู้ใช้ที่เชี่ยวชาญ และสุดท้ายคือ Option ใช้กำหนดสถาปัตยกรรมของเพลตฟอร์มที่จะติดตั้ง

    020

    ภาพ ฉ-20 : ต่อไปให้ตรวจสอบระบบว่าพร้อมสำหรับการติดตั้ง SQL2008 หรือไม่โดยกดเลือกรายการ System Configuration Checker เมื่อกดแล้วโปรแกรมติดตั้งจะแสดงกรอบข้อความ Setup Support Rules ซึ่งแสดงรายการข้อบังคับต่างๆ ที่จำเป็นต้องมีอยู่ในเครื่องก่อนจึงจะติดตั้ง SQL2008 ได้สำเร็จ ในภาพนี้แสดงให้เห็นถึงความล้มเหลวสองประการ ประการแรกคือ Performance counter registry hive consistency และมีรายงานแจ้งว่าคอมพิวเตอร์ของผู้เขียนยังไม่มีโปรแกรม Windows PowerShell

    021

    ภาพ ฉ-21 : ผู้เขียนปิดโปรแกรมติดตั้ง SQL2008 แล้วไปแก้ไขรีจิสทรีของระบบที่ชำรุด จากนั้นจึงไปดาวน์โหลดโปรแกรม  Windows PowerShell มาติดตั้ง

    022

    ภาพ ฉ-22 : เมื่อแก้ไขปัญหาหมดแล้วจึงเข้าโปรแกรมติดตั้ง SQL2008 และกดเลือกรายการ System Configuration Checker อีกครั้ง

    023

    ภาพ ฉ-23 : คราวนี้ System Configuration Checker แสดงกรอบข้อความ Setup Support Rules รายงานว่าทุกอย่างผ่านพร้อมสำหรับการติดตั้ง

    024

    ภาพ ฉ-24 : เมื่อพร้อมแล้วให้เข้าหัวข้อ Installation (รายการซ้ายมือในภาพ ฉ-19) แล้วเลือกหัวข้อบนสุดทางขวา โปรแกรมติดตั้งจะแสดงหน้า Product Key เพื่อให้ป้อนรหัสแต่ท่านไม่ต้องป้อนเพราะนี่เป็นเวอร์ชันสำหรับทดลองใช้งาน ให้กดปุ่ม Next เพื่อไปยังหน้าถัดไป

    025

    ภาพ ฉ-25 :  โปรแกรมติดตั้งจะแสดงหน้า License Terms ให้คลิกที่หน้าข้อความ I accept the license terms. แล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    026

    ภาพ ฉ-26 :  โปรแกรมติดตั้งจะแสดงหน้า Setup Support Rules เหมือนในภาพ ฉ-20 ไม่ควรมีรายการใด Failed ถ้ามีต้องออกจาก โปรแกรมติดตั้งไปแก้ไขให้หายก่อน แล้วกดปุ่ม Next เพื่อไปยังหน้าถัดไป

    ตอน 1 2 3 4 5 6

     

     

    เครื่องมือและการติดตั้ง: ตอน 3

     

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

     

    เครื่องมือและการติดตั้ง: ตอน 3

    ตอน 1 2 3 4 5 6

    ฉ.6. วิธีติดตั้งโปรแกรม Microsoft Visual Studio 2008
    มีหลายบทในหนังสือนี้ที่ต้องใช้โปรแกรม Microsoft Visual Studio 2008 (ย่อ MSVS2008) ยกตัวอย่างเช่นในบทที่ 22 มีสอนวิธีใช้สพร็อซ์ร่วมกับภาษา C# (22.5) บทที่ 25 การสร้างและใช้งาน SSRS และการเขียนคิวรีแบบ LINQ ในบทที่ 32 เป็นต้น เนื่องจาก SQL2008 จะผนวกคอมโพเนนท์บางอย่างเข้าสู่ MSVS2008 ด้วย (เช่น BI หรือ Business Intelligent) ดังนั้นจึงจำเป็นต้องติดตั้ง MSVS2008 ก่อน SQL2008

    โปรแกรม MSVS2008 มีหลายเอดิชัน (เช่น Team suit และ Express edition) ต่อไปนี้จะสาทิตวิธีติดตั้งเอดิชันมาตรฐาน

    005

    ภาพ ฉ-5 : ใส่แผ่น DVD ของโปรแกรม MSVS2008 หากยังไม่ได้จัดซื้อ MSVS2008 แต่ต้องการทดสอบการใช้งาน ให้ไปที่เว็บไซต์ของไมโครซอฟต์เพื่อดาว์นโหลด MSVS2008 เวอร์ชันสำหรับการทดลองใช้ที่มีอายุการใช้งาน 180 วัน เมื่อดาวน์โหลดแล้วให้นำมาสร้างเป็น DVD สำหรับติดตั้ง หลังใส่แผ่น DVD โปรแกรม MSVS2008 แล้วจะเห็นหน้าหลักสำหรับติดตั้ง ให้กดที่ Install Visual Studio 2008

    006

    ภาพ ฉ-6 : โปรแกรมติดตั้งจะแสดงกรอบข้อความต้อนรับและติดตั้งคอมโพเนนท์เบื้องต้น ให้รอจนกว่าการติดตั้งคอมโพเนนท์เบื้องต้นจะเสร็จสมบูรณ์แล้วกดปุ่ม Next

    007

    ภาพ ฉ-7 : โปรแกรมติดตั้งจะแสดงกรอบข้อความ Options Page ให้เลือกหัวข้อ Custom แล้วกดปุ่ม Next

    008

    ภาพ ฉ-8 : โปรแกรมติดตั้งจะแสดงรายการคุณสมบัติต่างๆ ที่สามารถเลือกติดตั้งได้ เพื่อประหยัดพื้นที่ในฮาร์ดดิสก์ให้เลือกติดตั้งเฉพาะสิ่งที่จำเป็นต้องใช้ดังที่เห็นในภาพนี้

    009

    ภาพ ฉ-9 : โปรแกรมติดตั้งจะเริ่มดำเนินการติดตั้งและแสดงกรอบข้อความ Install Page เพื่อรายงานความคืบหน้าในการทำงาน เมื่อเสร็จแล้วให้กดปุ่ม Next

    010

    ภาพ ฉ-10 : การติดตั้งจะกินเวลาประมาณครึ่งชั่วโมง เสร็จแล้วโปรแกรมติดตั้งจะแสดงกรอบข้อความ Finish Page ดังที่เห็นในภาพนี้ ให้กดปุ่ม Finish

    011

    ภาพ ฉ-11 : จากนั้นโปรแกรมติดตั้งจะแสดงหน้าหลักสำหรับติดตั้งเหมือนในภาพ ฉ-5 ต่อไปให้ติดตั้งเอกสารอธิบายการใช้งาน (MSDN) โดยเลือกหัวข้อ Install Product Documentation เมื่อเลือกแล้วโปรแกรมติดตั้งจะแสดงรายการคุณสมบัติต่างๆ ที่สามารถเลือกติดตั้งได้ ให้เลือกเอกสารที่ต้องการแล้วกดปุ่ม Next

    012

    ภาพ ฉ-12 : โปรแกรมติดตั้งจะเริ่มดำเนินการติดตั้งเอกสาร และแสดงกรอบข้อความ Install Page เพื่อรายงานความคืบหน้าในการทำงาน เมื่อเสร็จแล้วให้กดปุ่ม Next

    013

    ภาพ ฉ-13 : หากเลือกทั้งหมดการติดตั้งจะกินเวลาประมาณครึ่งชั่วโมง เสร็จแล้วโปรแกรมติดตั้งจะแสดงกรอบข้อความ Finish Page ดังที่เห็นในภาพนี้ ให้กดปุ่ม Finish

    014

    ภาพ ฉ-14 : ให้ปิดหน้าหลักสำหรับติดตั้งในภาพ ฉ-5 ต่อไปให้ลองเปิดโปรแกรม  MSVS2008 เพื่อดูว่าใช้งานได้หรือไม่โดยกดปุ่ม Start / Programs / Microsoft Visual Studio 2008 แล้วดับเบิ้ลคลิกที่ไอคอน Microsoft Visual Studio 2008 หากใช้งานได้จะปรากฏกรอบหน้าต่างเหมือนในภาพนี้

    015

    ภาพ ฉ-15 : ต่อไปให้ตรวจสอบว่า MSVS2008 ที่เพิ่งติดตั้งเสร็จนี้สามารถสร้างโปรเจ็กต์ชนิดใดได้บ้างโดยเลือกเมนู File / New Project ... จะเห็นรายการดังในภาพนี้ โปรดสังเกตว่ายังไม่มีหัวข้อ Business Intelligence Projects ซึ่งจะมีเท็มเพลตต่างๆ สำหรับสร้างโปรเจ็กต์ที่เกี่ยวข้องกับ SQL2008 (เช่น SSRS)  ท่านจะย้อนกลับมาดูหน้านี้อีกครั้งหลังจากติดตั้ง SQL2008 แล้ว

    ตอน 1 2 3 4 5 6

     

    เครื่องมือและการติดตั้ง: ตอน 2

     

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

     

    เครื่องมือและการติดตั้ง: ตอน 2

    ตอน 1 2 3 4 5 6

    ฉ.5. วิธีจัดการกับ IIS
    เนื่องจากการเครื่องแม่ขายผู้ให้บริการเพื่อการทดสอบที่จะจัดตั้งนี้ นอกจากจะทำหน้าที่เป็นแม่ขายผู้ให้บริการฐานข้อมูลแล้ว ยังจะทำหน้าที่เป็นผู้ให้บริการ Reporting Services ด้วย (ดูบทที่ 25) จึงจำเป็นต้องตรวจสอบว่า Internet Information Services หรือ IIS ถูกติดตั้งใช้งานอยู่หรือไม่

    IIS คือเซอร์วิสหรือบริการหนึ่งที่รันอยู่ในฉากหลัง เพื่อให้คอมพิวเตอร์เครื่องนั้นทำหน้าที่เป็นแม่ข่ายผู้ให้บริการเว็บ (web server) ระบบปฏิบัติการวินโดวส์เอ็กซ์พีจะผนวก IIS เวอร์ชัน 6.0 มาให้ในตัว ท่านจะเลือกติดตั้งหรือไม่ติดตั้งก็ได้ตามใจชอบ

    ใน MS-SQL เวอร์ชันก่อนหน้านี้ (คือ 2000 และ 2005) หากต้องการใช้งาน Reporting Services (ย่อ SSRS) ท่านจำเป็นต้องติดตั้ง IIS และเปิดการใช้งานไว้ให้เรียบร้อยเสียก่อน เพราะ SSRS มีภาวะเป็นเซอร์วิสหนึ่งที่รันภายใต้ IIS ผู้ใช้งานจำนวนมากไม่ชอบการจัดวางเช่นนี้ เพราะหลายๆ คนต้องการติดตั้ง SSRS ไว้ในคอมพิวเตอร์เครื่องเดียวกับที่เป็นแม่ข่ายฐานข้อมูล แต่เกรงว่าหากแม่ข่ายฐานข้อมูลทำหน้าที่เป็นเว็บเซอฟเวอร์ด้วย อาจส่งผลเสียต่อระบบรักษาความปลอดภัย และทำให้ประสิทธิภาพของการเป็นแม่ข่ายฐานข้อมูลตกต่ำลง

    ข่าวดีคือ SQL2008 ไม่ผูกติดกับ IIS อีกต่อไปแล้ว ทีมงานของบริษัทไมโครซอฟต์ที่พัฒนา  SQL2008 ตัดสินใจเปลี่ยนแปลงให้ SSRS ใน SQL 2008 มีสภาพเป็นเซอร์วิสอิสระ คือสามารถให้บริการหน้าเว็บ ASP.NET 2.0 ได้โดยลำพัง ไม่ต้องพึ่ง IIS อีกต่อไป (อย่าลืมว่ารายงานของ SSRS ที่แท้เป็นหน้าเว็บแบบ ASP.NET ที่เกิดจากการเรนเดอร์ของเอ็นจินในตัว SSRS เอง ดูรายละเอียดในบทที่ 25) ที่ว่าเป็นข่าวดีเพราะใน MS-SQL เวอร์ชันก่อนหน้านี้การตั้งค่าเริ่มต้นเพื่อให้ SSRS และ IIS ทำงานเข้ากันได้เป็นเหมือนฝันร้ายของ DBA (Database Administrator เจ้าหน้าที่ผู้ดูแลระบบฐานข้อมูล)

    หากท่านติดตั้ง IIS และเปิดใช้งานไว้แล้ว จากนั้นติดตั้งหรือกำหนดค่าเริ่มต้นให้ SSRS อาจเกิดปัญหาด้านความขัดยังกันระหว่างเซอฟเวอร์ทั้งสองตัว ท่านอาจพบว่าเมื่อทำรายงานแล้วและใช้เว็บ เบราวเซอร์เปิดหน้ารายงาน อาจะเกิดปัญหาว่าเบราวเซอร์จะติดต่อกับเซอฟเวอร์ผิดตัว (ที่ถูกคือต้องติดต่อกับ SSRS แต่เบราวเซอร์กลับไปติดต่อกับ IIS แทน) ดังนั้นเพื่อตัดปัญหานี้ ก่อนการติดตั้ง SQL2008 ท่านควรจะถอดถอน IIS ออกไปเสียก่อนซึ่งมีวิธีทำดังนี้

    001

    ภาพ ฉ-1 : เปิดคอนโทรลพาแนลโดยกดปุ่ม Start / Settings / Control Panel

    002

    ภาพ ฉ-2 : ดับเบิ้ลคลิกที่ไอคอน Add or Remove Programs

    003

    ภาพ ฉ-3 : จะเห็นกรอบข้อความ Add or Remove Programs ปรากฏขึ้น ให้กดปุ่มที่เขียนว่า Add/Remove Windows Components

    004

    ภาพ ฉ-4 : จะเห็นกรอบข้อความ Windows Components Wizard แสดงรายการคอมโพเนนท์ต่างๆ ของวินโดวส์ที่ท่านติดตั้งไว้ ไล่หาบรรทัดที่มีข้อความว่า "Internet Information Services (IIS)" เมื่อพบแล้วให้ดูว่ากรอบสี่เหลี่ยมด้านหน้ามีเครื่องหมายถูกหรือไม่ หากไม่มีแสดงว่า IIS ไม่ได้ถูกติดตั้งไว้ หากมีให้เอาออก แล้วกดปุ่ม Next แล้วทำตามขั้นตอนที่เหลือให้ครบเพื่อถอดถอน IIS

    ตอน 1 2 3 4 5 6

     

    เครื่องมือและการติดตั้ง: ตอน 1

     

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

     

    เครื่องมือและการติดตั้ง: ตอน 1

    ตอน 1 2 3 4 5 6

    เครื่องมือที่ท่านจำเป็นต้องใช้ในการเรียนหนังสือเล่มนี้มีอยู่สามอย่างคือคอมพิวเตอร์เพื่อใช้จัดตั้งเป็นเครื่องแม่ขายผู้ให้บริการฐานข้อมูล โปรแกรม Microsoft Visual Studio 2008 เพื่อใช้ฝึกหัดสร้างรายงาน เขียนสพร็อกซ์แบบ CLR และเรียนการเขียนคิวรีแบบ LINQ และโปรแกรม Microsoft SQL Server 2008 ซึ่งเป็นโปรแกรม RDBMS ในบทนี้ผู้เขียนจะอธิบายรายละเอียดวิธีติดตั้งและวิธีกำหนดค่าเริ่มต้นของโปรแกรมทั้งสอง

    ฉ.1. ฮาร์ดแวร์ที่ต้องใช้
    ฮาร์ดแวร์สำหรับใช้เพื่อการศึกษาการทำงานและการจัดตั้งเครื่องแม่ขายผู้ให้บริการเพื่อการทดสอบ (test server) สามารถใช้คอมพิวเตอร์ธรรมดาราคาปานกลางได้ แต่ถ้าต้องการจัดตั้งเครื่องแม่ขายผู้ให้บริการเพื่อการใช้งานจริง (production server) ในงาน OLTP (2.2) ที่มีปริมาณการใช้งานหนาแน่นควรเลือกใช้คอมพิวเตอร์ที่มีประสิทธิภาพสูงและมีความเชื่อถือได้

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

    •    ซีพียู: เพนเทียมสี่หรือเทียบเท่าหรือดีกว่า
    •    แรม: สองกิกกะไบต์หรือมากกว่า
    •    ฮาร์ดดิสก์: มีเนื้อที่ว่างห้าสิบกิกกะไบต์หรือมากกว่า

     

    ฉ.2. ระบบปฏิบัติการ
    ควรใช้ระบบปฏิบัติการวินโดวส์เอ็กซ์พี วินโดวส์ วิสตา หรือวินโดวส์ เซอฟเวอร์ 2008 หรือวินโดวส์เวอร์ชันอื่นๆ ที่ใหม่กว่า สามารถใช้ได้ทั้งแบบสามสิบสองบิตและหกสิบสี่บิต ในบทนี้จะอธิบายโดยแสดงตัวอย่างการติดตั้งในวินโดวส์เอ็กซ์พีแบบสามสิบสองบิต

     

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

    1.    เตรียมการก่อนติดตั้ง
    2.    จัดการกับ IIS
    3.    ติดตั้งโปรแกรม Microsoft Visual Studio 2008
    4.    ติดตั้งโปรแกรม Microsoft SQL Server 2008
    5.    ตั้งค่า Reporting Services

     

    ฉ.4. เตรียมการก่อนติดตั้ง
    มีสิ่งที่จำเป็นต้องเตรียมการเบื้องต้นก่อนการติดตั้งเครื่องมือใดๆ เพื่อการศึกษาการทำงานและการจัดตั้งเครื่องแม่ขายผู้ให้บริการเพื่อการทดสอบดังต่อไปนี้

    1.    ฟอร์แมตฮาร์ดดิสก์แล้วติดตั้งระบบปฏิบัติการวินโดวส์เอ็กซ์พี หากติดตั้งลงในวินโดวส์เอ็กซ์พีที่ใช้งานมานานแล้ว และมีโปรแกรมต่างๆ ติดตั้งทำงานอยู่มาก มีความเป็นไปได้สูงที่การติดตั้งจะล้มเหลว
    2.    ดาวน์โหลดและติดตั้งเซอร์วิสเพ็กของระบบปฏิบัติการวินโดวส์เอ็กซ์พีอัพเดตล่าสุดจากเว็บไซต์ของบริษัทไมโครซอฟต์ เซอร์วิสเพ็กที่ผู้เขียนใช้อัพเดตในการทดสอบนี้คือ SP3 (WindowsXP-KB936929-SP3-x86-ENU.exe)
    3.    ดาวน์โหลดและติดตั้งดอตเน็ตเฟรมเวิร์คเวอร์ชันใหม่สุดจากเว็บไซต์ของบริษัทไมโครซอฟต์ เวอร์ชันที่ใช้ในขณะทดสอบเป็น .NET Framework 3.5 SP1
    4.    ตรวจสอบให้แน่ใจว่าไม่ได้ติดตั้ง Internet Information Service (ดูวิธีทำในหัวข้อต่อไป)

    ตอน 1 2 3 4 5 6

     

    February 17

    นอร์มัลไลเซชัน : ตอน 3

     

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

     

    นอร์มัลไลเซชัน : ตอน 3

     

    6.8. วิธีทำนอร์มัลฟอร์มระดับต่างๆ
    ท่านได้อ่านนิยามของนอร์มัลฟอร์มระดับต่างๆ ไปแล้ว ในหัวข้อต่อไปนี้ท่านจะได้เรียนรายละเอียดของนอร์มัลฟอร์มแต่ละแบบ

    6.9. วิธีทำ 1NF

    6.9.1. การทำ 1NF ทางทฤษฏี
    ขั้นตอนการทำ 1NF มีดังนี้
    •    กำจัดกลุ่มที่ซ้ำ
    •    นิยาม PK (หนึ่งหรือหลายกุญแจ)
    •    ทำให้ข้อมูลทุกแถวแตกต่างกันและอ้างถึงได้ด้วย PK ห้ามการมีค่าซ้ำใน PK
    •    คอลัมน์ทุกคอลัมน์ต้องขึ้นกับ PK อาจเป็นโดยทางตรงหรือทางอ้อมก็ได้
    •    ทุกคอลัมน์ต้องเป็นค่าโดดๆ (มีค่าเดียวไม่ใช่ดาต้าคอลเลคชัน เช่นอาร์เรย์ หรือค่าหลายค่าที่คั่นด้วยลูกน้ำ)

    6.9.2. การทำ 1NF ทางปฏิบัติ
    การทำ 1NF คือการขจัดคอลัมน์ที่มีข้อมูลซ้ำกันด้วยการสร้างตารางใหม่ โดยให้ตารางเดิมเป็น PT ตารางใหม่เป็น CT แล้วเชื่อมโยงกันแบบ master-detail อันเป็นความความสัมพันธ์แบบหนึ่งต่อหลาย ยกตัวอย่างเช่นในภาพ 6-7 จะเห็นว่าตารางทางขวามือเป็นข้อมูลดิบ คอลัมน์ซ้ายสุดคือ Author มีข้อมูลซ้ำกันอยู่สามกลุ่มคือนักเขียนชื่อ Azimov, Blish และ Niven ซึ่งเป็นนักเขียนนิยายวิทยาศาสตร์สามคน สาเหตุที่มีข้อมูลซ้ำเพราะนักเขียนแต่ละคนมีหนังสือมากกว่าหนึ่งเล่ม

    คอลัมน์ถัดมาคือ Title เป็นคอลัมน์ซึ่งทำหน้าที่เก็บรายชื่อหนังสือ ก็มีข้อมูลซ้ำกันเป็นกลุ่มๆ อีกเพราะหนังสือหนึ่งเรื่องอาจมีการพิมพ์หลายครั้งหรือมีจำหน่ายในรูปแบบต่าง ๆ (เช่นปกอ่อน ปกแข็ง เป็นเทปบันทึกเสียง ฯลฯ)   คอลัมน์ถัดมาคือ ISBN หรือเลขเรียกหนังสือซึ่งไม่มีข้อมูลซ้ำกันเลย เพราะหมายเลข ISBN แตกต่างกันไปในหนังสือแต่ละเล่มเสมอ คอลัมน์สุดท้ายซึ่งเป็นคอลัมน์ขวาสุดคือ PAGE หรือจำนวนหน้า มีข้อมูลซ้ำกันบ้างแต่ไม่มีความสัมพันธ์ใดๆ ระหว่างกัน การมีจำนวนหน้าเท่ากันเป็นเพียงความบังเอิญเท่านั้น

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

    007

    ภาพ 6-7 : ตารางในระดับ 0NF

     

    ในตัวอย่างนี้ Azimov คือผู้มีหนังสือมากสุดถึงสิบเอ็ดเล่ม ผู้เขียนจึงเผื่อคอลัมน์ไว้เก็บรายชื่อหนังสือถึงสิบเอ็ดคอลัมน์ แต่ Blish มีหนังสือเพียงสองเล่ม และ Niven มีหนังสือเพียงสามเล่ม ดูในรูป 6-8 ท่านจะเห็นว่าตารางในระดับ 0NF ไม่ดีเพราะมีข้อมูลที่เป็น NULL มากจึงมีพื้นที่เสียเปล่าไปเป็นจำนวนมาก

    008

    ภาพ 6-8 : ตารางในระดับ 0NF ไม่ดีเพราะมีข้อมูลที่เป็น NULL และพื้นที่เสียเปล่าไปจำนวนมาก

     

    หากต้องการใช้ตารางในระดับ 0NF และต้องการประหยัดเนื้อที่ก็สามารถทำได้โดยกำหนดให้มีคอลัมน์ TITLE เพียงอันเดียว (ไม่ใช่มี 11 อันอย่างในภาพ 6-7)  แล้วเก็บข้อมูลหนังสือทุกเล่มไว้ภายในคอลัมน์เดียวกัน โดยใช้เครื่องหมายพิเศษเช่นลูกน้ำ เพื่อแบ่งชื่อหนังสือแต่ละชื่อออกจากกัน ดังแสดงในภาพ 6-9

    009

    ภาพ 6-9 : การเก็บข้อมูลหนังสือทุกเล่มไว้ภายในคอลัมน์เดียวแล้วใช้เครื่องหมายลูกน้ำแบ่งชื่อหนังสือออกจากกัน

     

    ภาพ 6-10 เป็นแผนภูมิ ER แสดงการทำ 1NF เพื่อกำจัดคอลัมน์ที่ซ้ำกันโดยสร้างตารางขึ้นอีกตารางหนึ่ง จะได้เป็น PT คือ Author และ CT คือ Book สองตารางนี่เชื่อมโยงกันด้วยความสัมพันธ์แบบ master-detail อันเป็นความสัมพันธ์แบบหนึ่งต่อหลาย

    010

    ภาพ 6-10 : การทำ 1NF เพื่อกำจัดคอลัมน์ที่ซ้ำกันโดยสร้างตารางขึ้นอีกตารางหนึ่ง

     

    ภาพ 6-11 เป็นแผนภูมิ ER แสดงการทำ 1NF ในลำดับต่อไปคือการนิยาม PK ทั้งใน PT และ CT โดยกำหนดให้ PT มี  PK เป็นคอลัมน์ชื่อนักเขียน (ไม่ได้สร้างกุญแจแทนขึ้นจากชื่อนักเขียน)  ส่วน CT มี PK เป็นแบบกุญแจร่วม (composite key หรือ compound key คือมีข้อมูล  ซ้ำกันอยู่ในทั้งสองตาราง) คือใช้ชื่อหนังสือ, รหัสหนังสือ  และชื่อนักเขียนเป็น PK และใช้คอลัมน์ชื่อนักเขียนทำหน้าที่เป็น FK เพื่อเชื่อมโยงกลับไปยัง PT

    011

    ภาพ 6-11 : การนิยาม PK ทั้งใน PT และ CT

     

    ภาพ 6-12 คือผลลัพธ์จากการทำ 1NF จะเห็นว่า 1NF ดีกว่าตาราง 0NF ตรงที่เป็นฐานข้อมูลแบบสัมพันธ์ เก็บข้อมูลได้โดยไม่จำกัดจำนวนหนังสือ (ใน 0NF ผู้เขียนต้องกำหนดจำนวนคอลัมน์ TITLE เท่ากับจำนวนหนังสือที่คิดว่ามากที่สุด ในตัวอย่างที่ผ่านมากำหนดไว้ 11 เล่ม หากมีนักเขียนที่มีหนังสือเกิน 11 เล่มก็จะเก็บไม่ได้)  และมีโครงสร้างที่เป็นระเบียบดีกว่าเดิม แต่ 1NF ยังมีปัญหาเรื่องข้อมูลซ้ำซ้อน ทำให้ยังเปลืองเนื้อที่เก็บในฮาร์ดดิสก์อยู่ดี

    012

    ภาพ 6-12 : ผลลัพธ์ของการทำ 1NF คือตารางสองตาราง PT คือ Author (ทำหน้าที่เป็น master) และ CT คือ Book (ทำหน้าที่เป็น detail)

     

     

    นอร์มัลไลเซชัน : ตอน 2

     

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

     

    นอร์มัลไลเซชัน : ตอน 2

     

     6.4.4. กุญแจเสนอ
    กุญแจเสนอ (Candidate Key ย่อ CK) คือคอลัมน์ที่อาจนำมาใช้ทำ PK ได้ ในภาพ 6-4 ทางซ้ายสุดคือตารางชื่อ Customer  กรอบห้ากรอบทางขวาแสดงคอลัมน์ต่างๆ ที่มีภาวะเป็น CK คือเป็นคอลัมน์ที่อาจนำมาใช้เป็น PK ได้ โปรดสังเกตว่ามีสองตารางที่มี CK มากกว่าหนึ่งคอลัมน์ร่วมกันเป็น PK แม้ CK บางแบบในภาพนี้อาจสุดโต่งไปสักหน่อยแต่ก็ใช้อธิบายแนวคิดของ CK ได้ดี

    004

    ภาพ 6-4 : ตารางและกุญแจเสนอที่อาจนำมาใช้ได้ห้าแบบ

     

    6.4.5. การพาดพิงสมบูรณ์
    การพาดพิงสมบูรณ์ (Full Functional Dependence ย่อ FFD) X เป็น FFD ของ Y เมื่อค่าของ X กำหนดค่าของ Y แต่ค่าของ X เมื่อร่วมกับค่าของ Z ไม่ได้กำหนดค่าของ Y กล่าวอีกอย่างคือค่าของ Y ขึ้นกับค่าของ X เท่านั้น ยกตัวอย่างเช่นตารางในภาพ 6-5 ซึ่งเหมือนตารางในภาพ 6-4 แต่เพิ่มคอลัมน์ Population ขึ้นอีกหนึ่งคอลัมน์ โปรแกรมสังเกตว่า Population ขึ้นกับค่าของ COUNTRY แต่ไม่ขึ้นกับ COUNTRY + RATE ดังนั้น  Population เป็น FFD กับ  COUNTRY แต่ไม่เกี่ยวข้องกับ RATE ดังนั้นในตัวกำหนด (ในตัวอย่างนี้คือ X หรือ Population) จะเป็นกุญแจผสมไม่ได้

    005

    ภาพ 6-5 : การพาดพิงสมบูรณ์

     

    6.4.6. การพาดพิงหลายค่า
    การพาดพิงหลายค่า (Multiple valued dependency ย่อ MVD)   MVD คือกรณีที่ตารางมีสองคอลัมน์ และคอลัมน์หนึ่งเป็น PK  และอีกคอลัมน์หนึ่งมีข้อมูลแบบคอลเลคชัน (Collection ข้อมูลเป็นกลุ่ม) เช่นอาร์เรย์หรือข้อความที่ขั้นด้วยลูกน้ำ ยกตัวอย่างเช่นตารางในภาพ 6-6 ตารางล่างมีคอลัมน์ SKILLS เป็น MVD ของคอลัมน์ NAME ส่วนตารางคอลัมน์ SKILLS ไม่เป็น MVD ของคอลัมน์ NAME เพราะภายในตารางมีคอลัมน์มากกว่าสองคอลัมน์

    006

    ภาพ 6-6 : การพาดพิงหลายค่า

     

    6.4.7. การพาดพิงเป็นวงรอบ
    การพาดพิงเป็นวงรอบ (Cyclic Dependency ย่อ CD) ค่าของ X ขึ้นกับค่าของ Y และในขณะเดียวกันค่าของ Y ก็ขึ้นกับค่าของ X ด้วย (ไม่ว่าจะในทางตรงหรือในทางอ้อม)  CD มักเกิดขึ้นเมื่อตารางมี PK เป็น CK จากคอลัมน์สามคอลัมน์หรือมากกว่า ยกตัวอย่างเช่น X สัมพันธ์กับ Y, Y สัมพันธ์กับ Z และ X สัมพันธ์กับ Z นั่นคือ Z ย้อนกลับไปพาดพิงกับ X วนไปเช่นนี้

     

    6.4.8. การพาดพิงบางส่วน
    การพาดพิงบางส่วน (Partial Dependency ย่อ PD) เกิดขึ้นเมื่อคอลัมน์ใดคอลัมน์หนึ่งมีภาวะ FFD กับคอลัมน์ที่เป็น PK ซึ่งเป็น CK

     

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

     

    6.6. นิยามนอร์มัลฟอร์มเชิงวิชาการ
    ต่อไปนี้เป็นนิยามนอร์มัลฟอร์มเชิงวิชาการซึ่งเป็นที่ยอมรับกันทั่วไป

    6.6.1. นอร์มัลฟอร์มระดับที่หนึ่ง
    นอร์มัลฟอร์มระดับที่หนึ่ง (1st Normal Form ย่อ 1NF) ตัดข้อมูลที่ซ้ำกันเป็นกลุ่ม ทำให้สามารถจำแนกข้อมูลทุกแถวในทุกตารางได้ด้วย PK พูดอีกอย่างหนึ่งคือทุกคอลัมน์ต้องขึ้นกับคอลัมน์ที่เป็น PK

    6.6.2. นอร์มัลฟอร์มระดับที่สอง
    นอร์มัลฟอร์มระดับที่สอง (2nd Normal Form ย่อ 2NF) ทำให้คอลัมน์ที่ไม่ใช่กุญแจเป็น FFD ของคอลัมน์ที่เป็น PK และห้ามไม่ให้มี PD

    6.6.3. นอร์มัลฟอร์มระดับที่สาม
    นอร์มัลฟอร์มระดับที่สาม (3rd Normal Form ย่อ 3NF) กำจัด TD ซึ่งก็คือการกำจัดคอลัมน์ที่พาดพิงทางอ้อมกับคอลัมน์ที่เป็น PK ที่ต้องกำจัดเพราะคอลัมน์นั้นจะ FD กับคอลัมน์ที่ขึ้นกับคอลัมน์ซึ่งเป็น PK

    6.6.4. นอร์มัลฟอร์มแบบบอยซ์-คอดด์
    นอร์มัลฟอร์มแบบบอยซ์-คอดด์ (Boyce-Codd Normal Form ย่อ BCNF) การทำให้คอลัมน์ที่เป็นตัวกำหนดทั้งหมดในตารางกลายเป็นกุญแจเสนอ หากพบว่ามีคอลัมน์ที่เป็นกุญแจเสนอเพียงคอลัมน์เดียวจะถือว่า BCNF และ 3NF มีระดับเท่ากัน

    6.6.5. นอร์มัลฟอร์มระดับที่สี่
    นอร์มัลฟอร์มระดับที่สี่ (4th Normal Form ย่อ 4NF) เป้าหมายของนอร์มัลฟอร์มระดับนี้คือการกำจัด MVD

    6.6.6. นอร์มัลฟอร์มระดับที่ห้า
    นอร์มัลฟอร์มระดับที่ห้า (5th Normal Form ย่อ 5NF) กำจัด CD บางครั้งเรียกระดับนี้ว่านอร์มัลฟอร์มแบบฉาย (Projection Normal Form ย่อ PJNF)

    6.6.7. นอร์มัลฟอร์มกุญแจโดเมน
    นอร์มัลฟอร์มกุญแจโดเมน(Domain Key Normal Form ย่อ DKNF) เป้าหมายของนอร์มัลฟอร์มระดับนี้คือการทำนอร์มัลไลเซชันระดับสูงสุด

     

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

    การทำนอร์มัลไลเซชันในระดับสูงขึ้น (ระดับ BCNF, 4NF, 5NF และ DKNF) มักให้ผลลัพธ์ที่ไม่ดีนักและไม่ค่อยจำเป็น งาน OLTP และงาน  OLAP ส่วนใหญ่ต้องการนอร์มัลไลเซชันเพียงสามระดับแรกเท่านั้น การทำนอร์มัลไลเซชันมากระดับเกินไปมีข้อเสียคือจะเกิดตารางขึ้นจำนวนมาก ทำให้คิวรียาว ซับซ้อนและทำงานช้า เพราะต้องจอยตารางจำนวนมาก

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

     

    6.7. นิยามนอร์มัลฟอร์มแบบเข้าใจง่าย
    หากท่านอ่านนิยามนอร์มัลฟอร์มเชิงวิชาการแล้วงงก็อย่าเพิ่งท้อใจ ลองอ่านนิยามในหัวข้อนี้ซึ่งเป็นนิยามนอร์มัลฟอร์มแบบเข้าใจง่าย

    6.7.1. นิยาม 1NF
    ขจัดคอลัมน์ที่มีข้อมูลซ้ำกันด้วยการสร้างตารางใหม่ โดยให้ตารางเดิมเป็น PT ตารางใหม่เป็น CT แล้วเชื่อมโยงกันแบบ master-detail ซึ่งเป็นความความสัมพันธ์แบบหนึ่งต่อหลาย  ยกตัวอย่างเช่นกำหนดให้ PT เก็บรายชื่อนักเขียนทั้งหมดของสำนักพิมพ์หนึ่ง  CT เก็บรายละเอียดหนังสือต่างๆ ที่นักเขียนเหล่านั้นเขียน แล้วสร้าง PK ในทั้งสองตาราง 

    กำหนดให้ PT มี PK เป็นคอลัมน์ชื่อนักเขียน ส่วน CT มี PK เป็น CK (composite key หรือ compound key คือมีข้อมูล  ซ้ำกันอยู่ในทั้งสองตาราง) คือใน CT ใช้ชื่อหนังสือบวกชื่อนักเขียนบวกรหัส ISBN เป็น PK และใช้คอลัมน์ชื่อนักเขียนทำหน้าที่เป็น FK เพื่อเชื่อมโยงกับ PT

    6.7.2. นิยาม 2NF
    ทำคล้ายๆ 1NF แตกต่างกันที่ใน 1NF จะเน้นขจัดคอลัมน์ที่มีข้อมูลซ้ำ แต่ 2NF จะเน้นขจัดตัวข้อมูลที่ซ้ำกัน ใน 1NF ได้ผลลัพธ์เป็นวามความสัมพันธ์แบบหนึ่งต่อหลาย แต่ 2NF ได้ผลลัพธ์เป็นหลายต่อหนึ่ง CT จะมี PK แบบเดี่ยว (ไม่ใช่แบบร่วมอย่างใน 1NF) และ PT จะมี FK เพื่อใช้เชื่อมไปยัง CT

    6.7.3. นิยาม 3NF
    การอธิบาย 3NF โดยไม่ใช้คำจาร์กอนค่อนข้างจะลำบากอยู่เหมือนกัน ผู้เขียนขอยกยอดเรื่อง 3NF ไปอธิบายในหัวข้อต่างหากของมันเอง

    6.7.4. นิยาม NF ที่สูงกว่าระดับที่สาม
    อย่างที่เรียนไปแล้วว่าด้วยเหตุผลหลายๆ ประการนักออกแบบฐานข้อมูลมักไม่ทำนอร์มัลไลเซชันเกินระดับสามยกเว้นกรณีพิเศษจริงๆ

     

     

    February 13

    นอร์มัลไลเซชัน : ตอน 1

     

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

     

    นอร์มัลไลเซชัน : ตอน 1

     

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

    หัวข้อที่ท่านจะได้เรียนในบทนี้มีดังนี้
    •    เตรียมการนอร์มัลไลเซชัน
    •    นิยามนอร์มัลไลเซชัน
    •    ประโยชน์ของนอร์มัลไลเซชัน
    •    ข้อควรระวังในการทำนอร์มัลไลซ์
    •    นิยาม อะนอมาลิ
    •    นิยามคำสำคัญในการทำนอร์มัลไลซ์
    •    นิยามนอร์มัลฟอร์มแต่ละระดับ
    •    วิธีทำ 1NF
    •    วิธีทำ 2NF
    •    วิธีทำ 3NF
    •    วิธีทำ BCNF
    •    วิธีทำ 4NF
    •    วิธีทำ 5NF
    •    วิธีทำ DKNF

     

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

     

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

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

    นอร์มัลไลเซชันเป็นกระบวนการที่สั่งสม คือเริ่มทำจากระดับเบื้องต้นก่อน แล้วจึงเพิ่มความเข้มข้นขึ้นทีละขั้น โดยแต่ละขั้นตอนจะเป็นผลจากขั้นตอนก่อนหน้า ยกตัวอย่างเช่น ก่อนทำนอร์มัลฟอร์ม (Normal Form ย่อ FN) ระดับที่ 2จะต้องทำ NF ระดับที่ 1 ก่อน และก่อนที่จะทำ NF ระดับที่ 3 ได้จะต้องมี NF ระดับที่ 2 ก่อน

     

    6.1.2. ประโยชน์ของนอร์มัลไลเซชัน
    กระบวนการลดทอนความซ้ำซ้อนของข้อมูลมีประโยชน์ ดังนี้
    •    ประหยัด: ลดเนื้อที่ๆ จำเป็นต้องใช้เก็บข้อมูลในฮาร์ดดิสก์
    •    ระเบียบ: ทำให้ข้อมูลมีโครงสร้างที่เป็นแบบแผนมากขึ้น
    •    สะดวก: ช่วยให้การเข้าถึงหรือเปลี่ยนแปลงข้อมูลหนึ่งชิ้น (เช่นหนึ่งแถว) สามารถทำได้กับตารางเพียงตารางเดียว ไม่ต้องทำกับกลุ่มของตาราง

     

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

     

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

     

    6.2. นอร์มัลฟอร์ม
    นอร์มัลไลเซชันคือการออกแบบฐานข้อมูลให้อยู่ในสภาพ "นอร์มัลฟอร์ม" (normal form ย่อ NF) ระดับต่างๆ เช่น ระดับที่ 1 (1NF) ระดับที่ 2 (2NF) คำว่านอร์มัลฟอร์มเป็นคำที่ถูกบัญญัติโดยคอดด์ นอกจากจะบัญญัติคำว่านอร์มัลฟอร์มแล้ว คอดด์ยังเป็นผู้นิยามนอร์มัลไลเซชันสามระดับแรกด้วย (คือ 1NF, 2NF และ 3NF) การออกแบบฐานข้อมูลไม่จำเป็นต้องทำ NF ให้ครบทุกระดับเสมอไปเพราะการทำ NF หลายๆ ระดับกับฐานข้อมูล OLAP อาจทำให้ประสิทธิภาพโดยรวมลดลง

     

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

    อะนอมาลิทำให้เกิดความผิดพลาดเมื่อเพิ่มลบหรือเปลี่ยนแปลงข้อมูลในลักษณะต่างๆ ดังนี้
    •    อะนอมาลิของการแทรกข้อมูล: ความผิดปรกติเช่นนี้เกิดเมื่อแทรกข้อมูลใน CT โดยไม่ได้แทรกข้อมูลใน PT ก่อน ยกตัวอย่างเช่นในภาพ 6-1 จะเห็นว่า Author เป็น PT ทำหน้าที่เก็บรายชื่อนักเขียน Book คือ CT ทำหน้าที่เก็บรายละเอียดของหนังสือ การแทรกข้อมูลใหม่ตามปรกติต้องแทรกข้อมูลนักเขียนเข้าไปใน PT ก่อน แล้วค่อยแทรกข้อมูลหนังสือ (ที่นักเขียนผู้นั้นเขียน) เข้าสู่ CT หากผู้เขียนแทรกข้อมูลหนังสือก่อนที่จะแทรกข้อมูลนักเขียนจะถือเป็นอะนอมาลิของการแทรกข้อมูล

    001

    ภาพ 6-1 : อะนอมาลิของการแทรกข้อมูล

     

    •    อะนอมาลิของการลบข้อมูล: ความผิดปรกติเช่นนี้เกิดเมื่อผู้เขียนลบข้อมูลใน PT โดยไม่ได้ลบข้อมูลทั้งหมด (ที่สัมพันธ์กัน) ใน CT เสียด้วย ยกตัวอย่างเช่นในภาพ 6-2 จะเห็นว่า Author เป็น PT ทำหน้าที่เก็บรายชื่อนักเขียน Book เป็น CT ทำหน้าที่เก็บรายละเอียดของหนังสือ การลบข้อมูลนักเขียนหนึ่งคนตามปรกติต้องลบข้อมูลหนังสือของนักเขียนผู้นั้นทั้งหมดออกจาก CT ก่อน แล้วค่อยลบข้อมูลนักเขียนจาก PT หากผู้เขียนลบข้อมูลนักเขียนใน PT ก่อน ผู้เขียนจะขาดตัวเชื่อมโยงเพื่อลบข้อมูลหนังสือออกจาก CT (คือแถวข้อมูลใน CTกลายเป็นกำพร้า)  ซึ่งถือว่าเป็นอะนอมาลิของการลบข้อมูล

    002

    ภาพ 6-2 : อะนอมาลิของการลบข้อมูล

     

    •    อะนอมาลิของการอัพเดตข้อมูล: เป็นความผิดปรกติลักษณะเดียวกับความผิดปรกติของการลบข้อมูล เมื่อมีการอัพเดตข้อมูล ข้อมูลต้องถูกอัพเดตทั้งที่ PT และ CT เพื่อป้องกันไม่ให้เกิดแถวข้อมูลกำพร้าใน CT

     

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

     

    6.4.1. การพาดพิง
    การพาดพิง (Functional Dependency ย่อ FD) Y เป็น FD ของ X เมื่อค่าของ Y ขึ้นกับค่าของ X ยกตัวอย่างเช่น หาก Y = X + 1 ค่าของ X ย่อมส่งผลต่อค่าของ Y ดังนั้น Y จึงเป็น FD ของ X ยกตัวอย่างเช่นตารางในภาพ 6-3 เป็นตารางเก็บข้อมูลสกุลเงิน คอลัมน์ FXCODE เก็บรหัสย่อของสกุลเงิน คอลัมน์ CURRENCY เก็บชื่อสกุลเงิน คอลัมน์ RATE เก็บอัตราแลกเปลี่ยน และคอลัมน์ COUNTRY เก็บชื่อประเทศ ในตารางนี้ข้อมูลในคอลัมน์ CURRENCY เป็น FD ของข้อมูลในคอลัมน์ FXCODE

     

    6.4.2. ตัวกำหนด
    ตัวกำหนด (Determinant) X เป็นตัวกำหนดของ Y เมื่อค่าของ Y ขึ้นกับค่าของ X ยกตัวอย่างเช่นตารางในภาพ 6-3 ข้อมูลในคอลัมน์ FXCODE เป็นตัวกำหนดของข้อมูลในคอลัมน์ CURRENCY

     

    6.4.3. การพาดพิงทางอ้อม
    การพาดพิงทางอ้อม (Transitive Dependence ย่อ TD) Z เป็น TD ของ X เมื่อค่าของ X กำหนดค่าของ Y และค่าของ Y กำหนดค่าของ Z ดังนั้นค่าของ Z จึงขึ้นกับค่าของ X โดยอ้อมผ่านความสัมพันธ์ของ Y ยกตัวอย่างเช่นตารางในภาพ 6-3 จะเห็นว่า ค่าของคอลัมน์ RATE ขึ้นกับค่าของคอลัมน์ CURRENCY ซึ่งค่าของคอลัมน์ CURRENCYขึ้นกับค่าของคอลัมน์ COUNTRY อีกต่อหนึ่ง ดังนั้นคอลัมน์ RATE จึงเป็น TD ของคอลัมน์ COUNTRY

    003

    ภาพ 6-3 : การพาดพิง ตัวกำหนด และการพาดพิงทางอ้อม

     

     

    February 06

    แผนภูมิ ER: ตอน 2

     

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

     

    แผนภูมิ ER: ตอน 2

     

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

    กุญแจสามารถทำหน้าที่เป็นได้ทั้งกุญแจและเป็นดรรชนี เมื่อทำหน้าที่เป็นดรรชนีมันคัดลอกคอลัมน์ในตารางไปทำเป็นโครงสร้างที่ใช้ค้นข้อมูลได้อย่างมีประสิทธิภาพ (เช่นเป็นโครงสร้างแบบต้นไม้ไบนารี) เมื่อทำหน้าที่เป็นกุญแจมันใส่เครื่องหมายพิเศษไว้ในคอลัมน์เพื่อระบุว่าคอลัมน์นั้นทำหน้าที่เชื่อมโยงกับตารางอื่นๆ กุญแจมีสามแบบคือกุญแจหลัก (Primary Key ย่อ PK) กุญแจเอกลักษณ์ (Unique Key ย่อ UK) และกุญแจนอก (Foreign Key ย่อ FK)

     

    5.2.1. นิยามกุญแจหลัก
    PK ทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง การแยกแยะนี้เป็นสิ่งจำเป็น เพราะหากไม่มีเราจะไม่สามารถค้นหาข้อมูลเฉพาะแถวที่ต้องการได้ ภาพ 5-8 แสดง PK ของตาราง Author และตาราง Publication

    008

    ภาพ 5-8 : กุญแจหลักทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง

     

    5.2.2. นิยามกุญแจเอกลักษณ์
    UK เหมือน PK คือทำหน้าที่แยกแยะความแตกต่างระหว่างข้อมูลแถวต่างๆ ในตาราง โดยค่าของ UK จะไม่มีการซ้ำกัน ชนิดข้อมูลของ UK มักเป็นแบบเลขจำนวนเต็ม (สาเหตุที่ไม่ใช้ชื่อนักเขียนหรือชื่อหนังสือเป็นค่าของ UK ผู้เขียนจะอธิบายในบทต่อไป) เนื่องจากเราใช้ตัวเลขแทนชื่อเราจึงเรียกกุญแจเอกลักษณ์ได้อีกอย่างหนึ่งว่ากุญแจแทน (Surrogate Key ย่อ SK)

    ยกตัวอย่างเช่นตาราง Author มีคอลัมน์ AUTHOR_ID เป็น UK เพราะมันมีค่าเป็นตัวเลขจำนวนเต็มซึ่งแทนชื่อของผู้เขียน (แทนค่าของคอลัมน์ NAME) แม้โอกาสน้อยมากที่จะมีผู้เขียนชื่อซ้ำกันแต่ SK ก็ยังมีประโยชน์ในการเพิ่มประสิทธิภาพ UK ต่างจาก PK ที่เราใช้เพื่อกำหนดความสัมพันธ์ระหว่างตาราง แต่เราจะไม่ใช้ UK เพื่อการนี้

    ต่อไปนี้จะยกตัวอย่างตารางที่มี PK และ UK คิวรีในภาพ 5-9 ทำหน้าที่สร้างตาราง Author

    009

    ภาพ 5-9 : คิวรีทำหน้าที่สร้างตาราง Author

     

    โปรดสังเกตว่าผู้เขียนกำหนดให้คอลัมน์ author_id เป็น PK และกำหนดให้คอลัมน์ name เป็น UK (คือไม่อนุญาตให้มีข้อมูลซ้ำกัน) เพื่อป้องกันไม่ให้ผู้ใช้ป้อนข้อมูลนักเขียนคนเดียวกันซ้ำมากกว่าหนึ่งแถว หรือป้องกันไม่ให้นักเขียนสองคนใช้นามปากกาซ้ำกัน

     

    5.2.3. นิยามกุญแจนอก
    FK คือสำเนาของ PK ที่ถูกคัดลอกจาก PT ไปใส่ CT เพื่อให้ทั้งสองตารางสามารถเชื่อมโยงกันได้ FK ทำให้เราแยกแยะได้ว่าข้อมูลแถวใดใน CT สัมพันธ์กันข้อมูลแถวใดใน PT

    ในภาพ 5-10 จะเห็นตาราง Publication มี FK ชื่อ author_id (FK) เชื่อมโยงกับตาราง Author เพราะนักเขียนหนึ่งคนอาจเขียนหนังสือไว้หลายเล่ม ยกตัวอย่างเช่นผู้เขียนชื่อ Larry Niven (นักเขียนนิยายวิทยาศาสตร์ที่ผู้เขียนชื่นชอบ) มีรหัสประจำตัว 4 และมีหนังสือสี่เล่ม ดังนั้นในตาราง Author จะมี author_ID ที่เป็น 4 อยู่หนึ่งแถวและในตาราง Publication จะมี author_ID เป็น 4 อยู่สี่แถว

    ดูภาพ 5-10 อีกครั้ง โปรดสังเกตว่าตาราง CoAuthor มีการเชื่อมโยงไปยังสองตาราง คือตาราง Author และตาราง Publication ที่เป็นเช่นนั้นเพราะผู้เขียนร่วมอาจเขียนหนังสือร่วมกับนักเขียนมากกว่าหนึ่งคน และในขณะเดียวกันก็อาจมีหนังสือ (ที่ตนเองร่วมเขียน) ได้มากกว่าหนึ่งเล่มด้วย ดังนั้นตาราง CoAuthor จึงมี FK ถึงสองอัน อันแรกชื่อ author_id (FK) ใช้เชื่อมโยงกับตาราง Author และอันที่สองคือ publicaction_ID เพื่อใช้เชื่อมโยงกับตาราง Publication

    010

    ภาพ 5-10 : FK ทำให้เราแยกแยะได้ว่าข้อมูลแถวใดใน CT สัมพันธ์กันข้อมูลแถวใดใน PT

     

    ภาพ 5-11 เป็นคิวรีเพื่อสร้างตาราง Publication ซึ่งแสดงให้เห็นวิธีสร้างตารางที่มีกุญแจครบทั้งสามแบบ คือมีทั้ง PK, FK และ UK  

     

    011

    ภาพ 5-11 : คิวรีเพื่อสร้างตาราง Publication

    โปรดสังเกตว่าคิวรีในภาพ 5-11 ผู้เขียนกำหนดให้คอลัมน์ publication_id เป็น PK ส่วน subject_id และ author_id เป็น FK เพื่อใช้เชื่อมโยงกับตาราง Subject และ Author ตามลำดับ ส่วนคอลัมน์ title ถูกกำหนดให้เป็น UK เพื่อป้องกันไม่ให้ผู้ใช้ป้อนข้อมูลชื่อหนังสือซ้ำกัน

     

    5.3. สาธิตการออกแบบฐานข้อมูลอย่างง่าย
    ในหัวข้อนี้ผู้เขียนจะแสดงวิธีออกแบบตารางสองตารางที่มีการเชื่อมโยงกันอย่างง่ายๆ สมมุติว่าเรามีข้อมูลอย่างที่เห็นในภาพ 5-12 ข้อมูลแต่ละบรรทัดคือข้อมูลของเพลงหนึ่งเพลง คอลัมน์แรก Band name คือชื่อวงดนตรี คอลัมน์ที่สอง Track คือชื่อเพลง คอลัมน์สุดท้าย Description คือคำวิจารณ์ของเพลงนั้น

    012

    ภาพ 5-12: ข้อมูลเพื่อสาธิตการออกแบบฐานข้อมูลอย่างง่าย

     

    สมมุติว่าผู้เขียนถูกสั่งให้ทำสิ่งต่างๆ ดังนี้
    1.    นำข้อมูลนี้มาออกแบบสร้างเป็น PT และ CT ที่เชื่อมโยงกันแบบหนึ่งต่อหลาย
    2.    กำหนด PK ให้แก่ตารางทั้งสอง
    3.    กำหนด FK ใน CT

     

    5.3.1. ตัวอย่างการออกแบบ
    ข้อมูลดิบมีสามคอลัมน์ เราต้องสร้างตารางสองตารางจากสามคอลัมน์นี้ ตารางที่ 1 มีหนึ่งคอลัมน์ ตารางที่ 2 มีสองคอลัมน์ การสร้างความสัมพันธ์แบบหนึ่งต่อหลายทำได้โดยดูข้อมูลที่ซ้ำกัน ในภาพ 5-12 อาจดูยากเพราะข้อมูลไม่ได้เรียงแต่กระจายอยู่อย่างไม่มีแบบแผน

    การออกแบบตารางตามโจทย์สามข้อนี้มีสิ่งที่ควรพิจารณาดังนี้
    1.    วงดนตรีหนึ่งวงปรกติจะมีเพลงมากกว่าหนึ่งเพลง เนื่องจากเราต้องการเชื่อมโยงความสัมพันธ์แบบหนึ่งต่อหลายโดย  ดังนั้น "หนึ่ง" คือ "หนึ่งวงดนตรี" และ "หลาย" คือ "หลายเพลง"
    2.    ชื่อวงในคอลัมน์แรกมีการซ้ำกัน แต่คอลัมน์อื่นๆ ไม่มีข้อมูลซ้ำกันเลย ข้อเท็จจริงนี้สนับสนุนแนวคิดในข้อที่หนึ่ง
    3.    เนื่องจากคอลัมน์แรกมีข้อมูลซ้ำกัน จึงเหมาะนำมาสร้างเป็น PT คอลัมน์ที่เหลืออีกสองคอลัมน์ไม่มีข้อมูลซ้ำจึงเหมาะนำมาใช้สร้างเป็น CT
    4.    ข้อมูลชื่อเพลงจะต้องไม่มีการซ้ำกัน

    ภาพข้างล่างแสดงทางเลือกสามแบบในการออกแบบ ทางเลือกที่ 3 ดีที่สุดเพราะ SK ถูกนำมาใช้เป็น PK และ FK  นั้นคือเรากำหนด band_id และ track_id เป็นเลขจำนวนเต็มเพื่อใช้เป็นตัวเชื่อมโยงแทนที่จะใช้ชื่อวงหรือชื่อเพลง ทั้งทางเลือกที่ 3 และที่ 2ใช้การกำหนดความสัมพันธ์แบบจำแนกไม่ได้ คือ CT ไม่ขึ้นกับ PT คือ PK ของ CT ไม่ใช่กุญแจเดียวกันกับ PK ในตารางแม่

    013

    ภาพ 5-13 : แผนภูมิ ER แสดงการออกแบบความสัมพันธ์ระหว่างตาราง Band และ Track

     

    ส่วนทางเลือกที่ 2 ไม่ค่อยดี (แต่ก็ยังดีกว่าทางเลือกที่ 1) เพราะ PK ในตาราง Band และ FK ในตาราง Track ไม่ได้ใช้ SK (คือไม่ได้ใช้เลขรหัสแทนชื่อวง) จึงมีประสิทธิภาพต่ำกว่าทางเลือกที่ 3 ส่วนทางเลือกที่ 1 มีประสิทธิภาพต่ำที่สุดเพราะใช้ชื่อวง (band_name) เป็นตัวเชื่อมโยง คือใช้ชื่อวงเป็นทั้ง PK ในตาราง Band และ PK ในตาราง Track ด้วย การทำเช่นนี้ทำให้ชื่อวงมีฐานะเป็นกุญแจร่วม (Composite Key หรือ Compound Key ย่อ CK) คือมีข้อมูล (ชื่อวง) ซ้ำกันอยู่ในทั้งสองตารางซึ่งไม่ดี เพราะมีข้อมูลซ้ำกันจำนวนมากซึ่งเป็นสิ่งที่เราต้องการหลีกเลี่ยงตั้งแต่แรก

     

    5.3.2. นิยามบูรณภาพสัมพันธ์
    บูรณภาพสัมพันธ์ (Referential Integrity ย่อ RI)คือการควบคุมความคงเส้นคงว่าของความสัมพันธ์ระหว่างค่าของ PK และ FK  ซึ่งเป็นค่าที่เราใช้เชื่อมโยง PT และ CT เข้าด้วยกัน การควบคุมทำได้โดยใช้กลไกที่เรียกว่าข้อบังคับ (constraint) โปรแกรม RDBMS ส่วนใหญ่จะมีกลไกนี้ฝังมาในตัวอยู่แล้ว ยกตัวอย่างเช่นใน PT  คอลัมน์ที่เป็น PK จะมีค่าซ้ำกันไม่ได้ ตัวอย่างในหัวข้อที่ผ่านมา PT คือ Band มี PK เป็นชื่อวงดนตรี ค่านี้จะซ้ำกันไม่ได้ เพราะค่านี้ถูกใช้เป็น FK ใน CT  ดังนั้นใน PT จึงมีข้อมูลนี้ได้เพียงแถวเดียวเท่านั้น

    เพื่อคงไว้ซึ่ง RI การออกแบบฐานข้อมูลจำเป็นต้องครอบคลุมประเด็นต่างๆ ต่อไปนี้
    •    ตารางที่เก็บ PK จะถูกถือว่าเป็น PT และตารางที่เก็บ FK จะถูกถือว่าเป็น CT
    •    เมื่อแทรกข้อมูลแถวใหม่เข้าสูง CT ค่าของ FK ของข้อมูลนั้นต้องเป็นค่ามีปรากฏอยู่ใน PT หรือจะเป็นค่า  NULL ก็ได้
    •    FK จะมีค่าเป็น  NULL ก็ได้ แต่ PK จะมีค่าเป็น NULL ไม่ได้
    •    การเปลี่ยนแปลงค่าใน PT เป็นสิ่งต้องห้าม หากการเปลี่ยนแปลงนั้นกระทบค่าของ PK นอกเสียจากว่าการเปลี่ยนแปลงนี้จะปรับแก้ค่าของ FK ใน CT ที่เชื่อมโยงอยู่ทั้งหมดด้วย
    •    การเปลี่ยนแปลงค่าใน CT เป็นสิ่งต้องห้าม หากการเปลี่ยนแปลงนั้นกระทบค่าของ FK นอกเสียจากว่าการเปลี่ยนแปลงนี้จะทำให้ค่าของ FK เป็น NULL หรือมีการตรวจสอบค่า PK ใน PT ด้วย
    •    การลบแถวใน PT เป็นสิ่งต้องห้าม นอกเสียจากว่าการลบนั้นจะดำเนินการกับ CT ทุกตาราง คือลบแถวข้อมูลใน CT ทุกแถวที่มี FK ตรงกับแถวข้อมูล PT ที่ถูกลบ

     

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

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

     

    5.5. คำถามท้ายบท
    1.    ERD มีประโยชน์อย่างไร
    2.    ตีนกามีหน้าที่อะไร
    3.    ความสัมพันธ์แบบหนึ่งต่อหนึ่งพบได้ในกรณีใด
    4.    ความสัมพันธ์แบบหลายต่อหลายคืออะไร
    5.    สัญลักษณ์รูปวงกลมและขีดหนึ่งขีดใช้แทนอะไร
    6.    ความสัมพันธ์แบบจำแนกได้คืออะไร
    7.    ความสัมพันธ์แบบจำแนกไม่ได้เป็นอย่างไร
    8.    ตารางผูกพันคืออะไร
    9.    กุญแจหลักมีหน้าที่อะไร
    10.    กุญแจเอกลักษณ์คืออะไร

     

    5.6. แบบฝึกหัดท้ายบท
    พิจารณาข้อมูลในภาพ 5-13 แล้วทำสิ่งต่างๆ ดังนี้
    1.    นำข้อมูลนี้มาออกแบบสร้างเป็น PT และ CT ที่เชื่อมโยงกันแบบหนึ่งต่อหลาย
    2.    กำหนด PK ให้แก่ตารางทั้งสอง
    3.    กำหนด FK ใน CT

     

    014

    ภาพ 5-13 : ตัวอย่างข้อมูลสำหรับทำแบบฝึกหัดท้ายบท

     

    แผนภูมิ ER: ตอน 1

     

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

     

    แผนภูมิ ER: ตอน 1

     

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

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

     

    5.1. นิยามแผนภูมิอีอาร์
    หากเครื่องมือที่ดีที่สุดของนักเขียนโปรแกรมคือโฟลชาร์ท เครื่องมือที่ดีที่สุดของนักออกแบบฐานข้อมูลก็คือแผนภูมิอีอาร์ (Entity / Relation Diagram ย่อ ERD) เพราะ ERD ช่วยให้เราแสดงภาพความสัมพันธ์ภายในเอนทิตี และระหว่างเอนทิตี ได้เป็นอย่างดี คำว่าเอนทิตี (entity) ในการออกแบบฐานข้อมูลก็คือตารางในฐานข้อมูลนั่นเอง ท่านได้เรียนเรื่อง ERD ไปแล้วเล็กน้อยในบทก่อนหน้านี้ ในบทนี้ท่านจะได้เรียนวิธีอ่านและเขียน ERD เพิ่มเติม

     

    001

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

     

    5.1.1. ตีนกา
    คำว่าตีนกาในหัวข้อนี้ไม่ใช่รอยเหี่ยวย่นข้างดวงตา แต่เป็นสัญลักษณ์ใน ERD ที่ใช้เพื่อแสดงความสัมพันธ์แบบหนึ่งต่อหลาย (one-to-many) หรือหลายต่อหลาย (many-to-many) โดยในด้านที่เป็น "หลาย" จะใช้สัญลักษณ์รูป "ตีนกา" ซึ่งเป็นรูปเส้นสามแฉก เหมือนอย่างรอยที่เกิดหากท่านจับตีนกามาจุ่มหมึก (ถ้ามันยอม) แล้วซับลงบนกระดาษ  (ผู้เขียนไม่แน่ใจเหมือนกันว่าตีนของอีกาอันที่จริงแล้วมีนิ้วอยู่กี่นิ้ว แต่สัญลักษณ์ใน ERD จะเป็นเส้นสามเส้น)

    002

    ภาพ 5-2 : ตีนกาคือสัญลักษณ์ที่ใช้เพื่อแสดงความสัมพันธ์ใน ERD ในด้านที่เป็น "หลาย" ยกตัวอย่างเช่นในภาพนี้ แสดงความสัมพันธ์แบบ "หนึ่งต่อหลาย" ด้านที่เป็น "หนึ่ง" คือตาราง Author ด้านที่เป็น "หลาย" คือตาราง Publication นั่นคือนักเขียน (Author) หนึ่งคนอาจมีหนังสือ (Publication) ได้หลายเล่ม

     

    5.1.2. ความสัมพันธ์แบบหนึ่งต่อหนึ่ง
    ความสัมพันธ์แบบหนึ่งต่อหนึ่งเป็นแบบที่ไม่ค่อยพบบ่อยนัก นอกจากจะจงใจออกแบบให้เป็นเช่นนั้น ท่านจะพบความสัมพันธ์แบบหนึ่งต่อหนึ่งได้ในการแปลงนอร์มัลฟอร์มระดับที่สี่เพื่อขจัดค่า NULL ออกจากตารางแม่ (เพื่อประหยัดเนื้อที่ในฮาร์ดดิสก์ ดูรายละเอียดในบทต่อไป)  เนื่องจากปัจจุบันฮาร์ดดิสก์มีความจุสูงมากและมีราคาถูก และใน SQL2008 มีชนิดข้อมูลที่เปลี่ยนความกว้างได้ ความสัมพันธ์แบบหนึ่งต่อหนึ่งจึงไม่เป็นที่นิยมเพราะมีประสิทธิภาพต่ำ

    สัญลักษณ์แทนความสัมพันธ์แบบหนึ่งต่อหนึ่งเป็นขีดเพียงขีดเดียว

    003

    ภาพ 5-3 : ความสัมพันธ์แบบหนึ่งต่อหนึ่งแสดงเป็นนัยว่ามีหน่วยข้อมูลหนึ่งหน่วยอยู่ในทั้งสองตาราง สัญลักษณ์จึงใช้ขีดๆ เดียว

     

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

    004

    ภาพ 5-4 : ความสัมพันธ์แบบหนึ่งต่อหลายแสดงเป็นนัยว่ามีหน่วยข้อมูลหนึ่งหน่วยในตาราง ก และหลายหน่วยในตาราง ข ตรงตาราง ก จึงใช้รูปขีดๆ เดียว ส่วนตาราง ข ซึ่งมีข้อมูลหลายหน่วยจะใช้สัญลักษณ์รูปตีนกา

     

    5.1.4. ความสัมพันธ์แบบหลายต่อหลาย
    ความสัมพันธ์แบบหลายต่อหลายหมายถึงทุกๆ แถวในตาราง ก อาจเชื่อมโยงกับหลายๆ แถวในตาราง ข ตัวอย่างคลาสสิกของความสัมพันธ์แบบนี้คือ ตารางเก็บรายชื่อนักเรียนกับตารางเก็บรายชื่อวิชา ปรกตินักเรียนทุกคนจะลงทะเบียนเรียนมากกว่าหนึ่งวิชา (คือไม่มีนักเรียนคนใดลงทะเบียนเรียนเพียงวิชาเดียว) และในทางกลับกัน ทุกๆ วิชาจะมีนักเรียนเข้าเรียนมากกว่าหนึ่งคน (ไม่มีวิชาใดที่มีนักเรียนลงทะเบียนเรียนเพียงคนเดียว) ผลลัพธ์คือความสัมพันธ์แบบหลายต่อหลายระหว่างนักเรียนกับวิชาต่างๆ

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

    005

    ภาพ 5-5 : ความสัมพันธ์แบบหลายต่อหลายสามารถนำมาสร้างเป็นตารามใหม่ได้อีกหนึ่งตาราง ในภาพนี้ตาราง Publisher เก็บข้อมูลสำนักพิมพ์ ตาราง Publication เก็บข้อมูลหนังสือ สองตารางนี้มีความสัมพันธ์แบบหลายต่อหลาย จึงสามารถนำมาสร้างเป็นตารามใหม่ได้อีกหนึ่งตารางคือ Edition

     

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

    ยกตัวอย่างเช่นความสัมพันธ์ระหว่างตาราง Rank และตาราง Edition โดยตาราง Rank เก็บข้อมูลการจัดอันดับของหนังสือ (ว่าได้รับความนิยมเพียงใด) และตาราง Edition เก็บข้อมูลการจัดพิมพ์ในแต่ละครั้ง เนื่องจากในตาราง  Edition จะมีข้อมูลหนังสือเรื่องหนึ่งอยู่หนึ่งแถวมันจึงมีความสัมพันธ์แบบ "หนึ่ง" ส่วนตาราง Rank อาจไม่มีข้อมูลหนังสือเล่มนั้นอยู่เลย หรืออาจข้อมูลหนังสือเล่มนั้นอยู่หนึ่งแถว มันจึงมีความสัมพันธ์แบบ "ศูนย์และหนึ่ง"

    006

    ภาพ 5-6 : สัญลักษณ์ที่ใช้เพื่อแสดงความสัมพันธ์แบบศูนย์และหนึ่งคือรูปวงกลม (แทนศูนย์) และขีดหนึ่งขีด (แทนหนึ่ง) อย่างที่เห็นทางกรอบซ้าย ซึ่งแสดงความสัมพันธ์ระหว่างตาราง Rank และ Edition โดยในฝั่ง Rank เป็นแบบศูนย์และหนึ่ง ขณะที่ในฝั่ง Edition เป็นแบบหนึ่ง ดังนั้นความสัมพันธ์ระหว่างตาราง Rank และ Edition จึงเป็นแบบหนึ่งต่อศูนย์และหนึ่ง  ส่วนสัญลักษณ์ที่ใช้เพื่อแสดงความสัมพันธ์แบบศูนย์และหนึ่งหรือหลายๆ คือรูปตีนกาบวกขีดและวงกลมอย่างที่เห็นด้านบนของตารง Edition ทางกรอบขวาในภาพ

     

    5.1.6. ตารางแม่ ตารางลูก
    ในแบบจำลองฐานข้อมูลสัมพันธ์ท่านจะได้พบความสัมพันธ์แบบตารางแม่ (Parent Table ย่อ PT) และตารางลูก (Child Table ย่อ CT)อยู่เสมอ  นิยามของ PT คือตารางซึ่งมีข้อมูลที่ถูกอ้างถึงใน CT ส่วนนิยามของ CT คือตารางที่อ้างถึงข้อมูลใน PT ยกตัวอย่างเช่น ในภาพ 5-6 ตาราง Publication เป็น PT ของตาราง Edition และพูดได้อีกอย่างหนึ่งว่าตาราง Edition เป็น CT ของตาราง Publication

    วิธีดูว่าตารางใดเป็น PT ตารางใดเป็น CT ให้ดูที่ FK หากตาราง ก มี FK ที่เชื่อมโยงไปยังตาราง ข จะถือว่าตาราง ก เป็น CT ของตาราง ข หรือพูดได้อีกอย่างหนึ่งว่าตาราง ข เป็น PT ของตาราง ก ยกตัวอย่างเช่น ในภาพ 5-6 ตาราง Edition มี FK คือคอลัมน์ publication_id ที่เชื่อมโยงไปยังคอลัมน์ชื่อเดียวกันในตาราง Publication

     

    5.1.7. ความสัมพันธ์ที่จำแนกได้และไม่ได้
    ฐานข้อมูลสัมพันธ์มักมีตารางจำนวนมากเชื่อมโยงกันด้วยความสัมพันธ์แบบกุญแจหลักหรือไพร์มารีคีย์ (PK) และกุญแจนอกหรือฟอร์เรนคีย์ (FK) ความสัมพันธ์เกิดระหว่าง PT และ CT ความสัมพันธ์ที่ว่านี้มีหลายแบบได้แก่


    •    ความสัมพันธ์แบบจำแนกได้: คือความสัมพันธ์ที่ CT ถูกแยกแยะโดย PT ในบางส่วน และถูกกำหนดความผู้พันธ์ในอีกบางส่วน ยกตัวอย่างเช่นในภาพ 5-7 ตาราง CoAuthor ซึ่งเก็บชื่อผู้เขียนร่วม มี PT สองตารางคือ Author และตาราง Publication โดยในตาราง CoAuthor จะมี PK เดียวกับ PT ทั้งสอง

    •    ความสัมพันธ์แบบจำแนกไม่ได้: คือความสัมพันธ์ที่ CT ไม่ขึ้นกับ PT นั่นคือ PK ของ CT ไม่ใช่กุญแจเดียวกันกับ PK ของ PT

    •    ตารางผูกพัน: คือตารางที่มี FK เป็น PK ที่มาจาก PT เช่นตาราง CoAuthor ในภาพ 5-7

    •    ตารางไม่ผูกพัน: หรือเอนทิตีอิสระคือตารางที่ไม่มี FK ที่เป็น PK ใน PT เช่นตาราง Publication ในภาพ 5-7

    007

    ภาพ 5-7 : แผนภูมิ ER นี้แสดงความสัมพันธ์ที่จำแนกได้และไม่ได้

     


    February 05

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

     

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

     

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

     

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

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

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

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

     

    4.5. กฎทางธุรกิจ
    กฎทางธุรกิจ (Business Rules) คือนิยามของกระบวนการ คำจำกัดความและข้อกำหนดต่างๆ ที่จำเป็นต้องนำมาใช้เพื่อให้หน่วยงานสามารถทำงานได้บรรลุเป้าหมาย ยกตัวอย่างกฎทางธุรกิจเช่น "ยอมให้ลูกค้านำสินค้าที่มีปัญหามาเปลี่ยนได้ภายในเจ็ดวันหลังจากซื้อ" หากเราออกแบบฐานข้อมูลมาอย่างสวยงามตามหลักการออกแบบทุกประการ แต่ฐานข้อมูลนั้นไม่สามารถตอบสนองกฎทางธุรกิจได้ฐานข้อมูลนั้นก็ไร้ค่า

    โปรดพิจารณาแผนภูมิ ERD ในภาพ 4-2 อันเป็นโครงสร้างฐานข้อมูลร้านขายหนังสือออนไลน์ (ขายในอินเตอร์เน็ต) จะเห็นว่าข้อมูลของหนังสือหนึ่งเล่มถูกแบ่งแยกออกเป็นหกตาราง แต่ละตารางถูกเชื่อมโยงด้วยตัวเชื่อมที่ต่างกัน ยกตัวอย่างเช่นตาราง Publication (เป็นตารางหลักเก็บข้อมูลหนังสือ) ถูกกำหนดให้มีสี่คอลัมน์ คอลัมน์แรกคือ publication_id เป็นคีย์หลักของตารางนี้ subject_id เป็นฟอร์เรนคีย ทำหน้าที่เชื่อมกับตาราง subject ซึ่งเก็บข้อมูลประเภทหรือชนิดของหนังสือ author_id เป็นฟอร์เรนคียเช่นกันทำหน้าที่เชื่อมกับตาราง Author ซึ่งเก็บข้อมูลผู้แต่งหนังสือ และสุดท้ายคือคอลัมน์ title ที่ไม่ได้เชื่อมโยงกับใคร ทำหน้าที่เก็บชื่อหนังสือ

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

     

    4.6. นิยามกฎทางธุรกิจ
    นิยามกฎทางธุรกิจคือกระบวนการต่างๆ ที่เกิดขึ้นในการทำงานประจำวัน การที่องค์กรตัดสินใจว่างานต่างๆ จะดำเนินการด้วยกรรมวิธีใด หรือองค์กรมีขึ้นเพื่อทำหน้าที่อะไร มีงานอะไรที่เกี่ยวข้องบ้าง มีรายได้จากอะไร และทำกำไรได้ด้วยวิธีใดมีผลมาจากการนิยามกฎทางธุรกิจ

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

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

    ตาราง edition เกิดจากกฎทางธุรกิจว่าหนังสือหนึ่งเล่มอาจมีการปรับปรุงและพิมพ์ใหม่ได้หลายครั้ง ดังนั้นหนังสือหนึ่งเล่มจึงมีข้อมูลในตาราง edition ได้หลายบรรทัด แต่จะเป็นศูนย์ไม่ได้  (ต้องมีการพิมพ์อย่างน้อยหนึ่งครั้ง) ส่วนข้อมูลผู้เขียน (ตาราง Author) มีข้อกำหนดว่าผู้เขียนหนึ่งคนอาจมีจำนวนเล่มของหนังสือที่เกี่ยวข้องเป็น ศูนย์ หนึ่ง สอง หรือมากกว่าก็ได้ (แม้ผู้เขียนที่มีหนังสือศูนย์เล่มยังไม่จัดว่าเป็นผู้เขียนจริงๆ แต่กฎทางธุรกิจอนุโลมให้)

     

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

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

     

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


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


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


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


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


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

     

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

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


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


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


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


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

     

    4.10. ข้อจำกัดและการตรวจสอบ
    ข้อจำกัดคือสิ่งที่กำหนดว่าอะไรทำได้อะไรทำไม่ได้ ยกตัวข้อจำกัดคือ  "ตัวแทนฝ่ายขายภาคกลางจะขายสินค้าที่ภาคเหนือไม่ได้แต่ขายที่ภาคตะวันออกได้" ส่วนการตรวจสอบคือการคัดกรองข้อมูล เพื่อให้ฐานข้อมูลมีความถูกต้อง ยกตัวอย่างการตรวจสอบคือ "ยอดสั่งซื้อต่ำสุดของไอศกรีมหางเสือคือหนึ่งกล่อง"

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

    •    NOT NULL: ทำหน้าที่กำหนดว่าคอลัมน์นั้นจะเป็น NULL ไม่ได้ คือจะต้องมีข้อมูลอยู่เสมอ
    •    Validate Check: ทำหน้าที่ตรวจสอบการใส่ข้อมูลว่าตรงกับข้อกำหนดหรือไม่ ยกตัวอย่างเช่นคอลัมน์ที่ใช้เก็บข้อมูลเพศ กำหนดไว้ว่าให้เป็นตัวอักษรหนึ่งตัว จะต้องเป็น M หรือ F เท่านั้น
    •    Key: กำหนดการเป็นกุญแจหรือคีย์ของคอลัมน์ใดๆ เช่นเป็นไพรมารีคีย์ ฟอร์เรนคีย์ และคีย์ที่ห้ามมีค่าซ้ำกัน

     

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

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

    ในบทต่อไปท่านจะได้เรียนวิธีใช้แผนภูมิ ERD เพื่อการออกแบบฐานข้อมูล

     

    4.12. คำถามท้ายบท

    1.    ขั้นตอนที่สำคัญสุดในการออกแบบฐานข้อมูลคืออะไร
    2.    บูรณภาพของข้อมูลคืออะไร
    3.    คิวรีแบบ ad-hoc คืออะไร
    4.    ฐานข้อมูลควรเชื่อมต่อกับแอพลิเกชันอย่างไร
    5.    ฐานข้อมูลที่มีประสิทธิภาพเป็นอย่างไร
    6.    การออกแบบทางแนวคิดคืออะไร
    7.    การออกแบบทางตรรกะคืออะไร
    8.    กฎทางธุรกิจคืออะไร
    9.    การออกแบบฐานข้อมูลสัมพันธ์ควรสะท้อนกฎทางธุรกิจด้วยอะไร
    10.    การศึกษาจากระบบเดิมอาจศึกษาจากอะไรได้บ้าง

     

    4.13. แบบฝึกหัดท้ายบท
    สมมุติว่าท่านไปเก็บข้อมูลเพื่อออกแบบสร้างฐานข้อมูลที่สโมสรกอล์ฟแห่งหนึ่ง เมื่อตรวจสอบแอพลิเกชันฐานข้อมูลเดิมที่ใช้งานอยู่ท่านพบว่ามีหน้าจอให้ป้อนพิมพ์ข้อมูลสมาชิกดังภาพ 4-3

    003

    ภาพ 4-3: หน้าจอให้ป้อนพิมพ์ข้อมูลสมาชิกของแอพลิเกชันฐานข้อมูลเดิมที่ใช้งานอยู่

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

     

    วิธีออกแบบฐานข้อมูล : ตอน 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) ไม่ดี

     

    001

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

     

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

     

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

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

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

     

    002

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

     

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

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

     


    การประยุกต์ใช้งานฐานข้อมูล : ตอน 2

     

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

     

    การประยุกต์ใช้งานฐานข้อมูล : ตอน 2

     

    3.5. การประมวลผลแบบขนาน
    ปัจจุบันนี้ถ้าเราไปพันทิพย์เพื่อซื้อคอมพิวเตอร์ธรรมดาๆ เราจะได้คอมพิวเตอร์ที่มีตัวประมวลผลแบบมีแกนในสองแกน (dual-core)  เครื่องเล่นเกมอย่างเพลย์สเตชันสาม (PlayStaton 3) มีตัวประมวลผลขนาด 64 บิตแบบแปดแกน ในไม่ช้าตัวประมวลผลที่มีแกนหลักจำนวน 16 หรือ 32 แกนก็จะกลายเป็นเรื่องธรรมดา การมีตัวประมวลผลหลายแกนทำให้เราสามารถใช้งานโปรแกรมประยุกต์ที่ทำงานแบบคู่ขนาน (concurrent) ได้

    หลักการทำงานของฐานข้อมูลสัมพันธ์เอื้ออำนวยต่อการทำงานงานแบบคู่ขนาน เพราะแบบจำลองข้อมูลสัมพันธ์ตั้งอยู่บนพื้นฐานของเซต กฎของเซต (จำกัด) กล่าวว่า "ผลรวมของการทำยูเนียนกับส่วนต่างๆ ทั้งหมดย่อมเท่ากับเซตเดิม" แสดงเป็นสัญลักษณ์ได้ดังนี้

    image นิยามการแบ่งส่วนของเซต A

    image ยูเนียนส่วนต่างๆ ทั้งหมดของเซต A

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

    image

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

    004

    ภาพ 3-4: เครื่องเล่นเกมเพลย์สเตชันสามเป็นคอมพิวเตอร์ที่ใช้ตัวประมวลผลแบบคู่ขนาน

     

    3.6. แรมราคาถูกลง
    หน่วยความจำหลักหรือแรม (Random Access Memory ย่อ RAM) นับวันยิ่งมีความจุมากขึ้นและมีราคาต่ำลง  คอมพิวเตอร์ที่ผู้เขียนเคยใช้ตอนเริ่มหัดเขียนโปรแกรมมีแรมเพียง 2KB (สองพันไบต์) เท่านั้น แต่ในปัจจุบันเป็นเรื่องปรกติที่เราจะมีคอมพิวเตอร์ที่มีแรมจำนวน 2 หรือ 4GB (GB = พันล้านไบต์)  นั่นแปลว่าคอมพิวเตอร์ที่ผู้เขียนใช้ในปัจจุบันนี้มีแรมมากกว่าคอมพิวเตอร์ที่ผู้เขียนเคยใช้ตอนเริ่มหัดเขียนโปรแกรมถึงหนึ่งล้านเท่า และมากกว่าเครื่องเมนเฟรมในอดีตหลายแสนเท่า

     

    005

    ภาพ 3-5: MPF-1 คอมพิวเตอร์ที่ผู้เขียนใช้ตอนเริ่มหัดเขียนโปรแกรมในปี ค.ศ. 1984 มีแรมเพียง 2KB (ผู้เขียนซื้อคอมพิวเตอร์นี้จากร้านค้าใกล้บ้านหม้อ MPF-1 ผลิตโดยบริษัท มัลติเทค ที่ปัจจุบันเปลี่ยนชื่อเป็นเอเซอร์ เป็นเครื่องมือสำหรับฝึกเขียนโปรแกรมภาษาเครื่อง (machine language) ของซีพียู Z80)

    นอกจากแรมแล้ว จานบันทึกข้อมูลก็มีความจุสูงขึ้นแต่มีราคาต่ำลงเช่นกัน แผ่นบันทึกข้อมูล "ฟล็อปปิดิสก์" ขนาดห้านิ้วครึ่งความจุ 360KB ถูกแทนที่ด้วยฟล็อปปิดิสก์ขนาดสามนิ้วครึ่ง ความจุ 1.44MB ต่อมาเป็น DVD-ROM ความจุ 4.7GB และปัจจุบันเป็นแผ่นดิสก์แบบบลูเรย์ (Blue-ray) ซึ่งมีความจุสูงถึง 50GB

     

    3.7. โซลิดสเตทดิสก์
    โซลิดสเตทดิสก์ (Solid-State Disk) หรือฮาร์ดดิสก์ที่ทำจากสารกึ่งตัวนำ ไม่มีแผ่นจานแม่เหล็ก ไม่มีชิ้นส่วนที่เคลื่อนไหว จึงทำงานเงียบ กินกำลังไฟฟ้าน้อย และที่สำคัญคือทำงานเร็วกว่าฮาร์ดดิสก์ที่ทำจากแผ่นจานแม่เหล็กมาก มีทั้งแบบที่ทำจากแรม (ปิดไฟแล้วข้อมูลหาย) และแบบที่ทำจากแฟลช (ปิดไฟแล้วข้อมูลไม่หาย)  แต่มีข้อเสียคือเทียบราคาต่อความจุยังแพงกว่าฮาร์ดดิสก์ที่ทำจากแผ่นจานแม่เหล็กมาก แต่เชื่อว่าในอีกไม่ช้าจะมีราคาใกล้เคียงกันและจะมาแทนที่ฮาร์ดดิสก์ไปในที่สุด

    006

    ภาพ 3-6: โซลิดสเตทดิสก์มีความจุมากขึ้นแต่มีราคาต่ำลงเรื่อยๆ

    3.8. ฮาร์ดดิสก์สมัยใหม่
    ฮาร์ดดิสก์ (Hard disk drive ย่อ HDD) เป็นแผ่นจานแม่เหล็กที่ถูกประดิษฐ์คิดค้นโดยไอบีเอ็มตั้งแต่ปี ค.ศ. 1956 ปัจจุบันนี้ก็ยังไม่ตาย แต่มีราคาถูกลงและมีความจุมากขึ้น HDD ตามศูนย์ข้อมูล (Data center) หรือที่เครื่องแม่ข่ายให้บริการฐานข้อมูล (Database Server) เดิมจะใช้อินเตอร์เฟสแบบ SCSI (สแกซซี่)  ต่อพ่วง HDD ธรรมดาราคาไม่แพงเข้าด้วยกันหลายๆ ตัวเป็นแถว (Redundant Array of Inexpensive Disks ย่อ RAID) เพื่อเพิ่มความจุหรือเพิ่มความเชื่อถือได้ (หรือเล็งผลเลิศทั้งสองอย่าง)

    ในสมัยก่อนหากต้องการสร้างคลังข้อมูลที่มีความจุระดับเทราไบต์ (Terabyte ย่อ TB) หรือล้านล้านไบต์ (1,000 ยกกำลัง 4 หรือ 10 ยกกำลัง 2) จำเป็นต้องใช้แถบแม่เหล็กหรืออุปกรณ์บันทึกข้อมูลด้วยแสงเป็นจำนวนมาก สลับสับเปลี่ยน (mount และ dismount) โดยอัตโนมัติด้วยน้ำมือของหุ่นยนต์ที่คล่องแคล่ว หรือจัดทำเป็นเซอฟเวอร์ฟาร์ม (Server Farm) ที่มีดิสก์ไซโล (Disks Silo) อยู่จำนวนมาก  แต่ตอนนี้หมดสมัยแล้ว เพราะในปัจจุบันแค่ HDD ธรรมดาราคาถูกก็มีความจุในระดับ TB ทำให้การจัดตั้งเครื่องแม่ข่ายให้บริการฐานข้อมูลทำได้งายขึ้น และมีราคาลดลง

    007

    ภาพ 3-7: โฆษณาขายฮาร์ดดิสก์ของบริษัท นอร์ทสตาร์ คอมพิวเตอร์ ในปี 1980 ความจุ 18MB รุ่นฮอร์ไรซอนราคาตัวละสามแสนบาท

     

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

    ความคิดในย่อหน้าบนไม่เป็นความจริงเสมอไป เพราะขณะที่อุปกรณ์เก็บข้อมูลมีความจุเพิ่มขึ้น ขนาดของข้อมูลที่เราต้องการเก็บก็เพิ่มขึ้นเช่นกัน การใช้คอมพิวเตอร์ก่อนหน้านี้เน้นเก็บข้อความตัวอักษรและรูปภาพซึ่งกินเนื้อที่ไม่มาก แต่ปัจจุบันนี้เราเก็บข้อมูลเสียง (ไฟล์ MP3) หรือวิดีโอ (ไฟล์ .AVI, MP4, WMA และอื่นๆ)  และมีการประยุกต์ใช้งานใหม่ๆ ที่เพิ่มขนาดของข้อมูลอีกมาก เช่นโปรแกรมจดจำใบหน้าเพื่อการอ่านความรู้สึกและอารมณ์จากสีหน้า โปรแกรมจดจำลายนิ้วมือ โปรแกรมจดจำเส้นลายในดวงตาเพื่อแยกแยะความแตกต่างของบุคคล ข้อมูลแผนที่ๆ ทำงานร่วมกับดาวเทียม GPRS ข้อมูลเทียบ DNA ฯลฯ การประยุกต์ใช้งานใหม่เหล่านี้ล้วนต้องใช้พื้นที่เก็บข้อมูลขนาดใหญ่

     

    008

    ภาพ 3-8: ลักษณะของข้อมูลเปลี่ยนไป ข้อมูลสมัยใหม่มีขนาดใหญ่ขึ้นและซับซ้อนขึ้น ตัวอย่างเช่นในภาพนี้ เว็บไซต์ YouTube จัดเก็บคลิปวิดีโอที่สมาชิกส่งมาไว้เป็นฐานข้อมูลขนาดใหญ่

     

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

     

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

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

     

    3.12. คำถามท้ายบท

    1.    การใช้งานฐานข้อมูลแบบไคลแอนเซอฟเวอร์เป็นอย่างไร
    2.    คลังข้อมูลคืออะไรมีหน้าที่อย่างไร
    3.    ฐานข้อมูลแบบผสมผสานคืออะไร
    4.    data bandwidth คืออะไร
    5.    RAID คืออะไร
    6.    การบีบฐานข้อมูลให้เล็กที่สุดมีข้อเสียอย่างไร
    7.    ธรรมชาติของข้อมูลในปัจจุบันต่างจากในอดีตอย่างไร
    8.    Solid-State Disk คืออะไร
    9.    กฎของเซต (จำกัด) กล่าวว่าอย่างไร หมายความว่าอย่างไร

     

    3.13. แบบฝึกหัดท้ายบท
    จงเขียนคิวรีภาษา T-SQL เพื่อฉายแสดงข้อมูลในตาราง Employees ในฐานข้อมูล NorthWind โดยแสดงเฉพาะคอลัมน์ EmployeeID, LastName, FirstName, Title และ TitleOfCourtesy โดยให้แสดง 3 แบบดังนี้

    1.    เซตของผู้ที่มี  TitleOfCourtesy = 'Ms.'
    2.    เซตของผู้ที่มี  TitleOfCourtesy = 'Mr.'
    3.    ผลจากการ UNION ALL ของทั้งสองเซต

     


    การประยุกต์ใช้งานฐานข้อมูล : ตอน 1

     

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

     

    การประยุกต์ใช้งานฐานข้อมูล : ตอน 1

     

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

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

    •    ฐานข้อมูลในงานธุรกรรม (OLTP)
    •    ฐานข้อมูลในงานช่วยตัดสินใจ (OLAP)
    •    ฐานข้อมูลแบบผสมผสาน
    •    มุมมองใหม่ต่อฐานข้อมูล
    •    การประมวลผลแบบขนาน
    •    แรมราคาถูกลง
    •    โซลิดสเตทดิสก์
    •    ฮาร์ดดิสก์สมัยใหม่
    •    เมื่อข้อมูลเปลี่ยนไป
    •    แต่ความคิดยังไม่เปลี่ยน

     

    3.1. ฐานข้อมูลในงานธุรกรรม (OLTP)
    ฐานข้อมูลในงานธุรกรรมเป็นงานที่เข้าถึงข้อมูลหรือเปลี่ยนแปลงข้อมูลในปริมาณน้อย (คือครั้งละหนึ่งหรือสองแถว) งานส่วนมากคือการเรียกข้อมูลมาดู เพิ่มข้อมูล เปลี่ยนแปลงข้อมูล ลบข้อมูล โดยเป็นการทำครั้งละหนึ่งแถว เช่นข้อมูลของลูกค้าหนึ่งราย หรือสินค้าหนึ่งรายการ ยกตัวอย่างการใช้งานฐานข้อมูลในงานธุรกรรมมีดังนี้

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

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

     

    001

    ภาพ 3-1 : สถาปัตยกรรมแบบไคลแอนเซอฟเวอร์

     

    3.2. ฐานข้อมูลเพื่อช่วยตัดสินใจ (OLAP)
    ฐานข้อมูลในงานช่วยตัดสินใจมีหน้าที่เหมือนชื่อของมัน คือช่วยให้ผู้จัดการหรือเจ้าหน้าที่ในระดับบริหารมีข้อมูลสำหรับใช้ตัดสินใจดำเนินการในเรื่องต่างๆ ยกตัวอย่างการใช้งานฐานข้อมูลในงานช่วยตัดสินใจมีดังนี้

    •    ฐานข้อมูลแบบโกดังข้อมูล: โกดังข้อมูล (data warehouse) มีแบบจำลองเหมือนกับฐานข้อมูลในงานธุรกรรม จะแปลกกันที่งานโกดังข้อมูลมักเก็บข้อมูลประวัติย้อนหลังไปหลายปีเพื่อใช้ในการทำนายแนวโน้ม ขณะที่งานธุรกรรมจะเก็บเฉพาะข้อมูลปัจจุบัน ดังนั้นฐานข้อมูลแบบโกดังข้อมูลจะมีขนาดใหญ่กว่าฐานข้อมูลในงานธุรกรรมหลายเท่า (บางครั้งใหญ่กว่าเป็นล้านเท่า) ข้อมูลที่อยู่ในโกดังข้อมูลมักเป็นข้อมูลที่รวบรวมมาจากฐานข้อมูลแบบ OLTP (คือย้ายข้อมูลมาจาก OLTP แล้วจึงลบข้อมูลใน OLTP ไปเสีย) โกดังข้อมูลต้องการแบบจำลองข้อมูลที่ถูกออกแบบมาเพื่อการนี้โดยเฉพาะ
    •    ฐานข้อมูลแบบคลังข้อมูล: คลังข้อมูล (data mart) คล้ายโกดังข้อมูลแต่มีขนาดเล็กกว่ามาก มีหน้าที่ใช้พักข้อมูลชั่วคราวเพื่อการประมวลผลก่อนนำไปสร้างโกดังข้อมูล คลังข้อมูลจะมีแบบจำลองเหมือนกันกับโกดังข้อมูล
    •    ฐานข้อมูลรายงาน: ฐานข้อมูลรายงานมีลักษณะเช่นเดียวกับโกดังข้อมูลแต่มีขนาดเล็กกว่า ฐานข้อมูลรายงานจะมีเฉพาะข้อมูลที่จำเป็นต้องใช้ในการทำรายงาน ขณะที่โกดังข้อมูลมีข้อมูลเก่าย้อนหลังไปนาน (archived data) สาเหตุที่ต้องมีฐานข้อมูลรายงานไม่ทำรายงานจากโกดังข้อมูลโดยตรงเพราะโกดังข้อมูลมีขนาดใหญ่เทอะทะไม่ยืดหยุ่น จึงใช้ทำรายงานได้ไม่สะดวก

    IgniteAgentless_3b

    ภาพ : 3-2 : ตัวอย่างระบบงานโกดังข้อมูลหรือดาต้าแวร์เฮาส์ใช้งานผ่านเว็บ

     

    3.3. ฐานข้อมูลแบบผสมผสาน
    ฐานข้อมูลแบบผสมผสาน (Hybrid Database ย่อ HD) คือการผสมความต้องการระหว่างฐานข้อมูลในงานธุรกรรมและฐานข้อมูลในงานช่วยตัดสินใจเอาไว้ด้วยกัน จุดมุ่งหมายของ HD คือต้องการลดค่าใช้จ่าย เพราะ HD จะมีเพียงฐานข้อมูลเดียว ใช้เซอฟเวอร์เพียงตัวเดียว จึงประหยัดค่าฮาร์ดแวร์ ซอฟต์แวร์ และรายจ่ายอื่นๆ ในการบำรุงรักษา  HD จึงเหมาะสำหรับงานที่มีปริมาณการไหลของข้อมูลต่ำและมีจำนวนผู้ใช้ไม่มากนัก

     

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

    เมื่อไม่กี่ปีมานี้เคยมีปัญหาใหญ่เรื่องแถบความกว้างในการไหลของข้อมูล (data bandwidth) ที่ใช้เพื่อรับ-ส่งข้อมูลระหว่างหน่วยความจำแรมกับฮาร์ดดิสก์มีขนาดเล็กและมีความเร็วต่ำ เปรียบเหมือนมีบ่อน้ำขนาดยักษ์แต่ท่อส่งน้ำมีขนาดเล็กจิ๋ว แต่ตอนนี้ปัญหาหมดไปแล้วเพราะฮาร์ดดิสก์รุ่นใหม่มีความเร็วสูงมาก

     

    003

    ภาพ 3-3 : โปรแกรมดีเบสทูเป็นโปรแกรมจัดการฐานข้อมูลเคยได้รับความนิยมอย่างสูง แต่มันไม่ใช่ RDBMS และไม่สนับสนุนภาษา SQL

     

    February 04

    วิธีแก้ String must be exactly one character long

     

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

     

    วิธีแก้ String must be exactly one character long

     

    วันนี้ผู้เขียนขอแทรกเรื่องที่ไม่เกี่ยวกับโพสต่อเนื่องอื่นๆ (ช่วงนี้กำลังโพสเนื้อหาบางส่วนในหนังสือ เรียนรู้ด้วยตนเอง DataBase - Query - T-SQL - Stored Procedure ให้ท่านอ่านฟรี) ด้วยเรื่องวิธีแก้ไขเออเรอร์ที่เกิดตอนคอมไพล์ที่ผู้เขียนพบในวันนี้ เกลือกว่าท่านเจอปัญหาอย่างเดียวกันแล้วท่านบังเอิญ Google มาพบเข้าอาจช่วยแก้ปัญหาได้

    ข้อความที่เป็นชื่อตอนคือเออเรอร์เมสเซจ (Error Message ย่อ EM) ที่โปรแกรม Visual Studio 2008 (VS2008) แสดงเมื่อผู้เขียนรันโปรแกรม โค้ดส่วนที่เกิด EM คือเมธอดนี้

    private void GetRowsFromDatabase(int projectID)
    {
        LoySQLtoLINQDataContext myDB = new LoySQLtoLINQDataContext();
        var readSec1 =
            from r in myDB.Section1s
            where r.ProjectID == projectID && r.SectionID == 1
            orderby r.TopicOrder
            select r;
        string a, b, c, d, e, f;
        foreach (var v in readSec1)
        {
            this.projectID = v.ProjectID.ToString();
            a = v.TopicOrder.ToString();
            b = v.Comment.ToString();
            c = v.Name.ToString();
            d = v.Size.ToString();
            e = v.TopicType.ToString();
            f = v.Mandatory.ToString();
            string[] s = { a, b, c, d, e, f };
            myList.Add(s);
        }
    }  

    นี่คือเมธอดภาษา C# ทำหน้าที่คิวรีข้อมูลจากตารางมาใส่ไว้ในลิงค์ลิสต์ เมื่อคอมไพล์ VS2008 แสดง EM ในบรรทัด foreach ซึ่งก่อนหน้านี้เคยทำงานได้อย่างปรกติ เรื่องนี้ทำให้ผู้เขียนงงอยู่พักใหญ่ สืบสาวราวเรื่องพบว่าสาเหตุเกิดจากผู้เขียนแก้ไขโครงสร้างของตาราง แต่ลืมแก้ O/RM โดยผู้เขียนมีตารางหน้าตาดังนี้

         
    cap001  

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

    คำว่า Int และ String คือชนิดข้อมูลของคอลัมน์ เดิมผู้เขียนกำหนดให้คอลัมน์ Mandatory เป็น varchar(1) และภายหลังเปลี่ยนเป็น vchar(10) ส่วน Desinger จึงคิดว่าคอลัมน์นี้เป็น Char(1) ทั้งๆ ที่ตอนนี้เป็น String แล้ว

    ตาราง Setction1    
         

     

    ปัญหานี้เกิดจากผู้เขียน Drop ตารางแล้ว Create ใหม่ด้วย SQL2008 Management Studio แต่ VS2008 มันไม่ยอมรับรู้การเปลี่ยนแปลงนี้ วิธีแก้ก็ง่ายนิดเดียวคือเปิดตัวช่วยออกแบบ O/RM ลบตารางเดิมออก แล้วลากตารางใหม่ใส่เข้าไป (ความจริงก็ตารางเดิมแต่แก้ไขแล้ว)  วิธีแก้อีกแบบคือเปิดไฟล์ .designer.cs หาแอตทริบิวต์ของคอลัมน์ Mandatory ซึ่งจะมีหน้าตาดังนี้

    [Column(Storage="_Mandatory", DbType="VarChar(1)")]

     

    ปัญหาคือตรงนี้แหละครับ ถ้าเปลี่ยนเป็น Varchar(10) เสียก็จบ

     

    แบบจำลองฐานข้อมูล: ตอน 4

     

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

     

    แบบจำลองฐานข้อมูล: ตอน 4

     

     2.7.6. แบบจำลองฐานข้อมูลแบบวัตถุสัมพันธ์
    แบบจำลองฐานข้อมูลแบบวัตถุสัมพันธ์ (Object-Relational Database Model ย่อ ORDM) เป็นแบบจำลองใหม่สุดที่นำข้อดีของ RDM และ ODM มารวมกัน ปรากฏขึ้นครั้งแรกในปี 1990 และยังได้รับการพัฒนาอยู่อย่างต่อเนื่อง  ข้อดีของแบบจำลอง  ORDM คือสามารถเขียนคิวรีได้แบบเดียวกับ RDM ข้อเสียคือความซับซ้อนของมัน

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

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

     

    2.7.7. แบบจำลองฐานข้อมูลวัตถุวิธี
    แบบจำลองฐานข้อมูลวัตถุวิธี (Object Oriented Database Model ย่อ OODM) เป็นการผนวกข้อมูลและส่วนโค้ดที่จัดการมันไว้เป็นก้อนเดียวกัน (เหมือนออพเจ็กต์ในวิชา OOP) โปรแกรม DBMS ที่สนับสนุน OODM จะเรียกย่อว่า ODBMS (object database management system)โปรแกรม ODBMS ช่วยให้นักเขียนโค้ดใช้ภาษา OOP อย่าง C# จัดการฐานข้อมูลได้เหมือนเป็นออพเจ็กต์หนึ่ง

    OODM ถูกพัฒนาขึ้นในปี 1985 โดยนักวิชาการหลายกลุ่มเช่นนักวิจัยที่มหาวิทยาลัย บราวน์ และ เอ็มไอที ช่วงแรก OODM จะใช้งานร่วมกับภาษา OOP เดิมอย่าง Smalltalk และ LISP ภายหลังปี 1990 เริ่มมี OODM ที่ใช้งานกับภาษาจาวา และปัจจุบันกำลังนิยมใช้กับภาษา C#

     

    013

    ภาพ 2-13 : มหาวิทยาลัย บราวน์ ซึ่งเป็นหนึ่งในต้นกำเนิดแบบจำลองฐานข้อมูลแบบวัตถุวิธี

     

    เดิมทีภาษาคิวรีสำหรับ OODM เรียกว่าภาษา OQL (Object Query Language) มีหลายแบบ จนกระทั่งในปี 2005 คุก ไร และโรเซนเบอร์เกอร์ได้กำหนดมาตรฐานให้แก่ภาษา OQL เรียกว่าเนทีฟคิวรี (Native Queries) ซึ่งเป็นคิวรีแบบไทป์เซฟผนวกไว้ในภาษาจาวาและ C# ต่อมาในปี 2007 บริษัทไมโครซอฟต์ออก .NET Framework เวอร์ชัน 3.5 ซึ่งผนวกภาษา LINQ (อ่านว่าลิงค์ ย่อจาก Language Integrated Query) เพื่อให้นักเขียนโค้ดสามารถเขียนคิวรีไว้ภายในภาษา C# ได้โดยตรง (ดูบทที่ 31)

    OODM เหมะกับงานฐานข้อมูลที่ซับซ้อนมากๆ มีผู้ทำการทดลองเพื่อวัดประสิทธิภาพระหว่าง RDM และ OODM พบ OODM มีประสิทธิภาพเหนือกว่า RDM ในงานบางอย่าง แต่ข้อเสียของ OODM ก็มีหลายอย่าง เช่น ไม่สามารถนำมาใช้ร่วมกับเครื่องมือต่างๆ ที่เป็นมาตรฐานเช่นเครื่องมือ OLAP เครื่องมือสำหรับการทำสำรองข้อมูล และการกู้ข้อมูล นอกจากนั้น OODM (และ OQL) ยังขาดพื้นฐานของหลักการพีชคณิตและแคลคูลัสสัมพันธ์ที่มีใน RDM ด้วยสาเหตุนี้ทำให้หลายๆ ฝ่ายมองว่า OODM ไม่เหมาะกับการนำมาใช้งานจริงเพราะยังไม่สมบูรณ์และมีสิ่งที่ต้องพัฒนาอีกมาก

     

    2.8. สรุปท้ายบท
    คอมพิวเตอร์เตอร์ย่อมมีประโยชน์น้อยหากขาดข้อมูลเพื่อใช้ประมวลผล การคิดค้นสร้างแบบจำลองฐานข้อมูลจึงเกิดขึ้นพร้อมๆ กับวิทยาการคอมพิวเตอร์ แบบจำลองฐานข้อมูลถูกพัฒนามาแล้ว 7 ยุคสมัย คือ Flat File, HDM, NDM, RDM, ODM, ORDM และ OORDM แบบจำลองสามแบบแรกหมดความนิยมใช้งานไปแล้ว ส่วนแบบจำลองที่เหลือยังมีใช้งานกันอยู่ครบทั้งสี่แบบ

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

     

    2.9. คำถามท้ายบท
    1.    แอพลิเกชันคืออะไร
    2.    ในเรื่องฐานข้อมูลคำว่าโปร่งใสหมายถึงอะไร
    3.    OLTP คืออะไร
    4.    ดาต้าแวร์เฮาส์ คืออะไร
    5.    วิววัตถุคืออะไร
    6.    ชนิดข้อมูลพื้นฐานประกอบด้วยอะไรบ้าง
    7.    พอยน์เตอร์คืออะไร
    8.    RDBMS คืออะไร
    9.    แฟ้มแบบ CSV คืออะไร
    10.    จงบอกข้อดีและข้อเสียของแบบจำลองฐานข้อมูลแบบลำดับชั้น
    11.    ข้อดีคือการเพิ่มลดระเบียน (record) ทำได้ง่ายมาก ข้อเสียคือการค้นหาข้อมูลทำได้ช้าเพราะต้องไล่ไปตามลำดับชั้น
    12.    จงบอกข้อดีและข้อเสียของแบบจำลองฐานข้อมูลสัมพันธ์

     

    2.10. แบบฝึกหัดท้ายบท
    จงเขียนคิวรีภาษา T-SQL เพื่อฉายแสดงข้อมูลทุกแถวในตาราง Employees ในฐานข้อมูล NorthWind โดยแสดงเฉพาะคอลัมน์ EmployeeID, LastName, FirstName, Title และ TitleOfCourtesy

     


    แบบจำลองฐานข้อมูล: ตอน 3

     

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

     

    แบบจำลองฐานข้อมูล: ตอน 3

     

    2.7. วิวัฒน์ของแบบจำลองฐานข้อมูล
    การพัฒนาแบบจำลองข้อมูลเริ่มขึ้นตั้งแต่เริ่มมีการสร้างคอมพิวเตอร์ในปี ค.ศ. 1940 ช่วงแรกเป็นแบบจำลองข้อมูลที่เก็บข้อมูลเป็นไฟล์แบบเครือข่าย (network database model) แบบจำลองข้อมูลที่เก็บข้อมูลเป็นไฟล์แบบลำดับชั้น (hierarchical database model) ซึ่งทั้งสองแบบเป็นแบบจำลองที่ไม่สู้มีประสิทธิภาพนัก ต่อมาในช่วงปี 1960 จึงมีการคิดแบบจำลองข้อมูลสัมพันธ์ (relational database model) ที่ใช้งานได้จริงจัง และถือว่าเป็นแบบที่มีประสิทธิภาพสูงสุด และนิยมใช้กันมาจนถึงทุกวันนี้

     

    006

    ภาพ 2-6 : วิวัฒนาการของแบบจำลองข้อมูล

     

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

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

    Flat File ที่ยังเหลือให้เห็นอยู่ในปัจจุบันคือแฟ้มแบบ CSV ซึ่งเป็นแบบที่คั่นคอลัมน์ด้วยคอมมา (comma-delimited file) เป็นแฟ้มที่เก็บข้อมูลตัวอักษรธรรมดา (text file) ข้อมูลแต่ละคอลัมน์ถูกคั่นด้วยเครื่องหมายจุลภาค  (,) แต่ละบรรทัดถูกแยกจากกันด้วยรหัสขึ้นบรรทัดใหม่ (รหัส new line ในภาษาซีคือ \n) ถ้าพูดให้ถึงที่สุดแล้วแฟ้มแบบ CSV ไม่ใช่ Flat File เพราะการมีคอมมาคั่นอาจถือว่าเป็นโครงสร้างอย่างหนึ่งได้เหมือนกัน

     

    007

    ภาพ 2-7 : แฟ้มแบบ CSV หรือแบบคั่นด้วยคอมมา (comma-delimited file)

     

    2.7.2. แบบจำลองฐานข้อมูลแบบลำดับชั้น
    แบบจำลองฐานข้อมูลแบบลำดับชั้น (Hierarchical Database Model ย่อ HDM) เกิดขึ้นในปี 1950 เป็นแบบจำลองฐานข้อมูลที่ถูกพัฒนาให้มีประสิทธิภาพดีกว่า File System และถูกใช้เรื่อยมาจนเสื่อมความนิยมไปในปี 1980 ข้อดีของ HDM คือการเพิ่มลดระเบียน (record) ทำได้ง่ายมาก ข้อเสียคือการค้นหาข้อมูลทำได้ช้าเพราะต้องไล่ไปตามลำดับชั้น

    HDM มีโครงสร้างเหมือนต้นไม้กลับหัว คือรากอยู่บนสุดแล้วลำต้นแตกกิ่งก้านลงไปข้างล่าง (ดูภาพ 2-8)  ตารางที่อยู่บนคือตารางแม่ (parent table) ตารางที่มีลำดับต่ำกว่าคือตารางลูก (child table)

    HDM มีความสัมพันธ์เป็นแบบ "หนึ่งต่อหลาย" (one to many) เพราะตารางแม่หนึ่งตารางอาจมีตารางลูกได้หลายตาราง และในขณะเดียวกันตารางลูกใดๆ อาจมีตารางลูกลงไปอีกชั้นหนึ่ง ทำให้มันมีฐานะเป็นตารางแม่ด้วยเช่นกัน ในทำนองเดียวกัน ตารางแม่ใดๆ อาจมีตารางแม่อยู่เหนือตัวมันอีก ทำให้มันมีฐานะเป็นตารางลูกด้วยเช่นกัน

     

    008

    ภาพ 2-8 : ในแผนภูมิแสดงแบบจำลองฐานข้อมูลแบบลำดับชั้นนี้ตารางงาน (Task)  คือส่วนหนึ่งของตารางโครงการ (Project) ตารางโครงการและตารางพนักงาน (Employee) เป็นส่วนหนึ่งของตารางผู้จัดการ (Manager) ตารางผู้จัดการเป็นส่วนหนึ่งของตารางแผนก (Department) ตารางแผนกต่างๆ เป็นส่วนหนึ่งของตารางบริษัท (Company) ข้อเสียของแบบจำลองฐานข้อมูลแบบลำดับชั้นคือการค้นหาข้อมูลต้องไล่ไปตามโหนดต่างๆ ยกตัวอย่างในภาพนี้หากต้องการค้นข้อมูลในตารางพนักงาน การค้นต้องทำจากบนสุดแล้วท่องไปในโหนดต่างๆ คือตารางบริษัท ตารางแผน ตารางผู้จัดการ แล้วจึงมาถึงตารางพนักงาน

     

    2.7.3. แบบจำลองฐานข้อมูลแบบเครือข่าย
    แบบจำลองฐานข้อมูลแบบเครือข่าย (Network Database Model ย่อ NDM) ถูกพัฒนามาจาก HDM เริ่มปรากฏในปี 1960 และถูกใช้เรื่อยมาจนเสื่อมความนิยมไปในปี 1990 แบบจำลอง NDM คล้ายคลึงกันมากกับ HDM จึงมีข้อดีข้อเสียใกล้เคียงกัน

    คำว่าเครือข่ายในที่นี้ไม่ได้หมายถึงเครือข่ายคอมพิวเตอร์ แต่หมายถึงตารางต่างๆ ถูกนำมาเชื่อมโยงกันเป็นเครือข่ายเพื่อให้ตารางลูกมีตารางแม่ได้มากกว่าหนึ่งตาราง (ต่างจาก HDM ที่ตารางลูกมีตารางแม่ได้ได้เพียงตารางเดียว)  NDM จึงมีความสัมพันธ์เป็นแบบ "หลายต่อหลาย" (many to many)

     

    009

    ภาพ 2-9 : แผนภูมิแสดงแบบจำลองฐานข้อมูลแบบเครือข่าย จะเห็นว่าตารางผู้จัดการเป็นทั้งส่วนหนึ่งของตารางแผนกและตารางบริษัท หรือพูดอีกอย่างหนึ่งคือไม่เฉพาะตารางแผนกเท่านั้นที่มีตารางผู้จัดการ แต่ตารางบริษัทเองก็มีผู้จัดการด้วยเช่นกัน และตารางพนักงานสามารถแยกออกเป็นประเภทต่างๆ ของพนักงานได้

     

    2.7.4. แบบจำลองฐานข้อมูลสัมพันธ์
    แบบจำลองฐานข้อมูลสัมพันธ์ (Relational Database Model ย่อ RDM) เป็นแบบจำลองข้อมูลที่ถูกพัฒนาด้วยแนวคิดใหม่ซึ่งแตกต่างจากแบบจำลองฐานข้อมูล  HDM และ NDM ไปมาก RDM เริ่มปรากฏในปี 1970 และถูกใช้เรื่อยมาจนถึงทุกวันนี้ ข้อดีของ RDM คือมีบูรณภาพของข้อมูลดีมาก ข้อเสียคือโปรแกรม DBMS ซับซ้อนกว่าแบบจำลองสามแบบแรก

    เมื่อพูดว่าความสัมพันธ์ (relational) คนทั่วไปมักนึกถึงการเชื่อมโยงระหว่างตารางต่างๆ ด้วยคีย์ต่างๆ (เช่นไพรมารีคีย์และฟอร์เรนคีย์) แต่อันที่จริงแล้วคำว่า "ความสัมพันธ์" ในวิชา  RDM หมายถึงความเชื่อมโยงของแอตทริบิวต์และทูเพิลภายในตาราง ไม่ใช่การเชื่อมโยงระหว่างตาราง

    RDM มีประสิทธิภาพสูงกว่า  HDM และ NDM เช่นหากต้องการค้นหาข้อมูลของพนักงานหนึ่งคน เราไม่ต้องไล่จากตารางบนสุด (ตารางบริษัท) แล้วท่องไปตามตารางต่างๆ จนกระทั่งถึงตารางพนักงาน แต่เราสามารถเข้าถึงตารางพนักงานได้โดยตรง ข้อดีอีกอย่างหนึ่งของ RDM คือเราสามารถเชื่อมโยงตารางต่างๆ เข้าด้วยกันได้โดยไม่จำเป็นต้องคำนึงถึงลำดับชั้น คือตารางหนึ่งๆ จะเชื่อมโยงกับตารางอื่นๆ อย่างไรก็ได้โดยอิสระ

     

    010

    ภาพ 2-10 : สมมุตว่าเรามีตารางอยู่สองตาราง ตารางแรก Project (กรอบบน) ทำหน้าที่เก็บข้อมูลโครงการต่างๆ อีกตารางหนึ่งคือ Task  (กรอบล่าง) ทำหน้าที่เก็บรายละเอียดงานต่างๆ ในหนึ่งโครงงาน สองตารางนี้เชื่อมกันได้ด้วยคอลัมน์ Project_ID ซึ่งเป็นรหัสงาน ตัวเลขนี้ทำหน้าที่เป็นไพรมารีคีย์ในตาราง Project ซึ่งจะไม่มีค่าซ้ำกัน แต่ในตาราง Task คอลัมน์ Project_ID ทำหน้าที่เป็นฟอร์เรนคีย์ (คือเป็นคีย์สำหรับอ้างถึงข้อมูลในตารางอื่น) อาจมีค่าซ้ำกันได้ ยกตัวอย่างเช่นในตาราง Project บรรทัดแรก Project_ID เท่ากับ 1 คือโครงการ Software sales data mart มีงานย่อยสามงาน คือบรรทัดที่หนึ่งถึงสามในตาราง Task จะเห็นว่าคอลัมน์ Project_ID ในตาราง Task มีเลข 1 ซ้ำกันอยู่สามแถว

     

    011

    ภาพ 2-11 : แผนภูมิแสดงแบบจำลองฐานข้อมูลสัมพันธ์ตามตัวอย่างตารางในภาพ 2-10


     

    2.7.5. แบบจำลองฐานข้อมูลแบบวัตถุ
    แบบจำลองฐานข้อมูลแบบวัตถุ  (Object Database Model ย่อ ODM) เป็นแนวคิดใหม่ที่ปรากฏขึ้นในปี 1980 และยังได้รับการพัฒนาต่อเนื่องมาจนถึงทุกวันนี้  แบบจำลอง ODM อาศัยแนวคิดว่าข้อมูลเป็นออพเจ็กต์เหมือนออพเจ็กต์ในวิชา OOP (การเขียนโปรแกรมวัตถุวิธี)  แบบจำลอง ODM มีข้อดีคือการทำงานได้มีประสิทธิภาพสูงกว่า RDM อย่างชัดเจนในบางสถานการณ์ แต่มีข้อเสียคือเรียนรู้ได้ยากและผนวกกับภาษา OOP มาตรฐานอย่าง C# ไม่ได้

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

     

    012

    ภาพ 2-12 : นี่คือฐานข้อมูลเดียวกันกับในหัวข้อแบบจำลองฐานข้อมูลสัมพันธ์ แต่ภาพนี้แสดงในแบบจำลองฐานข้อมูลแบบวัตถุ โปรดสังเกตว่าคลาสพนักงาน (Employee Class) อยู่ในคอลเลคชันเดียวกันกับคลาสผู้จัดการ  (Manager Class) โดยมีคลาสงาน (Task Class) และคลาสอื่นๆ สืบคุณสมบัติไปจากมัน (เช่นคลาสพนักงานเต็มเวลา Full Time Employee Class)

     

    แบบจำลองฐานข้อมูล: ตอน 2

     

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

     

    แบบจำลองฐานข้อมูล: ตอน 2

     

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

     

    2.4.1. ชนิดข้อมูลพื้นฐาน
    ชนิดข้อมูลพื้นฐานแบ่งออกเป็นประเภทต่างๆ หลายแบบ จำนวนประเภทแตกต่างกันไประหว่างโปรแกรม DBMS แต่ละยี่ห้อ โดยทั่วไปแล้วชนิดข้อมูลพื้นฐานจะมีแบบต่างๆ ดังนี้

    • ตัวอักษร: ตัวอักษร (string) เก็บข้อมูลตัวอักษรหนึ่งหรือหลายๆ ตัว แบ่งออกเป็นชนิดย่อยดังนี้
      o    แบบความยาวคงที่: ข้อมูลตัวอักษรที่มีความยาวของสายอักขระที่แน่นอน เช่น CHAR(3) กำหนดความยาวไว้สามตัวอักษร หากนำมาใส่ข้อมูลที่มีความยาวเพียงสองตัวอักษร DBMS จะแทรกรหัสอักษรเคาะวรรคไว้หนึ่งตัวเพื่อทำให้มีจำนวนอักษรครบสามตัว
      o    แบบความยาวไม่คงที่: มีความยาวของสายอักขระที่ไม่แน่นอน เช่น VCHAR(10) กำหนดความยาวไว้สิบตัวอักษร หากนำมาใส่ข้อมูลที่มีความยาวเพียงห้าตัวอักษร DBMS จะไม่แทรกรหัสใดๆ ต่อท้ายเพื่อให้มีจำนวนครบสิบตัว
    • ตัวเลข: ข้อมูลตัวที่ใช้เพื่อข้อมูลเก็บตัวเลขแบ่งออกเป็นสามชนิดย่อยคือ
      o    จำนวนเต็ม: ใช้เก็บตัวเลขที่ไม่มีจุดทศนิยม เช่น SINT (TINYINT), INT และ LONGINT
      o    ทศนิยมหลักคงที่: ใช้เก็บตัวเลขที่มีจำนวนหลักที่แน่นอน ยกตัวอย่างเช่น DECIMAL(5.2) คือการกำหนดให้เก็บตัวเลขได้ 5 หลัก และมีเลขหลังทศนิยมได้ 2 ตำแหน่ง จึงสามารถเก็บข้อมูล12345.67 และ 12.34 ได้ แต่เก็บ 12.345 หรือ 123456.12 ไม่ได้
      o    โฟลตติงพอยน์: floating point ใช้เก็บตัวเลขทศนิยมที่มีตำแหน่งทศนิยมไม่แน่นอน เช่น 1234, 123.45, 0.1234 เหล่านี้เป็นค่าที่เก็บด้วยชนิดข้อมูลโฟลตติงพอยน์ได้
    • วันที่: เก็บวันเดือนปีในลักษณะต่างๆ และอาจรวมข้อมูลเวลาไว้ด้วยก็ได้

     

    003

    ภาพ 2-3 : ตัวอย่างชนิดข้อมูลแบบเวลาใน SQL2008


    2.4.2. ชนิดข้อมูลซับซ้อน
    ชนิดข้อมูลซับซ้อนเป็นโครงสร้างข้อมูล หรือข้อมูลที่อยู่รวมกันเป็นกลุ่ม (data collection) ยกตัวอย่างเช่น
    •    ไบนารี: ข้อมูลแบบไบนารี (binary) คือข้อมูลในรูปเลขฐานสองที่เป็นก้อนขนาดใหญ่ เช่นรูปภาพ วิดีโอ เสียง ไม่สามารถบรรจุไว้ในแถวของตารางโดยตรงได้ เพราะปรกติแถวของตารางจะเก็บข้อมูลได้รวมกันไม่เกิน 2KB
    •    พอยน์เตอร์: เป็นข้อมูลไบนารีที่ใช้สำหรับชี้ตำแหน่งข้อมูลในหน่วยความจำหรือในจานบันทึกข้อมูล
    •    อาร์เรย์: (array) คือโครงสร้างข้อมูลที่มีการเรียงตัวซ้ำๆ กัน แบ่งออกเป็นอาร์เรย์แบบความยาวคงที่ และอาร์เรย์แบบความยาวเปลี่ยนแปลงได้ (dynamic array)
    •    ชนิดข้อมูลที่ผู้ใช้นิยามขึ้นเอง: (User Defined Type ย่อ UDT) เป็นชนิดข้อมูลที่ผู้ใช้สร้างขึ้นโดยนำชนิดข้อมูลพื้นฐานมาจัดรูปแบบเป็นโครงสร้างที่แน่นอน เช่น structure

     

    004

    ภาพ 2-4 : ตัวอย่างชนิดข้อมูลแบบพอยน์เตอร์


    2.4.3. ชนิดข้อมูลพิเศษ
    ชนิดข้อมูลพิเศษคือชนิดข้อมูลที่เป็นออพเจ็กต์ และสามารถสืบคุณสมบัติของออพเจ็กต์ได้ เช่นแฟ้มข้อมูล XML และออพเจ็กต์ที่เป็นมัลติมีเดีย

     

    2.5. นิยาม RDBMS
    RDBMS (ย่อจาก Relational Database Management System) คือคำที่ใช้เรียกชุดโปรแกรมทั้งมวลที่ประกอบเป็นเอนจินฐานข้อมูลและโปรแกรมจัดการฐานข้อมูล บางครั้งนับรวมชุดพัฒนาโปรแกรม (Software Development Kit หรือ SDK) และส่วนเครื่องมือสำรับใช้งานที่มีส่วนติดต่อกับผู้ใช้เป็นกราฟิกด้วย โปรแกรม SQL2008 ก็เข้าข่ายนิยามนี้ สรุปว่า RDBMS ก็คือเอนจินฐานข้อมูลบวกซอฟต์แวร์ที่เกี่ยวข้องทั้งหลายบรรจุไว้เป็นชุดเดียวกัน

     

    2.6. ความเป็นมาของ  RDBMS
    RDBMS  ถูกประดิษฐ์คิดค้นโดยนักวิจัยของบริษัทไอบีเอ็มชื่อ ดร. อี เอฟ คอดด์ (Dr. E. F. Codd) ภายหลังทีมงานฐานข้อมูลของไอบีเอ็มได้นำแนวคิดนี้ไปสร้างเป็นสินค้า งานวิจัยของคอดด์เน้นการลดทอนความซ้ำซ้อนของการเก็บข้อมูลโดยใช้กระบวนการ "นอร์มาไลเซชัน"  (normalization) กระบวนการนี้ประกอบด้วยขั้นตอนต่างๆ หลายขั้นตอน แต่ละขั้นตอนเรียกว่า "นอร์มัล ฟอร์ม" (normal form)

    แนวคิดพื้นฐานที่คอดด์พรรณนาไว้ในเอกสารวิชาการจำนวนมากกลายมาเป็นภาษาสืบค้นข้อมูลต่อโครงสร้าง (Structured Query Language) หรือภาษา SQL ภาษานี้ถูกนำไปต่อยอดโดยคณะบุคคลในหลายๆ โครงการ เกิดเป็นผลิตภัณฑ์หลายสายตระกูลดังที่เห็นในภาพ 2-5  (อ่านรายละเอียดเรื่องคอดด์และประวัติของฐานข้อมูลสัมพันธ์เพิ่มเติมได้ในภาคผนวก)

     

    005

    ภาพ 2-5 : แนวคิดพื้นฐานที่คอดด์พรรณนาไว้ในเอกสารวิชาการหลายฉบับถูกคณะบุคคลหลายกลุ่มนำไปพัฒนาต่อยอด ช่วงปี  1970 ทีมนักวิจัยของไอบีเอ็มที่เมือง ซาน โฮเซ (เมือง San Jose ในแคลิฟอร์เนีย ปัจจุบันคือศูนย์วิจัย อัลมาเดน) ผู้พัฒนาโครงการ System R นำแนวคิดของคอดด์ไปพัฒนาเป็นภาษา SQL และผลิตภัณฑ์ DB2 ซึ่งเป็นผลิตภัณฑ์ RDBMS ที่วิ่งในหลายโอเอสเช่น UNIX, Windows และ Linux รวมถึง z/OS ซึ่งเป็นโอเอสแบบหกสิบสี่บิตทำงานในคอมพิวเตอร์แบบเมนเฟรมของไอบีเอ็ม

     

    ในช่วงปี 1997 ถึง 1998 นักวิทยาศาสตร์สองคนที่มหาวิทยาลัยแคลิฟอร์เนีย วิทยาเขตเบอร์คลีย์ ทำโครงการ Ingres ซึ่งเป็น RDBMS ที่ทำงานในระบบปฏิบัติการ UNIX บนคอมพิวเตอร์ของบริษัท DEC เนื่องจากผู้สร้าง Ingres ขายซอร์สโค้ดในราคาถูกภายใต้สัญญาการใช้งานแบบ BSD (Berkeley Software Distribution) จึงมีบริษัทเอกชนหลายรายนำซอร์สโค้ดไปสร้างเป็นสินค้า เช่น ออราเคิล ไซเบสและไมโครซอฟต์ (ไมโครซอฟต์ซื้อสิทธิจากไซเบสอีกทอดหนึ่ง)

    นักวิทยาศาสตร์ที่เบอร์คลีย์ตั้งบริษัทชื่อ Ingres ขาย  RDBMS ในลักษณะโอเพ่นซอร์สต่อมาแตกออกเป็นอีกสองบริษัทคือ Informix (ถูกไอบีเอ็มซื้อกิจการไปในปี 2001)  และ Postgres ซึ่งเป็น  RDBMS แบบออพเจ็กต์สัมพันธ์ที่ฟรี (สัญญาการใช้งานแบบ BSD) ในทศวรรษ 1990 บริษัทออราเคิล (และ Postgres) นำแนวคิดของคอดด์มาต่อยอดเป็นแบบจำลองฐานข้อมูลแบบวัตถุ และแบบจำลองฐานข้อมูลแบบออพเจ็กต์สัมพันธ์

     


    แบบจำลองฐานข้อมูล: ตอน 1

     

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

     

    แบบจำลองฐานข้อมูล: ตอน 1

     

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

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

    •    การประยุกต์ใช้งาน
    •    สองสถาปัตยกรรม
    •    วิวและออพเจ็กต์พิเศษอื่นๆ
    •    นิยามชนิดข้อมูล
    •    นิยาม RDBMS
    •    ความเป็นมาของ  RDBMS
    •    วิวัฒน์ของแบบจำลองฐานข้อมูล

     

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

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

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

     

    2.2. สองสถาปัตยกรรม
    การประมวลผลธุรกรรมออนไลน์ (OnLine Transaction Processing ย่อ OLTP) คือสถาปัตยกรรมที่มีผู้ใช้จำนวนมากเข้าถึงข้อมูลจำนวนน้อยๆ แต่ทำอย่างถี่ๆ แบบจำลองฐานข้อมูลที่เหมาะกับการประยุกต์ใช้งานลักษณะนี้คือ "แบบจำลองข้อมูลสำหรับธุรกรรม" (Transactional Database Model ย่อ TDM) ซึ่งเป็นแบบจำลองฐานข้อมูลที่ออกแบบมาสำหรับบริการผู้ใช้งานจำนวนมากที่เข้าถึงข้อมูลที่มีปริมาณน้อยแต่ใช้งานพร้อมกันและอย่างถี่ๆ

    แบบจำลองฐานข้อมูลที่ตรงกันข้ามกับ OLTP คือ "โกดังข้อมูล" หรือดาต้าแวร์เฮาส์ (data warehouse) ผู้ใช้จะอัพเดตข้อมูลหรือดึงข้อมูลครั้งละมากๆ (เช่นการดึงข้อมูลเพื่อนำไปใช้ในการวิเคราะห์) มีจำนวนผู้ใช้พร้อมกันไม่มากนัก (เมื่อเทียบกับ OLTP เพราะผู้ใช้งานดาต้าแวร์เฮาส์คือนักวิเคราะห์ข้อมูลซึ่งมีจำนวนน้อยกว่าผู้ใช้แอพลิเกชัน)  เนื่องจากไม่ใช่การทำงานตามลำดับเหตุการณ์ที่เกิดขึ้นจริง (real time) ระบบจึงไม่จำเป็นต้องตอบสนองการทำงานเร็วมากนักก็ได้ ปรกติแบบจำลองข้อมูลลักษณะนี้จะถูกสร้างขึ้นโดยนำฐานข้อมูล OLTP มาแยกย่อยเป็นโครงสร้างที่ซ้ำกันหลายๆ ชุด

     

    001

    ภาพ 2-1: การใช้งาน Business Intelligence (BI) และดาต้าแวร์เฮาส์

     

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

    • วิว: วิว (View) คือนิยามคิวรี ตัวมันเองไม่ใช่ตารางและไม่ได้เก็บข้อมูลใดๆ ไว้ภายใน วิวเป็นเพียงโครงสร้างทางตรรกะของตาราง เมื่อสั่งให้วิวทำงานเราจะได้ข้อมูลเป็นตารางเสมือน วิวมีประโยชน์เมื่อนำมาใช้ระหว่างขั้นตอนพัฒนา แต่ไม่ควรนำไปใช้ในขั้นตอนใช้งานจริง เพราะวิวอาจทำให้ประสิทธิภาพของฐานข้อมูลลดลง
    • วิววัตถุ: วิววัตถุ (Materialized views) ตางจากวิวธรรมดาตรงที่มันเป็นตารางข้อมูลชั่วคราวที่ถูกสร้างจากตารางจริงและมีข้อมูลเก็บไว้จริงๆ จุดประสงค์ในการสร้างวิววัตถุคือเพื่อลดภาระของตารางหลัก วิววัตถุมักถูกนำมาใช้เพื่อหาผลรวมของชุดข้อมูล (ดาต้าเซต dataset) ขนาดใหญ่ในงานคลังข้อมูล ในบาง RDBMS จะสนับสนุนการปรับข้อมูล (refresh) ระหว่างตารางจริงกับวิววัตถุโดยอัตโนมัติ ทำให้เราสามารถใช้งานวิววัตถุได้โดยไม่ต้องห่วงเรื่องความล้าสมัยของข้อมูล
    • คลัสเตอร์: คลัสเตอร์ (Cluster) เป็นออพเจ็กต์พิเศษที่ปัจจุบันไม่นิยมใช้แล้ว มันมีลักษณะและจุดประสงค์ในการใช้งานเหมือนวิววัตถุแต่ไม่มีการการปรับข้อมูลอัตโนมัติ
    • ตัวนับอัตโนมัติ: ตัวนับอัตโนมัติ (auto counter) คือคอลัมน์ที่เพิ่มค่าได้โดยอัตโนมัติ ทำให้เราสร้างคอลัมน์ซึ่งทำหน้าที่เป็นกุญแจแทนได้ง่ายขึ้น เพราะ RDBMS จะใส่ค่าในคอลัมน์นี้ให้โดยอัตโนมัติเป็นค่าที่เรียงลำดับ (เช่น 001, 002, 003 ฯลฯ)
    • ตัวประมวลผลแบบขนาน: โปรแกรม RDBMS บางตัวสนับสนุนการแยกตารางออกเป็นหลายส่วนเพื่อให้ตัวประมวลผลหลายตัวประมวลผลไปพร้อมๆ กันได้เพื่อเพิ่มประสิทธิภาพของฐานข้อมูล

    002

    ภาพ 2-2: ตัวประมวลผลแบบขนาน CELL/B.E. ที่ผลิตโดยบริษัทไอบีเอ็ม โซนีและโตชิบา