วันพุธที่ 18 สิงหาคม พ.ศ. 2553

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

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

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

1. รูปแบบข้อมูลแบบลำดับขั้น หรือโครงสร้างแบบลำดับขั้น (Hierarchical data model) วิธีการสร้างฐาน ข้อมูลแบบลำดับขั้นถูกพัฒนาโดยบริษัท ไอบีเอ็ม จำกัด ในปี 1980 ได้รับความนิยมมาก ในการพัฒนาฐานข้อมูลบนเครื่องคอมพิวเตอร์ขนาดใหญ่และขนาดกลาง โดยที่โครงสร้างข้อมูลจะสร้างรูปแบบเหมือนต้นไม้ โดยความสัมพันธ์เป็นแบบหนึ่งต่อหลาย (One- to -Many)
2. รูปแบบข้อมูลแบบเครือข่าย (Network data Model) ฐานข้อมูลแบบเครือข่ายมีความคล้ายคลึงกับฐาน ข้อมูลแบบลำดับชั้น ต่างกันที่โครงสร้างแบบเครือข่าย อาจจะมีการติดต่อหลายต่อหนึ่ง (Many-to-one) หรือ หลายต่อหลาย (Many-to-many) กล่าวคือลูก (Child) อาจมีพ่อแม่ (Parent) มากกว่าหนึ่ง สำหรับตัวอย่างฐานข้อมูลแบบเครือข่ายให้ลองพิจารณาการจัดการข้อมูลของห้องสมุด ซึ่งรายการจะประกอบด้วย ชื่อเรื่อง ผู้แต่ง สำนักพิมพ์ ที่อยู่ ประเภท
3. รูปแบบความสัมพันธ์ข้อมูล (Relation data model) เป็นลักษณะการออกแบบฐานข้อมูลโดยจัดข้อมูลให้อยู่ในรูปของตารางที่มีระบบคล้ายแฟ้ม โดยที่ข้อมูลแต่ละแถว (Row) ของตารางจะแทนเรคอร์ด (Record) ส่วน ข้อมูลนแนวดิ่งจะแทนคอลัมน์ (Column) ซึ่งเป็นขอบเขตของข้อมูล (Field) โดยที่ตารางแต่ละตารางที่สร้างขึ้นจะเป็นอิสระ ดังนั้นผู้ออกแบบฐานข้อมูลจะต้องมีการวางแผนถึงตารางข้อมูลที่จำเป็นต้องใช้ เช่นระบบฐานข้อมูลบริษัทแห่งหนึ่ง ประกอบด้วย ตารางประวัติพนักงาน ตารางแผนกและตารางข้อมูลโครงการ แสดงประวัติพนักงาน ตารางแผนก และตารางข้อมูลโครงการ

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

การออกแบบฐานข้อมูลในระดับตรรกะ

การออกแบบฐานข้อมูลในระดับตรรกะ หรือในระดับแนวความคิด เป็นขั้นตอนการออกแบบความสัมพันธ์ระหว่างข้อมูลในระบบโดยใช้แบบจำลองข้อมูลเชิงสัมพันธ์ ซึ่งอธิบายโดยใช้แผนภาพแสดงความสัมพันธ์ระหว่างข้อมูล (E-R Diagram) จากแผนภาพ E-R Diagram นำมาสร้างเป็นตารางข้อมูล (Mapping E-R Diagram to Relation) และใช้ทฤษฏีการ Normalization เพื่อเป็นการรับประกันว่าข้อมูลมีความซ้ำซ้อนกันน้อยที่สุด

