ภาษาเชิงวัตถุ

1. Object-Oriented Languages

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

  1. นำหลักการเชิงวัตถุไปใช้เป็นเครื่องมือในการออกแบบ เพื่อดำเนินการในขั้นต่อไป ตัวอย่างเช่นการออกแบบฐานข้อมูลเชิงสัมพันธ์ เริ่มจากการออกแบบ E-R ไดอะแกรม จากนั้นก็แปลงไปเป็นรีเลชัน
  2. หลักการเชิงวัตถุถูกนำไปรวมในภาษาใดภาษาหนึ่ง เพื่อใช้ในการจัดการฐานข้อมูล ด้วยวิธีการนี้ก็มีอยู่หลาย ภาษาที่สามารถรวมหลักการเชิงวัตถุได้ ดังนี้

2. Persistent Programming Languages

Persistent data: คือข้อมูลที่ยังคงอยู่แม้ว่าโปรแกรมที่สร้างข้อมูลนั้นขึ้นมาได้ถูกปิดไปแล้วก็ตาม

Persistent programming language คือโปรแกรมภาษาที่เพิ่มส่วนสำหรับจัดการ persistent data ซึ่งแตกต่างจากภาษาที่รวม(embedded)เอา SQL เข้าไว้ในตัวภาษาอย่าน้อย 2 อย่างคือ

1. ในภาษาแบบ embedded ชนิดข้อมูลของ host language จะแตกต่างชนิดข้อมูลของภาษาจัดการข้อมูล ดังนั้นจึงเป็นหน้าที่ของนักเขียนโปรแกรมที่จะทำการแปลงชนิดข้อมูลระหว่าง host language และภาษาจัดการข้อมูล ซึ่งมีอุปสรรคหลายอย่างคือ

ในทางกลับกัน persistent programming language และภาษาสืบค้นข้อมูลถูกรวมเข้าด้วยกัน กับ host language และทั้งสองภาษาต่างก็มีการใช้งานชนิดข้อมูลชนิดเดียวกัน ดังนั้นอ๊อปเจ็กสามารถถูกสร้างและถูกจัดเก็บในฐานข้อมูล โดยไม่ต้องมีการเปลี่ยนแปลงรูปแบบใด ๆ ทั้งสิ้น

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

ส่วนใน persistent programming language นั้น นักเขียนโปรแกรมสามารถจัดการกับ persistent data ได้โดยไม้ต้องมีการเขียนโปรแกรมเพื่อดึงข้อมูลหรือบันทึกข้อมูลกลับลงไปในฐานข้อมูล 

2.1 Persistence of Objects

2.2 Object Identity and Pointers

เมื่อ persistent object ถูกสร้าง มันจะถูกกำหนด persistent object identifier

แนวคิดของ object identifier มีลักษณะคล้าย กับ pointer แนวทางง่าย ๆ ในการสร้าง build-in identity คือ ใช้ pointer ชี้ไปที่ ตำแหน่งทางกายภาพของแหล่งเก็บข้อมูล โดยเฉพาะภาษาเชิงวัตถุอย่าง C++ มีการสร้าง

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

2.3 Storage and Access of Persistent Objects

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

การค้นหาอ๊อปเจ็กในฐานข้อมูลทำได้หลายวิธีคือ

  1. บอกชื่อของอ๊อปเจ็ก เหมาะกับจำนวนอ๊อปเจ็กน้อย ๆ
  2. ใช้ object identifiers หรือ persistent pointers ไปที่อ๊อปเจ็ก ซึ่งสามารถถูกจัดเก็บไว้ภายนอกได้ ไม่เหมือนกับการบอกชื่อ ตัวชี้เหล่านี้ไม่ต้องมีการทำอะไรอีก มันสามารถที่จะชี้ไปยังตำแหน่งที่เก็บข้อมูลในฐานข้อมูลได้ทันที
  3. เก็บคอลเลกชันของอ๊อปเจ็ก และยอมให้โปรแกรมทำการค้นหาอ๊อปเจ็กที่ต้องการในคอลเลกชันได้ คอลเลกชันของอ๊อปเจ็กสามารถมองเป็น collection type ได้ ประกอบไปด้วย sets multiset list และอื่น ๆ และมีคลาสพิเศษที่เรียกว่า class extent ซึ่งเป็นคอลเลกชันของอ๊อปเจ็กทุกตัวของคลาส ซึ่งเมื่อไรก็ตามที่อ๊อปเจ็กถูกสร้าง อ๊อปเจ็กนั้นก็จะถูกเพิ่มเข้าไปใน class extent ทันที และ เมื่อไรที่อ๊อปเจ็กถูกลบ อ๊อปเจ็กนั้นก็จะถูกลบออกจาก class extent เช่นกัน

ระบบฐานข้อมูลเชิงวัตถุแทบทุกระบบสนับสนุนการเข้าถึง persistent objects ทั้งสามวิธี โดยที่อ๊อปเจ็กทุกตัวต้องมี object identifiers การกำหนดชื่อให้กับ class และ คอลเลกชันของอ๊อปเจ็กอื่น ๆ แต่อ๊อปเจ็กเกือบทั้งหมดไม่ได้ถูกกำหนดชื่อ ดังนั้นเราจะใช้ class extents เพื่อจัดการกับคลาสทุกคลาสที่มี persistent objects