การโปรแกรมเชิงวัตถุ
เป็นเทคนิคการเขียนโปรแกรม ที่ส่งเสริม และสนับสนุน ให้การโปรแกรม มีโครงสร้างที่ดี มีความน่าเชื่อถือ เป็นแนวความคิดใหม่ ในการพัฒนาระบบงาน และโปรแกรมคอมพิวเตอร์ โดยพิจารณากลุ่มคำสั่งต่างๆ เป็นวัตถุ และการเขียนโปรแกรมเชิงวัตถุ ก็คือ การนำวัตถุต่างๆ มาเรียงต่อกัน โดยที่ผู้ใช้ ไม่ต้องเข้าใจลักษณะภายในของวัตถุนั้นๆ เพียงแต่ทราบว่า วิธีการที่จะเรียกใช้วัตถุแต่ละชิ้น เป็นอย่างไรก็พอแล้ว เทคโนโลยีนี้ กำลังได้รับความนิยม และความสนใจเป็นอย่างมาก และคาดว่า จะเป็นแนวทางในการพัฒนาระบบงานคอมพิวเตอร์ในอนาคต
ภาษาที่สนับสนุนโปรแกรมแบบนี้ ได้แก่ สมอลล์ทอล์ก (Smalltalk) ซีพลัสพลัส (C++) จาวา (Java) เป็นต้น แนวความคิดในการเขียนโปรแกรมเชิงวัตถุ ประกอบไปด้วยแนวคิดเกี่ยวกับ ชนิด (type) คลาส (Class) และวัตถุ (Object) สำหรับชนิด คือ กลุ่มของชนิดข้อมูล ซึ่งชนิดของข้อมูลพื้นฐาน ได้แก่ จำนวนเต็ม จำนวนจริง ค่าตรรกะ (Boolean) และกลุ่มตัวอักษร (Character String) ผู้ใช้สามารถสร้างชนิดของข้อมูลชนิด ใหม่ได้ โดยใช้ตัวสร้างชนิด (Type Constructor) ซึ่งชนิดของข้อมูลที่สร้างได้คือ
๑. โครงสร้างแบบระเบียน (Record Structures) กำหนดรายการของชนิดข้อมูล จำนวน n ชนิด ได้แก่ T1, T2, ..., Tn พร้อมทั้งระบุชื่อชนิดของข้อมูลแต่ละตัว ผู้ใช้สามารถสร้างชนิดของระเบียน ซึ่งประกอบด้วย n ตัว ได้ โดย องค์ประกอบที่ i เป็นชนิด Ti
๒. ชนิดของข้อมูลแบบกลุ่ม (Collection Types) ถ้าชนิดของข้อมูล T ถูกกำหนดขึ้น ผู้ใช้ สามารถสร้างชนิดของข้อมูลชนิดใหม่ได้ โดย การระบุกลุ่มของชนิดข้อมูล T เช่น แถวลำดับ (Array) รายการ (List) และเซต (Set) เป็นต้น
๓. ชนิดของข้อมูลแบบอ้างถึง (Reference Types) เป็นชนิดของข้อมูลที่อ้างถึงชนิดของข้อมูล T อาจมองง่ายๆ ได้ว่า ชนิดข้อมูลแบบอ้างถึงคือ ตัวชี้ (Pointer) ในภาษาซี และภาษาซีพลัสพลัส นั่นเอง เพียงแต่ว่าในทางระบบฐานข้อมูล ชนิด ของข้อมูลแบบนี้จะต้องอ้างถึงหลายๆ สิ่ง ไม่ใช่ เป็นเพียงแค่ตัวชี้ธรรมดาเท่านั้น นั่นคือ จะต้อง อ้างถึงรายละเอียดของการจัดเก็บระเบียนหนึ่งๆ เช่น เลขที่ของจานบันทึก กลุ่มระเบียนภายใน จานบันทึกนั้น พร้อมทั้งตำแหน่งภายในกลุ่ม ระเบียนนั้นด้วย
สำหรับคลาส (Class) คือ กลุ่มของชนิด ข้อมูล ซึ่งอาจจะประกอบด้วยฟังก์ชัน หรือกระบวนการ (Procedure) ด้วย ส่วนวัตถุ (Object) ของคลาสหนึ่งๆ จะเป็นค่าชนิดของข้อมูล หรือตัวแปร ซึ่งมีค่าเป็นชนิดของข้อมูลนั้นๆ ก็ได้ เช่น คลาส N เป็นชนิดของกลุ่มข้อมูลจำนวนเต็ม ดังนั้น { 1, 2 } เป็นวัตถุของคลาส N ขณะที่ตัวแปร n ถูกกำหนดให้เป็นสมาชิกของคลาส N และมี ค่าเป็น { 1, 2, 3, 4 } ก็ได้
ข้อดีของวัตถุต่อระบบฐานข้อมูลมีอยู่หลายประการ ได้แก่
๑. ทำให้เป็นระบบแบบชนิดริช (Rich Type) ซึ่งข้อมูลจะถูกจัดให้อยู่ในแบบที่เป็นธรรมชาติ มากขึ้นกว่าที่จัด ในแบบจำลองข้อมูลเชิงสัมพันธ์ และแบบจำลองข้อมูลอื่นๆ ที่ผ่านมา
๒. ผู้ใช้สามารถนำวัตถุมาใช้ซ้ำก็ได้ หรือนำมาแบ่งกันใช้ก็ได้ ทำให้สามารถพัฒนาซอฟต์แวร์ต่างๆ ได้มากขึ้น และรวดเร็วขึ้น โดยนำแง่คิดในเรื่องคลาส และลำดับชั้นของคลาสมาใช้
๓. มีการป้องกันการใช้ข้อมูลอย่างไม่ถูกต้องผ่านชนิดข้อมูลนามธรรม (Abstract Data Type) โดยให้ใช้ผ่านฟังก์ชัน ที่ถูกออกแบบไว้เป็นอย่างดีแล้วเท่านั้น
ฐานข้อมูลเชิงวัตถุได้รับการพัฒนาขึ้น โดยนำเทคโนโลยีการโปรแกรมเชิงวัตถุเข้ามาใช้ ระบบฐานข้อมูลแบบนี้ มีความเหมาะสมกับงานฐานข้อมูลที่เก็บข้อมูล ซึ่งค่อนข้างซับซ้อน และมีขนาดใหญ่ ตัวอย่างเช่น ฐานข้อมูลเก็บภาพลักษณ์ (Image) หรือภาพกราฟิกส์ (Graphics) ฐานข้อมูลเก็บข้อมูลการทดลองวิทยาศาสตร์ ที่ต้องเก็บตัวเลขทศนิยมเป็นจำนวนมาก ฐานข้อมูลของข้อมูลทางภูมิศาสตร์ หรือฐานข้อมูลมัลติมีเดีย เป็นต้น ดังนั้น การโปรแกรมเชิงวัตถุ จึงมีความเหมาะสม ที่จะนำมาใช้ในการพัฒนาฐานข้อมูลเหล่านี้ เนื่องจากคุณสมบัติต่างๆ ของโปรแกรมเชิงวัตถุ เช่น วัตถุ คลาส ตัวสร้างชนิด (Type Constructors) หลักนามธรรมของข้อมูล (Encapsulation) ลำดับชั้น และกรรมพันธุ์ของชนิดข้อมูล (Type hierarchies and inheritance) วัตถุที่มีโครงสร้างซับซ้อน (Complex Object) และตัวดำเนินการ ที่ทำงานได้กับข้อมูลหลายชนิด (Overloading Operator) เป็นต้น
ระบบจัดการฐานข้อมูลเชิงวัตถุได้รับการพัฒนามากขึ้นเรื่อยๆ ตัวอย่างของซอฟต์แวร์ในท้องตลาด ได้แก่ โอทู ของบริษัทโอทูเทคโนโลยี (O2 of O2 Technology) อ็อบเจกต์สโตร์ ของบริษัทอ็อบเจกต์ดีไซน์ (ObjectStore of Object Design) เจ็มสโตน/โอพัล ของบริษัทเซอร์วิโอโลจิก (GEMSTONE/OPAL of ServioLogic) ออนโทส ของบริษัทออนโตลอจิก (ONTOS of Ontologic) อ็อบเจกทิวิตี ของบริษัทอ็อบเจกทิวิตี (OBJECTIVITY of Objectivity Inc.) และ เวอร์แซนต์ ของบริษัทเวอร์แซนต์เทคโนโลยี (VERSANT of Versant Technology) เป็นต้น นอกจากนี้ ยังมีหน่วยงาน และมหาวิทยาลัยต่างๆ ที่พัฒนาระบบจัดการฐานข้อมูลเชิงวัตถุ เพื่อการทดลอง และการศึกษาอยู่หลายแห่ง ตัวอย่างเช่น ระบบโอเรียน (Orion) พัฒนาที่หน่วยงานไมโครอิเล็กทรอนิกส์ และเทคโนโลยีคอมพิวเตอร์ (Microeletronics and Computer Technology Corporation) รัฐเทกซัส ประเทศสหรัฐอเมริกา ซอฟต์แวร์โอเพน โอโอ- ดีบี (Open OODB) พัฒนาขึ้นที่บริษัทเทกซัส ระบบไออาร์ไอเอส (IRIS) พัฒนาขึ้นที่หน่วย ปฏิบัติการฮิวเลตต์ แพกการ์ด ระบบโอดีอี (ODE) พัฒนาขึ้นที่หน่วยหน่วยปฏิบัติการเอทีแอนที เบลล์ และ ซอฟต์แวร์เอนคอร์/อ็อบเซิร์ฟเวอร์ (ENCORE/ ObServer) พัฒนาขึ้นที่มหาวิทยาลัยบราวน์ เป็นต้น
ระบบฐานข้อมูลเชิงสัมพันธ์ ได้รับความนิยมในการใช้งานเป็นอย่างมาก แต่ยังมีข้อจำกัด เมื่อนำไปใช้งานกับข้อมูลที่มีความซับซ้อนมาก จึงได้มีการพัฒนาเทคโนโลยีของแบบจำลองนี้ให้ดีขึ้น โดยนำเทคโนโลยีการโปรแกรมเชิงวัตถุ (Object-Oriented Programming Technique) มาใช้ร่วมด้วย และเรียกระบบฐานข้อมูลแบบใหม่นี้ว่า ระบบจัดการฐานข้อมูลเชิงวัตถุ-สัมพันธ์ (Object- Relational Database Management System : ORDB) ซึ่งถูกพัฒนาขึ้นมา เพื่อตอบสนองต่อความต้องการของผู้ใช้ ซึ่งต้องการที่จะจัดเก็บข้อมูล ที่ซับซ้อนมากยิ่งขึ้น เช่น งานสื่อประสม ข้อมูลทางการแพทย์ [เช่น ฟิล์มเอกซเรย์ (X - rays) ภาพลักษณ์เอ็มอาร์ไอ (MRI Imaging)] งานแผนที่ ข้อมูลเกี่ยวกับอวกาศ และข้อมูลด้านการเงิน ซึ่งนับวัน จะมีความซับซ้อนขึ้นเป็นอย่างมาก เป็นต้น ผู้ผลิตระบบจัดการฐานข้อมูลเชิงสัมพันธ์ตระหนักดีว่า ลักษณะของข้อมูล ที่ผู้ใช้ต้องการจัดเก็บลงในฐานข้อมูลนั้น มีความหลากหลายมาก การพัฒนาระบบให้สามารถทำงานได้กับ ชนิดของข้อมูลเพิ่มมากขึ้นนั้น เป็นการแก้ปัญหา ระยะสั้น เพราะจะมีชนิดของข้อมูลแบบใหม่ๆ เกิดขึ้นมาเรื่อยๆ ดังนั้น วิธีการที่เหมาะสมที่สุดก็คือ พัฒนาระบบจัดการฐานข้อมูล ให้มีศักยภาพในการขยายความสามารถ ในการใช้งานกับชนิดของข้อมูล ที่ผู้ใช้ต้องการ ซึ่งการขยายประสิทธิภาพตรงจุดนี้ ควรที่จะนำเทคโนโลยีการโปรแกรมเชิงวัตถุ มาใช้ด้วยเป็นอย่างยิ่ง เพราะมีข้อได้เปรียบในหลายๆ ประการ ได้แก่ สภาพเป็นส่วนจำเพาะมากยิ่งขึ้น (Greater Modularity) คุณภาพที่ดีขึ้น (Quality) การนำกลับมาใช้ใหม่ได้อีก (Reusability) และการขยายความสามารถได้ (Extensibility) ตัวอย่างของระบบจัดการฐานข้อมูลที่ขยายจากเชิง สัมพันธ์เป็นเชิงวัตถุ-สัมพันธ์ ได้แก่ ดีบีทู รีเลชันแนล เอกซ์เทนเดอรส์ (DB2 Relational Extenders) อินฟอร์มิกซ์ เดทาเบลดส์ (Informix DataBlades) และ โอราเคิล คาร์ทริดจ์ (Oracle Cartridges) เป็นต้น