การออกแบบฐานข้อมูล
การออกแบบฐานข้อมูล (Designing Databases) มีความสำคัญต่อการจัดการระบบฐานข้อมูล (DBMS) ทั้งนี้เนื่องจากข้อมูลที่อยู่ภายในฐานข้อมูลจะต้องศึกษาถึงความสัมพันธ์ของข้อมูล โครงสร้างของข้อมูลการเข้าถึงข้อมูลและกระบวนการที่โปรแกรมประยุกต์จะเรียกใช้ฐานข้อมูล ดังนั้น เราจึงสามารถแบ่งวิธีการสร้างฐานข้อมูลได้ 3 ประเภท
1. รูปแบบข้อมูลแบบลำดับขั้น หรือโครงสร้างแบบลำดับขั้น (Hierarchical data model) วิธีการสร้างฐาน ข้อมูลแบบลำดับขั้นถูกพัฒนาโดยบริษัท ไอบีเอ็ม จำกัด ในปี 1980 ได้รับความนิยมมาก ในการพัฒนาฐานข้อมูลบนเครื่องคอมพิวเตอร์ขนาดใหญ่และขนาดกลาง โดยที่โครงสร้างข้อมูลจะสร้างรูปแบบเหมือนต้นไม้ โดยความสัมพันธ์เป็นแบบหนึ่งต่อหลาย (One- to -Many) ดังรูป แสดงโครงสร้างลำดับขั้นของผู้สอนทักษะผู้สอน หลักสูตรที่สอน

แสดงส่วนประกอบของระบบจัดการฐานข้อมูล (Elements of a database management systems) ข้อดีและข้อเสียของระบบการจัดการฐานข้อมูล ระบบการจัดการฐานข้อมูลจะมีทั้งข้อดีและข้อเสียในการที่องค์การจะนำระบบนี้มาใช้กับหน่วยงาของตนโดยเฉพาะหน่วยงานที่เคยใช้คอมพิวเตอร์แล้วแต่ได้จัดแฟ้มแบบดั้งเดิม (Convention File) การที่จะแปลงระบบเดิมให้เป็นระบบใหม่จะทำได้ยากและไม่สมบูรณ์ ไม่คุ้มกับการลงทุน ทั้งนี้เนื่องจากค่าใช้จ่าในการพัฒนาฐานข้อมูลจะต้องประกอบด้วย
วิธีการจัดแบบลำดับขั้นเป็นการจัดกลุ่มของข้อมูลที่มีความสัมพันธ์กันและกำหนดให้เป็นเซ็กเมนต์ (Segment) โดยมีการแยกประเภทของเซ็กเมนต์ว่าเป็นเซ็กเมนต์ราก (Root segment) หรือ เซ็กเมนต์ที่เป็นตัวพึ่ง(Dependent segment) แสดงถึงฐานข้อมูลของฝ่ายที่มีการเปิดอบรมของบริษัทหนึ่งซึ่งจัดอยู่ในรูปแบบลำดับขั้น เซ็กเมนต์ที่เป็นราก คือ ชื่อฝ่าย (Department name) โดยมีเซ็กเมนต์ที่เป็นตัวพึ่ง 2 เซ็กเมนต์คือ เซ็กเม็นผู้สอน(Instructor) และหลักสูตร (Course) สำหรับเซ็กเมนต์ผู้สอนก็จะมีตัวพึ่งอีก 1 เซ็กเมนต์ คือ เซ็กเมนต์ความชำนาญ(Skill) ส่วนเซ็กเมนต์หลักสูตรก็จะมีตัวพึ่งเป็นเซ็กเมนต์เปิดสอนโดยและเข้าเซ็กเมนต์สุดท้ายก็คือเซ็กเมนต์ผู้เรียนซึ่งเป็นตัวพึ่งของเซ็กเมนต์เปิดสอนโดย
การติดต่อของข้อมูลแบบลำดับขั้นจำเป้นจะต้องอาศัยตัวชี้ (Pointer) ซึ่งสามารถแบ่งตัวชี้ออกเป็น 2 ประเภท คือ
1. ตัวชี้เซ็กเมนต์ที่เป็นตัวพึ่ง (Child Pointer)
2. ตัวชี้เซ็กเมนต์ระดับเดียวกัน (Twin Pointer)
ข้อดีและข้อเสียของโครงสร้างแบบลำดับขั้น คือ สามารถสร้างความสัมพันธ์ให้เด่นชัดของข้อมูลแต่ละลำดับว่าข้อมูลเป็นเซ็กเมนต์ราก หรือเป็นพ่อแม่(Parent) และข้อมูลเป็นเซ็กเมนต์ตัวพึ่งหรือตัวลูก (Child) ส่วนข้อเสีย โครงสร้างแบบนี้มีความคล่องตัวน้อย เพราะต้องเริ่มอ่านจากเซ็กเมนต์ที่เป็นรากก่อน นอกจากนั้นการออกแบบฐาน ข้อมูลต้องระมัดระวังการซ้ำซ้อนของข้อมูล
2. รูปแบบข้อมูลแบบเครือข่าย (Network data Model) ฐานข้อมูลแบบเครือข่ายมีความคล้ายคลึงกับฐาน ข้อมูลแบบลำดับชั้น ต่างกันที่โครงสร้างแบบเครือข่าย อาจจะมีการติดต่อหลายต่อหนึ่ง (Many-to-one) หรือ หลายต่อหลาย (Many-to-many) กล่าวคือลูก (Child) อาจมีพ่อแม่ (Parent) มากกว่าหนึ่ง สำหรับตัวอย่างฐานข้อมูลแบบเครือข่ายใหลองพิจารณาการจัดการข้อมูลของห้องสมุด ซึ่งรายการจะประกอบด้วย ชื่อเรื่อง ผู้แต่ง สำนักพิมพ์ ที่อยู่ ประเภทหนังสือ และปีที่พิมพ์ ดังนั้นการจัดข้อมูลแบบเก่าจะทำให้ข้อมูลซ้ำซ้อนกันมาก

