# ฐานข้อมูล

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

## ประวัติ

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

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

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

## สถาปัตยกรรม

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

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

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

ระบบจัดการฐานข้อมูล (DBMS) ประกอบด้วยซอฟต์แวร์ที่ใช้ในการจัดการฐานข้อมูล, จัดเตรียมพื้นที่ในการเก็บ, การเข้าถึง, ระบบรักษาความปลอดภัย, สำรองข้อมูล และสิ่งอำนวยความสะดวกอื่น ๆ ระบบจัดการฐานข้อมูลสามารถแบ่งหมวดหมู่ได้ตามแบบจำลองฐานข้อมูล (Database model) ที่สนับสนุน เช่น แบบจำลองเชิงสัมพันธ์ (Relational model) หรือ ฐานข้อมูล 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 มาให้ด้วย เพื่ออนุญาตให้ฐานข้อมูลสามารถทำงานร่วมกับฐานข้อมูลแบบอื่น ๆ ได้

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

**การออกแบบฐานข้อมูล** (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. รูปแบบความสัมพันธ์ข้อมูล (Relational 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

## อ้างอิง

## แหล่งข้อมูล

* Bachman, Charles W. (1973). "The Programmer as Navigator". *Communications of the ACM*. **16** (11): 653–658. doi:10.1145/355611.362534.
* Beynon-Davies, Paul (2003). *Database Systems* (3rd ed.). Palgrave Macmillan. ISBN 978-1403916013.
* Chapple, Mike (2005). "SQL Fundamentals". *Databases*. About.com. เก็บจากแหล่งเดิมเมื่อ 22 February 2009. สืบค้นเมื่อ 28 January 2009.
* Childs, David L. (1968a). *Description of a set-theoretic data structure* (PDF) (Technical report). CONCOMP (Research in Conversational Use of Computers) Project. University of Michigan. Technical Report 3.
* Childs, David L. (1968b). *Feasibility of a set-theoretic data structure: a general structure based on a reconstituted definition* (PDF) (Technical report). CONCOMP (Research in Conversational Use of Computers) Project. University of Michigan. Technical Report 6.
* Chong, Raul F.; Wang, Xiaomei; Dang, Michael; Snow, Dwaine R. (2007). "Introduction to DB2". *Understanding DB2: Learning Visually with Examples* (2nd ed.). ISBN 978-0131580183. สืบค้นเมื่อ 17 March 2013.
* Codd, Edgar F. (1970). "A Relational Model of Data for Large Shared Data Banks" (PDF). *Communications of the ACM*. **13** (6): 377–387. doi:10.1145/362384.362685. S2CID 207549016.
* Connolly, Thomas M.; Begg, Carolyn E. (2014). *Database Systems – A Practical Approach to Design Implementation and Management* (6th ed.). Pearson. ISBN 978-1292061184.
* Date, C. J. (2003). *An Introduction to Database Systems* (8th ed.). Pearson. ISBN 978-0321197849.
* Halder, Raju; Cortesi, Agostino (2011). "Abstract Interpretation of Database Query Languages" (PDF). *Computer Languages, Systems & Structures*. **38** (2): 123–157. doi:10.1016/j.cl.2011.10.004. ISSN 1477-8424. คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2024-11-23. สืบค้นเมื่อ 2022-11-05.
* Hershey, William; Easthope, Carol (1972). *A set theoretic data structure and retrieval language*. Spring Joint Computer Conference, May 1972. *ACM SIGIR Forum*. Vol. 7 no. 4. pp. 45–55. doi:10.1145/1095495.1095500.
* Nelson, Anne Fulcher; Nelson, William Harris Morehead (2001). *Building Electronic Commerce: With Web Database Constructions*. Prentice Hall. ISBN 978-0201741308.
* North, Ken (10 March 2010). "Sets, Data Models and Data Independence". *Dr. Dobb's*. เก็บจากแหล่งเดิมเมื่อ 24 October 2010.
* Tsitchizris, Dionysios C.; Lochovsky, Fred H. (1982). *Data Models*. Prentice–Hall. ISBN 978-0131964280.
* Ullman, Jeffrey; Widom, Jennifer (1997). *A First Course in Database Systems*. Prentice–Hall. ISBN 978-0138613372.
* Wagner, Michael (2010), *SQL/XML:2006 – Evaluierung der Standardkonformität ausgewählter Datenbanksysteme*, Diplomica Verlag, ISBN 978-3836696098

## หนังสืออ่านเพิ่มเติม

* Ling Liu and Tamer M. Özsu (Eds.) (2009). "Encyclopedia of Database Systems, 4100 p. 60 illus. ISBN 978-0-387-49616-0.
* Gray, J. and Reuter, A. *Transaction Processing: Concepts and Techniques*, 1st edition, Morgan Kaufmann Publishers, 1992.
* Kroenke, David M. and David J. Auer. *Database Concepts.* 3rd ed. New York: Prentice, 2007.
* Raghu Ramakrishnan and Johannes Gehrke, *Database Management Systems*
* Abraham Silberschatz, Henry F. Korth, S. Sudarshan, *Database System Concepts*
* Lightstone, S.; Teorey, T.; Nadeau, T. (2007). *Physical Database Design: the database professional's guide to exploiting indexes, views, storage, and more*. Morgan Kaufmann Press. ISBN 978-0-12-369389-1.
* Teorey, T.; Lightstone, S. and Nadeau, T. *Database Modeling & Design: Logical Design*, 4th edition, Morgan Kaufmann Press, 2005. ISBN 0-12-685352-5

## แหล่งข้อมูลอื่น

* DB File extension – ข้อมูลเกี่ยวกับไฟล์ที่มีนามสกุล DB