Monday, October 27, 2014

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

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

การออกแบบฐานข้อมูล (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 เพื่อเป็นการรับประกันว่าข้อมูลมีความซ้ำซ้อนกันน้อยที่สุด ซึ่งการออกแบบเชิงตรรกะนี้จะบอกถึงรายละเอียดของ Relation , Attribute และ Entity

ระบบจัดการฐานข้อมูล

ระบบจัดการฐานข้อมูล


ดูบทความหลักที่: ระบบจัดการฐานข้อมูล
                 ระบบจัดการฐานข้อมูล (DBMS) ประกอบด้วยซอฟต์แวร์ที่ใช้ในการจัดการฐานข้อมูล, จัดเตรียมพื้นที่ในการเก็บ, การเข้าถึง, ระบบรักษาความปลอดภัย, สำรองข้อมูล และสิ่งอำนวยความสะดวกอื่นๆ ระบบจัดการฐานข้อมูลสามารถแบ่งหมวดหมู่ได้ตามแบบจำลองฐานข้อมูลที่สนับสนุน อาทิเช่น เชิงสัมพันธ์ หรือ XML เป็นต้น แบ่งตามประเภทของคอมพิวเตอร์ที่สนับสนุน อาทิเช่น server cluster หรือ โทรศัพท์พกพา เป็นต้น แบ่งตามประภทของภาษาสอบถามที่ใช้ในการเข้าถึงฐานข้อมูล อาทิเช่น ภาษาสอบถามเชิงโครงสร้าง หรือ XQuery แบ่งตามประสิทธิภาพในการ trade-offs อาทิเช่น ขนาดที่ใหญ่ที่สุด หรือ ความเร็วสูงสุด หรือ อื่นๆ เป็นต้น ในบาง DBMS จะครอบคลุมมากกว่าหนึ่งหมวดหมู่ เช่น สนับสนุนภาษาสอบถามได้หลายๆ ภาษา ยกตัวอย่างเช่น ใน DBMS ที่นิยมใช้การอย่างแพร่หลาย MySQL, PostgreSQL, Microsoft Access, SQL Server, FileMaker,Oracle,Sybase, dBASE, Clipper,FoxPro อื่นๆ ในทุกๆ ซอฟต์แวร์ฐานข้อมูลจะมี Open Database Connectivity (ODBC) driver มาให้ด้วย เพื่ออนุญาตให้ฐานข้อมูลสามารถทำงานร่วมกับฐานข้อมูลแบบอื่นๆ ได้


สถาปัตยกรรมฐานข้อมูล

สถาปัตยกรรมฐานข้อมูล


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


             ระดับภายใน (Internal level)
เป็นระดับที่มองถึงวิธีการจัดเก็บข้อมูลในระดับฟิซิกคอล ว่ามีรูปแบบและโครงสร้างการ จัดเก็บข้อมูลอย่างไร ซึ่งมีหน้าที่ในการจัดเก็บข้อมูลจริงๆในหน่วยความจำ เช่น ดิสก์ว่าอยู่ตำแหน่งใด รวมทั้งที่เกี่ยวกับดัชนี (Index) ซึ่งในระดับนี้จะเป็นหน้าที่ของผู้ดูแลระบบตัดสินใจในระดับกายภาพ ว่าจะเก็บข้อมูลด้วยหน่วยความจำแบบใด จะมีการดูแลรักษาอย่างไร ซึ่งโดยมากผู้ใช้ทั่วไปไม่มีสิทธิ์เข้ามายุ่งในระดับนี้
อาจจะกล่าวได้ว่า สคีมาระดับภายใน (Internal Schemas Level) พิจารณาการจัดการระบบการเก็บข้อมูลจริง อธิบายฐานข้อมูลในการเก็บทางกายภาพจริง ๆ มองข้อมูลโดยมุมมองของระบบจัดการฐานข้อมูล ใช้โครงสร้างข้อมูล (Data Structure) และการจัดระเบียนแฟ้ม (File Organization) ในการอธิบาย และจะทำงานร่วมกับระบบปฏิบัติการ (Operating System) ในการเก็บข้อมูลลงที่หน่วยเก็บสำรอง (Secondary Storage) เราเรียกโครงสร้างระดับภายในว่า physical schema ซึ่งได้จากการ map โครงสร้างข้อมูลระดับแนวคิดลงสื่อข้อมูล เช่น ดิสก์ เป็นต้น ส่วนใหญ่โครงสร้างจะเป็น index หรือ tree

            ระดับความคิด (Conceptual level)
เป็นระดับที่อยู่ถัดขึ้นมา ได้แก่ ระดับของการมองความสัมพันธ์ของข้อมูลในระบบฐานข้อมูล ว่ามีการจัดเก็บข้อมูลอย่างไร มีความสัมพันธ์กับข้อมูลอื่นอย่างไรบ้าง รวมทั้งกฎเกณฑ์ต่าง ๆ เกี่ยวกับ ข้อมูล เช่น กฎเกณฑ์ของตัวข้อมูล ความปลอดภัย (Security) และความคงสภาพของข้อมูล (Integrity) ซึ่งยังไม่ใช่รูปแบบหรือวิธีการจัดเก็บจริงในในสื่อบันทึกข้อมูล เป็นเพียงแค่มุมมองในแนวความคิดว่า ข้อมูลจะมีการจัดเก็บอย่างไรเท่านั้น ผู้ที่มีสิทธิจะใช้ ข้อมูลในระดับนี้ คือโปรแกรมเมอร์ (Programmer) หรือผู้บริหารฐานข้อมูล (Database Administrator)
เริ่มจากผู้ออกแบบ หรือ ผู้ดูแลระบบเริ่มวิเคราะห์ความต้องการข้อมูลขององค์กรว่า ประเภทใดบ้างที่จะจัดเก็บ ควรจะเก็บอะไรบ้าง และระหว่างข้อมูลควรมีความสัมพันธ์อย่างไรบ้าง จากนั้นจึงนำมาเขียนเป็นสคีมา (Schema) ซึ่งถือเป็นจุดสิ้นสุดของระดับแนวความคิด สคีมา (Schema) สามารถอธิบายว่า ฐานข้อมูลนั้นๆ สร้างขึ้นมาประกอบด้วยอะไรบ้าง แต่ละเอนติตี้ประกอบด้วยข้อมูลอะไรบ้าง มีลักษณะเป็นอย่างไร และ มีความสัมพันธ์อย่างไร
อาจจะกล่าวได้ว่า สคีมาระดับเชิงมโนภาพ (Conceptual Schemas Level) จะเป็นตัวที่ใช้เชื่อม ระหว่างสคีมาระดับภายนอกกับสคีมาระดับภายใน อธิบายฐานข้อมูลในรายละเอียดโดยรวมทั้งหมด เพื่อเชื่อมกับสิ่งที่ผู้ใช้มองรูปแบบข้อมูลความสัมพันธ์ เงื่อนไขต่าง ๆ รวมถึงความมั่นคงและความถูกต้องของข้อมูลจะถูกเก็บไว้ด้วย แต่จะไม่ลงลึกถึงการเก็บในเครื่อง เราจะเรียกในส่วนนี้ว่า logical schema หรือ schema ซึ่งเป็นโครงสร้างข้อมูลที่นำเสนอตามรูปแบบของ data model ถ้าเป็น relational database ข้อมูลในระดับ create table จะหมายถึงตารางทุกตารางใน model

             ระดับภายนอก (External level)
คือ หน้าต่างหรือ วิว (View) ที่ผู้ใช้ภายนอกมีสิทธิเข้าไปใช้ได้ วิว (View) คือ ส่วนของ ข้อมูลที่ผู้ใช้ทั่วไปมีความสนใจและมีสิทธิที่เข้านำมาใช้ได้จาก สคีมา (Concept Schema) เราสามารถเรียกสิ่งที่ใช้อธิบายวิวข้อมูลที่ถูกดึงมาจากฐานข้อมูลที่อยู่ในระดับแนวคิด (Conceptual) นี้ว่า External Schema หรือ Subschema หรือ view ซึ่งในระดับนี้โปรแกรมจะเห็นเพียงโครงสร้างข้อมูลบางส่วน เช่น กรณีของ relational database โปรแกรมจะเห็น view เป็นเพียงบางส่วนของตาราง หรือบางส่วนของตารางหลายตารางมารวมกันเป็นหนึ่ง view โดยจะต้องไม่ copy หรือ duplicate data จาก table มาไว้ที่ view
ระดับภายนอก เป็นระดับที่ใกล้กับผู้ใช้มากที่สุด เป็นสิ่งที่ผู้ใช้คิดเกี่ยวกับข้อมูลจะอธิบายถึง วิว(View) ที่ผู้ใช้สนใจ ข้อมูลที่เก็บจริงอาจมีมากกว่าที่ผู้ใช้ต้องการและข้อมูลตัวเดียวกันผู้ใช้อาจมองไม่เหมือนกัน เช่น ข้อมูลวันที่ (ผู้ใช้คนหนึ่งอาจมองเป็น วัน/ เดือน/ ปี อีกคนมองเป็น เดือน/ วัน/ปี ก็ได้) นอกจากนั้น สิ่งที่ผู้ใช้มองเห็นอาจไม่ได้เก็บจริงในเครื่องแต่ได้จากการคำนวณออกมาส่วนนี้เองจะถูกแปลโดยระบบจัดการฐานข้อมูลเก็บไว้ในพจนานุกรมข้อมูล (Data dictionary)
นอกจากนั้น สถาปัตยกรรมทั้งสามระดับดังกล่าว ยังมีความเป็นอิสระของข้อมูลที่เห็นได้คือ สคีมาระดับภายนอก จะมีรูปแบบที่คงที่ไม่เปลี่ยนแปลงไป แม้จะมีการเปลี่ยนสคีมาระดับเชิงมโนภาพ เช่น มีการเพิ่มรูปแบบข้อมูลใหม่ หรือมีความสัมพันธ์ใหม่ ๆ เพิ่มขึ้น เรียกว่า ความไม่พึ่งพิงทางตรรกะ (Logical Data Independence) และสคีมาระดับเชิงมโนภาพก็เช่นกัน จะมีรูปแบบที่คงที่แม้จะมีการเปลี่ยนแปลงทาง กายภาพ เช่น เปลี่ยนวิธีเข้าถึงข้อมูล (Access Method) หรือลำดับของข้อมูลที่เก็บอยู่จริงเปลี่ยนไป เรียกว่า ความไม่พึ่งพิงทางกายภาพ (Physical Data Independence) จุดประสงค์หลักของสถาปัตยกรรมทั้งสามระดับ คือ การที่ต้องการให้ ข้อมูล เป็น อิสระจาก ซอฟต์แวร์ ทั้งที่เป็นของผู้ใช้ และระบบ กล่าวคือ การเปลี่ยนแปลงใดๆต่อทั้ง ฮาร์ดแวร์ และ ซอฟต์แวร์ ไม่ควรจะมีผลต่อ ข้อมูลนั้น

ฐานข้อมูล

ฐานข้อมูล

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

ประวัติ

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

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

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