จากรูปจะเห็นว่าโอกาสที่ข้อมูลจะซ้ำซ้อนมีมากในระบบการจัดการแฟ้มแบบเก่า หนังสือแต่ละเล่มหรือแต่ละชื่อเรื่องต่างก็มีรายการแยกต่างหาก ดังนั้นบรรดาผู้แต่งที่แต่งหนังสือมากกว่าหนึ่งเล่มจะปรากฏมากว่าหนึ่งครั้งในไฟล์นอกจากนั้นสำนักพิมพ์แต่ละแห่งพิมพ์หนังสือหลายเล่ม ดังนั้นชื่อของสำนักพิมพ์ ที่อยู่ก็จะปรากฏซ้ำๆกันในไฟล์ข้อมูลรวม ดังนั้นผู้วางระบบฐานข้อมูลจึงแนะนำให้สร้างฐานข้อมูลลักษณะเครือข่าย
เพื่อลดความซ้ำซ้อน โดยการสร้างความสัมพันธ์ระหว่างรายการเข้าด้วยกัน จะเห็นว่าความสัมพันธ์แบบหนึ่งต่อหลายรายการ (Record) ระหว่างรายการชื่อสำนักพิมพ์และชื่อเรื่อง ซึ่งแสดงโดยมีรูปลูกศรซ้อนกัน 2 หัวเราเรียกรวมชื่อสำนักพิมพ์และชื่อเรื่องซึ่งมีความสัมพันธ์กันว่าเซตและเรียกว่าสกีมา(Schema) ดังนั้นชื่อผู้แต่งแต่ละคนจะปรากฏเพียงหนึ่งครั้งและเชื่อมโยงกับชื่อหนังสือที่เป็นผู้แต่ง ขณะที่ชื่อสำนักพิมพ์ก็เชื่อมโยงกับหนังสือที่ตนเป็นผู้พิมพ์ เมื่อต้องการเข้าถึงรายการจะสามารถเข้าถึงผ่านทางชื่อเรื่อง ชื่อผู้แต่ง หรือชื่อสำนักพิมพ์ ก็ได้ โดยอาศัยเส้นทางเชื่อมต่อระหว่าง รายการ ทำให้ข้อมูลทุกรายการสามารถติดต่อถึงกันได้อย่างถูกต้อง รายการหรือเรคอร์ดสมาชิก (Member) เช่น เรียก เรคอร์ดของผู้แต่งก่อนก็เป็นเรคอร์ดนำและหาตัวเชื่อมเพื่อไปค้นหารายชื่อหนังสือที่แต่งซึ่งเป็นเรคอร์ดสมาชิกก็จะปรากฏขึ้น
ข้อดีและข้อเสียของโครงสร้างแบบเครือข่าย คือเรคอร์ดแต่ละประเภท สามารถใช้เป็นเรคอร์ดนำได้โดยกล่าวถึงก่อน ส่วนการซ้ำซ้อนของข้อมูลจะมีน้อยมากเนื่องจากเรคอร์ดสมาชิกสามารถใช้ร่วมกันได้ เช่น รายละเอียดของหนังสือหนึ่งเล่มอาจจะแต่งจากผู้แต่งหลายคน จึงสามารถใช้ร่วมกันได้ ข้อเสีย ความสัมพันธ์ของเรคอร์ดประเภทต่างๆไม่ควรจะเกิน 3 ประเภท เช่น ชื่อเรื่อง ผู้แต่ง สำนักพิมพ์ หากมีความสัมพันธ์หลายประเภท อาจจะออกแบบเครือข่ายไม่ได้หรือยุ่งยากขึ้น เนื่องจากมีข้อจำกัดในการออกแบบ
3. รูปแบบความสัมพันธ์ข้อมูล (Relation data model) เป็นลักษณะการออกแบบฐานข้อมูลโดยจัดข้อมูลให้อยู่ในรูปของตารางที่มีระบบคล้ายแฟ้ม โดยที่ข้อมูลแต่ละแถว (Row) ของตารางจะแทนเรคอร์ด (Record) ส่วน ข้อมูลนแนวดิ่งจะแทนคอลัมน์ (Column) ซึ่งเป็นขอบเขตของข้อมูล (Field) โดยที่ตารางแต่ละตารางที่สร้างขึ้นจะเป็นอิสระ ดังนั้นผู้ออกแบบฐานข้อมูลจะต้องมีการวางแผนถึงตารางข้อมูลที่จำเป็นต้องใช้ เช่นระบบฐานข้อมูลบริษัทแห่งหนึ่ง ประกอบด้วย ตารางประวัติพนักงาน ตารางแผนกและตารางข้อมูลโครงการ แสดงประวัติพนักงาน ตารางแผนก และตารางข้อมูลโครงการ

แสดงประวัติพนักงาน
รหัส ชื่อ วันเข้าทำงาน เงินเดือน ตำแหน่ง แผนก
001 นายแดง 1/1/32 30000 ผู้จัดการ วิศวกรรม
002 นายเขียว 30/6/34 20000 หัวหน้าช่าง วิศวกรรม
003 นายดำ 16/4/36 18000 สมุห์บัญชี บัญชี
004 น.ส น้ำฝน 1/5/39 9000 จัดซื้อ บัญชี
005 น.ส ทราย 16/6/40 7000 ธุรการ ธุรการ

ตารางแผนก ตารางข้อมูลโครงการ
รหัสแผนก ชื่อแผนก
10 บัญชี
20 วิศวกรรม
30 ธุรการ
รหัสโครงการ ชื่อโครงการ วันเริ่ม วันสิ้นสุด งบประมาณ
01 ทางด่วนขั้นที่ 3 1/1/38 31/12/41 500000000
02 สร้างเขื่อนเก็บน้ำ 1/5/39 30/4/40 20000000
03 สร้างสนามฟุตบอล 30/6/39 30/10/40 10000000

ตารางแสดงประวัติพนักงาน ตารางแผนก และตารางข้อมูลโครงการา
ในกรณีที่ผู้ใช้ต้องการเรียกข้อมูลจากตารางทั้ง 3 มาใช้ก็สามารถทำได้โดยการสร้างตารางใหม่ ดังแสดงการสร้างตารางรหัสพนักงานว่าอยู่แผนกไหน ทำงานโครงการอะไรและระยะเวลาในการทำ
รหัสพนักงาน รหัสแผนก รหัสโครงการ ระยะเวลา(วัน)
001 20 03 30
004 10 03 60
002 20 02 180
ตารางแสดงการสร้างตารางรหัสพนักงาน

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