บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ...

63
บบบบบ บบบบบ 14 14 บบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบ (Object-Oriented (Object-Oriented Database) Database) บบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบ : : บบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโ โ (objects) (objects) โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ

Upload: brennan-greene

Post on 04-Jan-2016

61 views

Category:

Documents


2 download

DESCRIPTION

บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database). แนวคิดฐานข้อมูลเชิงวัตถุ : โมเดลข้อมูลเชิงวัตถุ โมเดลของข้อมูลเป็นการแสดงให้เห็นองค์ประกอบสิ่งต่าง ๆ (objects)ที่เราสนใจ ซึ่งจะมีข้อกำหนดที่กำหนดให้กับองค์ประกอบเหล่านั้น และแสดงความสัมพันธ์ระหว่างองค์ประกอบเหล่านั้น - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

บทท�� บทท�� 1414ระบบฐานข้�อมู�ลเชิ�งวั�ตถุ� ระบบฐานข้�อมู�ลเชิ�งวั�ตถุ� (Object-(Object-

Oriented Database)Oriented Database)แนวัคิ�ดฐานข้�อมู�ลเชิ�งวั�ตถุ� แนวัคิ�ดฐานข้�อมู�ลเชิ�งวั�ตถุ� ::

โมูเดลข้�อมู�ลเชิ�งวั�ตถุ�โมูเดลข้�อมู�ลเชิ�งวั�ตถุ�โมเดลของขอมลเป็�นการแสดงให้เห้�นองค์�ป็ระกอบส��งต่�าง โมเดลของขอมลเป็�นการแสดงให้เห้�นองค์�ป็ระกอบส��งต่�าง

ๆ ๆ (objects)(objects)ที่!�เราสนใจ ซึ่$�งจะม!ขอก%าห้นดที่!�ก%าห้นดให้ก&บที่!�เราสนใจ ซึ่$�งจะม!ขอก%าห้นดที่!�ก%าห้นดให้ก&บองค์�ป็ระกอบเห้ล�าน&'น และแสดงค์วามส&มพั&นธ์�ระห้ว�างองค์�องค์�ป็ระกอบเห้ล�าน&'น และแสดงค์วามส&มพั&นธ์�ระห้ว�างองค์�

ป็ระกอบเห้ล�าน&'นป็ระกอบเห้ล�าน&'นห้ล&กการของโมเดลขอมลเชิ�งว&ต่ถุ-จะป็ระกอบไป็ดวยองค์�ห้ล&กการของโมเดลขอมลเชิ�งว&ต่ถุ-จะป็ระกอบไป็ดวยองค์�

ป็ระกอบเห้ล�าน!'ค์0อป็ระกอบเห้ล�าน!'ค์0อ

Page 2: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

1.1.object and object identifier: object and object identifier: ห้มายถุ$งห้มายถุ$งอ1อป็เจ�กใด ๆ ที่!�อย�ในรป็แบบที่!�ก%าห้นด และม!การอ1อป็เจ�กใด ๆ ที่!�อย�ในรป็แบบที่!�ก%าห้นด และม!การก%าห้นดค์�า ก%าห้นดค์�า id id ที่!�ไม�ซึ่%'าก&นเพั0�อใชิในการอางถุ$งอ1อป็เจ�ที่!�ไม�ซึ่%'าก&นเพั0�อใชิในการอางถุ$งอ1อป็เจ�กน&'น กน&'น

2.attributes and methods: 2.attributes and methods: อ1อป็เจ�กที่-ก อ1อป็เจ�กที่-ก ๆ อ1อป็เจ�กจะม!ค์-ณล&กษณะๆ อ1อป็เจ�กจะม!ค์-ณล&กษณะ(state) (state) ค์0อเซึ่ต่ของค์�าค์0อเซึ่ต่ของค์�าขอมลของ แอต่ที่ร�บ�วต่�ของอ1อป็เจ�ก และการกระขอมลของ แอต่ที่ร�บ�วต่�ของอ1อป็เจ�ก และการกระที่%าที่%า(behavior) (behavior) เป็�นเซึ่ต่ของว�ธ์!การ ส�วนของเป็�นเซึ่ต่ของว�ธ์!การ ส�วนของโป็รแกรม ซึ่$�งม!การด%าเน�นการบนล&กษณะของอ1อป็โป็รแกรม ซึ่$�งม!การด%าเน�นการบนล&กษณะของอ1อป็เจ�ก ซึ่$�งล&กษณะและการกระที่%าจะถุกห้�อห้-มไวในอ1อป็เจ�ก ซึ่$�งล&กษณะและการกระที่%าจะถุกห้�อห้-มไวในอ1อป็เจ�ก และจะถุกอางถุ$งห้ร0อถุกเร!ยกให้ที่%างานจากเจ�ก และจะถุกอางถุ$งห้ร0อถุกเร!ยกให้ที่%างานจากภายนอกผ่�านที่างข�าวสารภายนอกผ่�านที่างข�าวสาร(message) (message)

Page 3: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

3.class: 3.class: ห้มายถุ$งการรวมกล-�มของอ1อป็เจ�กห้มายถุ$งการรวมกล-�มของอ1อป็เจ�กที่&'งห้มดที่!�ม!ล&กษณะและว�ธ์!การที่!�เห้ม0อนๆ ก&น อ1อป็เจ�กที่&'งห้มดที่!�ม!ล&กษณะและว�ธ์!การที่!�เห้ม0อนๆ ก&น อ1อป็เจ�กห้น$�งๆ จะถุกสรางข$'นจากค์ลาสเพั!ยงห้น$�งค์ลาส ซึ่$�งค์ลาสห้น$�งๆ จะถุกสรางข$'นจากค์ลาสเพั!ยงห้น$�งค์ลาส ซึ่$�งค์ลาสม!ล&กษณะเห้ม0อนก&บ ม!ล&กษณะเห้ม0อนก&บ abstract data type abstract data type ค์ลาสอาจจะค์ลาสอาจจะเป็�นขอมลพั0'นฐานก�ไดเชิ�น เป็�นขอมลพั0'นฐานก�ไดเชิ�น integer string integer string ห้ร0อ ห้ร0อ boolean boolean เป็�นต่น เป็�นต่น

4.Class hierarchy and inheritance: 4.Class hierarchy and inheritance: เป็�นการสรางค์ลาสให้ม�เป็�นการสรางค์ลาสให้ม�(subclass)(subclass)จากค์ลาสจากค์ลาสเด�มเด�ม(superclass)(superclass)ที่!�ม!อย�ก�อน ค์ลาสที่!�สรางข$'นให้ม�จะที่!�ม!อย�ก�อน ค์ลาสที่!�สรางข$'นให้ม�จะส0บที่อดค์-ณล&กษณะและว�ธ์!การที่&'งห้มดจากค์ลาสเด�ม ส0บที่อดค์-ณล&กษณะและว�ธ์!การที่&'งห้มดจากค์ลาสเด�ม โดยค์ลาสให้ม�สามารถุที่!�จะเพั��มค์-ณล&กษณะ และว�ธ์!การโดยค์ลาสให้ม�สามารถุที่!�จะเพั��มค์-ณล&กษณะ และว�ธ์!การให้ม� เพั��มเขาไป็ได จะแบ�งเป็�นสองป็ระเภที่ค์0อ ให้ม� เพั��มเขาไป็ได จะแบ�งเป็�นสองป็ระเภที่ค์0อ single single inheritance inheritance และ และ multiple inheritance multiple inheritance

Page 4: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

1. Object Structure1. Object Structure

แนวที่างเชิ�งว&ต่ถุ-ม!พั0'นฐานมาจากการห้อห้-มขอมล แนวที่างเชิ�งว&ต่ถุ-ม!พั0'นฐานมาจากการห้อห้-มขอมล และโป็รแกรมและโป็รแกรม(encapsulating) (encapsulating) ด&งน&'นการต่�ดต่�อส0�อสารก&นด&งน&'นการต่�ดต่�อส0�อสารก&นระห้ว�างอ1อป็เจ�กจะที่%าผ่�านที่างข�าวสารระห้ว�างอ1อป็เจ�กจะที่%าผ่�านที่างข�าวสาร(messages)(messages)เสมอเสมอ

โดยที่&�วไป็แลว อ1อป็เจ�กจะเก!�ยวของก&บโดยที่&�วไป็แลว อ1อป็เจ�กจะเก!�ยวของก&บ เซึ่ต่ของต่&วแป็รที่!�บรรจ-ขอมลของอ1อป็เจ�ก เซึ่ต่ของต่&วแป็รที่!�บรรจ-ขอมลของอ1อป็เจ�ก เซึ่ต่ของข�าวสารซึ่$�งอ1อป็เจ�กจะต่อบสนองต่�อข�าวสารที่!�ไดเซึ่ต่ของข�าวสารซึ่$�งอ1อป็เจ�กจะต่อบสนองต่�อข�าวสารที่!�ได

ร&บจากภายนอก ร&บจากภายนอก เซึ่ต่ของว�ธ์!การ ซึ่$�งแต่�ละว�ธ์!การจะเป็�นโป็รแกรมที่!ด%าเน�นเซึ่ต่ของว�ธ์!การ ซึ่$�งแต่�ละว�ธ์!การจะเป็�นโป็รแกรมที่!ด%าเน�น

การก&บข�าวสาร และส�งขอมลกล&บ การก&บข�าวสาร และส�งขอมลกล&บ

Page 5: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ส��งที่!�ที่%าให้ต่องม!การใชิข�าวสารและว�ธ์!การระห้ว�าส��งที่!�ที่%าให้ต่องม!การใชิข�าวสารและว�ธ์!การระห้ว�างอ1อป็เจ�ก พั�จารณาเอนต่�น!' งอ1อป็เจ�ก พั�จารณาเอนต่�น!' employee employee ในระบบธ์นาค์าร ในระบบธ์นาค์าร ที่-ก ๆ ค์นจะม!การค์%านวณเง�นรายไดที่&'งป็7 แต่�ม!ค์วามที่-ก ๆ ค์นจะม!การค์%านวณเง�นรายไดที่&'งป็7 แต่�ม!ค์วามแต่กต่�างก&นในเร0�องของการค์%านวณ ต่ามป็ระเภที่ของแต่กต่�างก&นในเร0�องของการค์%านวณ ต่ามป็ระเภที่ของพัน&กงาน เชิ�น ผ่จ&ดการ ไดร&บโบน&สต่ามก%าไรที่!�ธ์นาค์ารพัน&กงาน เชิ�น ผ่จ&ดการ ไดร&บโบน&สต่ามก%าไรที่!�ธ์นาค์ารที่%าได ห้ร0อพัน&กงานเค์าเต่อร� จะไดร&บโบน&สต่ามชิ&�วโมงที่%าได ห้ร0อพัน&กงานเค์าเต่อร� จะไดร&บโบน&สต่ามชิ&�วโมงการที่%างาน เป็�นต่น เราสามารถุซึ่�อนโป็รแกรมในส�วนการที่%างาน เป็�นต่น เราสามารถุซึ่�อนโป็รแกรมในส�วนของการค์%านวณเง�นเด0อน โดยอ1อป็เจ�กจะร ว�าต่องของการค์%านวณเง�นเด0อน โดยอ1อป็เจ�กจะร ว�าต่องค์%านวณเง�นรายไดที่&'งป็7อย�างไร โดยที่!�อ1อป็เจ�กของค์%านวณเง�นรายไดที่&'งป็7อย�างไร โดยที่!�อ1อป็เจ�กของพัน&กงานที่-กค์นม! พัน&กงานที่-กค์นม! interface interface เด!ยวก&น ในระบบเชิ�งว&ต่ถุ- เด!ยวก&น ในระบบเชิ�งว&ต่ถุ- เราสามารถุที่!�จะแกไขน�ยามของว�ธ์!การ ต่&วแป็ร โดยไม�ม!เราสามารถุที่!�จะแกไขน�ยามของว�ธ์!การ ต่&วแป็ร โดยไม�ม!ผ่ลกระที่บต่�อระบบ ซึ่$�งค์-ณสมบ&ต่�น!'เป็�นขอด!ของการผ่ลกระที่บต่�อระบบ ซึ่$�งค์-ณสมบ&ต่�น!'เป็�นขอด!ของการเข!ยนโป็รแกรมเชิ�งว&ต่ถุ-เข!ยนโป็รแกรมเชิ�งว&ต่ถุ-

Page 6: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ว�ธ์!การของอ1อป็เจ�กสามารถุจ%าแนกได ว�ธ์!การของอ1อป็เจ�กสามารถุจ%าแนกได 2 2 กล-�มค์0อ กล-�มค์0อ ป็ระเภที่อ�านอย�างเด!ยว ห้ร0อ ป็ระเภที่ ป็ระเภที่อ�านอย�างเด!ยว ห้ร0อ ป็ระเภที่ Update Update ถุาเป็�นว�ธ์!ถุาเป็�นว�ธ์!การแบบอ�านอย�างเด!ยวจะไม�ม!ผ่ลกระที่บต่�อขอมลในการแบบอ�านอย�างเด!ยวจะไม�ม!ผ่ลกระที่บต่�อขอมลในอ1อป็เจ�ก ในขณะที่!� อ1อป็เจ�ก ในขณะที่!� Update Update จะที่%าการเป็ล!�ยนแป็ลงขอมลจะที่%าการเป็ล!�ยนแป็ลงขอมลภายในอ1อป็เจ�กได ซึ่$�งข�าวสารที่!�อ1อป็เจ�กจะต่อบสนองว�าภายในอ1อป็เจ�กได ซึ่$�งข�าวสารที่!�อ1อป็เจ�กจะต่อบสนองว�าเป็�นแบบอ�านอย�างเด!ยวห้ร0อแบบ เป็�นแบบอ�านอย�างเด!ยวห้ร0อแบบ update update น&'นข$'นอย�ก&บน&'นข$'นอย�ก&บว�ธ์!การ ว�ธ์!การ implement implement ข�าวสารข�าวสาร

ส%าห้ร&บแอต่ที่ร�บ�วต่�ที่!�ไดจากการค์%านวณน&'น ในส%าห้ร&บแอต่ที่ร�บ�วต่�ที่!�ไดจากการค์%านวณน&'น ในระบบเชิ�งว&ต่ถุ-จะใชิข�าวสารแบบอ�านอย�างเด!ยว กล�าวค์0อระบบเชิ�งว&ต่ถุ-จะใชิข�าวสารแบบอ�านอย�างเด!ยว กล�าวค์0อที่-ก ๆ แอต่ที่ร�บ�วต่�ของเอนต่�ต่!'ต่องป็ระกอบไป็ดวยที่-ก ๆ แอต่ที่ร�บ�วต่�ของเอนต่�ต่!'ต่องป็ระกอบไป็ดวยข�าวสาร ข�าวสาร 2 2 อ&นค์0อ ข�าวสารส%าห้ร&บการอ�านขอมลของอ&นค์0อ ข�าวสารส%าห้ร&บการอ�านขอมลของแอต่ที่ร�บ�วต่� และอ!กข�าวสารส%าห้ร&บการป็ร&บป็ร-งขอมลแอต่ที่ร�บ�วต่� และอ!กข�าวสารส%าห้ร&บการป็ร&บป็ร-งขอมล

Page 7: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

2. Object Classes2. Object Classes

โดยป็กต่� ในฐานขอมลจะม!อ1อป็เจ�กที่!�ค์ลาย ๆ ก&น โดยป็กต่� ในฐานขอมลจะม!อ1อป็เจ�กที่!�ค์ลาย ๆ ก&น ห้มายค์วามว�าอ1อป็เจ�กม!การต่อบสนองต่�อข�าวสารห้มายค์วามว�าอ1อป็เจ�กม!การต่อบสนองต่�อข�าวสารเด!ยวก&น ใชิว�ธ์!การเด!ยวก&น และม!ต่&วแป็รชิ0�อเด!ยวก&น เด!ยวก&น ใชิว�ธ์!การเด!ยวก&น และม!ต่&วแป็รชิ0�อเด!ยวก&น ชิน�ดขอมลเด!ยวก&น ด&งน&'นเราจ$งจ&ดกล-�มของอ1อป็เจ�กที่!�ชิน�ดขอมลเด!ยวก&น ด&งน&'นเราจ$งจ&ดกล-�มของอ1อป็เจ�กที่!�ล&กษณะค์ลาย ๆ ก&น แลวก%าห้นดเป็�นค์ลาส ๆ ห้น$�ง และล&กษณะค์ลาย ๆ ก&น แลวก%าห้นดเป็�นค์ลาส ๆ ห้น$�ง และแต่�ละอ1อป็เจ�กที่!�สรางมาจากค์ลาสก�เร!ยกว�า เป็�น แต่�ละอ1อป็เจ�กที่!�สรางมาจากค์ลาสก�เร!ยกว�า เป็�น instanceinstance ของค์ลาส อ1อป็เจ�กที่-กต่&วจะม!ล&กษณะเห้ม0อนก&น จะแต่กของค์ลาส อ1อป็เจ�กที่-กต่&วจะม!ล&กษณะเห้ม0อนก&น จะแต่กต่�างก&นต่รงขอมลที่!�ถุกก%าห้นดให้ก&บต่&วแป็รในอ1อป็เจ�กต่�างก&นต่รงขอมลที่!�ถุกก%าห้นดให้ก&บต่&วแป็รในอ1อป็เจ�ก

เราจะน�ยามค์ลาส เราจะน�ยามค์ลาส employee employee ในรป็ของค์%าส&�งล%าลอง ในรป็ของค์%าส&�งล%าลอง ซึ่$�งแสดงต่&วแป็รและข�าวสารซึ่$�งอ1อป็เจ�กจะต่อบสนอง ในซึ่$�งแสดงต่&วแป็รและข�าวสารซึ่$�งอ1อป็เจ�กจะต่อบสนอง ในต่&วอย�างน!'ย&งไม�ม!ว�ธ์!การที่!�จะมาจ&กการก&บข�าวสารต่&วอย�างน!'ย&งไม�ม!ว�ธ์!การที่!�จะมาจ&กการก&บข�าวสาร

Page 8: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

class employee {class employee {

/* Variables *//* Variables */

string name;string name;

string address;string address;

date start-date;date start-date;

int salary;int salary;

/* Messages *//* Messages */

int annual-salary();int annual-salary();

string get-name();string get-name();

string get-address();string get-address();

int set-address(string new-address);int set-address(string new-address);

int employment-length();int employment-length();

};};

Page 9: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

จากน�ยามของค์ลาส จากน�ยามของค์ลาส employee employee จะป็ระกอบจะป็ระกอบไป็ดวยต่&วแป็ร ไป็ดวยต่&วแป็ร name name และ และ address address ซึ่$�งม!ชิน�ดขอมลซึ่$�งม!ชิน�ดขอมลเป็�น เป็�น string start-date string start-date ม!ชิน�ดขอมลเป็�น ม!ชิน�ดขอมลเป็�น date date และ และ salary salary ม!ชิน�ดขอมลเป็�น ม!ชิน�ดขอมลเป็�น integer integer แต่�ละอ1อป็เจ�กจะแต่�ละอ1อป็เจ�กจะต่อบสนองข�าวสาร ต่อบสนองข�าวสาร 5 5 ข�าวสาร ค์0อ ข�าวสาร ค์0อ annual-salary annual-salary get-name get-address set-address get-name get-address set-address แลและ ะ employment-length employment-length ข�าวสารแต่�ละอ&นม!การข�าวสารแต่�ละอ&นม!การก%าห้นดชิน�ดขอมลไวดานห้นา ห้มายถุ$งชิน�ดของก%าห้นดชิน�ดขอมลไวดานห้นา ห้มายถุ$งชิน�ดของการต่อบสนองขอมลกล&บไป็ย&งข�าวสารน&'นการต่อบสนองขอมลกล&บไป็ย&งข�าวสารน&'น

Page 10: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

3. Inheritance3. Inheritance

ร�ปท�� 14.1 แสดงล%าด&บชิ&'นของค์ลาสแบบ Specialization

Page 11: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

หล�กการข้องล!าด�บชิ�"นข้องคิลาสจะเหมู%อนก�บหล�กการข้องล!าด�บชิ�"นข้องคิลาสจะเหมู%อนก�บ specialization specialization ใน ใน E-R E-R โมูเดล ร�ปท�� โมูเดล ร�ปท�� 14.2 14.2 แสดงแสดงล!าด�บชิ�"นข้องคิลาสท��เหมู%อน ล!าด�บชิ�"นข้องคิลาสท��เหมู%อน E-R E-R ไดอะแกรมูในไดอะแกรมูใน

ร�ปท�� ร�ปท�� 14.114.1

ร�ปท�� 14.2 แสดงล%าด&บชิ&'นของค์ลาสที่!�เห้ม0อนก&บE-R ในรป็ที่!� 1

Page 12: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ล%าด&บชิ&'นของค์ลาสสามารถุก%าห้นดเป็�นค์%าส&�งล%าลองไดด&งล%าด&บชิ&'นของค์ลาสสามารถุก%าห้นดเป็�นค์%าส&�งล%าลองไดด&งรป็ที่!� รป็ที่!� 3 3 ในที่!�น!�ย&งไม�ขอกล�าวถุ$งว�ธ์!การของแต่�ละค์ลาสในที่!�น!�ย&งไม�ขอกล�าวถุ$งว�ธ์!การของแต่�ละค์ลาส

class person {class person {string name;string name;

string address;string address;};};

class customer isa person {class customer isa person {int credit-rating;int credit-rating;

};};class employee isa person {class employee isa person {

date start-date;date start-date;int salary;int salary;

};};

Page 13: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

class officer isa employee {class officer isa employee {int office-number;int office-number;

int expense-account-number;int expense-account-number;};};

class teller isa employee {class teller isa employee {int hours-per-week;int hours-per-week;int station-number;int station-number;

};};class secretary isa employee {class secretary isa employee {

int hours-per-week;int hours-per-week;string manager;string manager;

};};

ร�ปท�� 14.3 แสดงค์%าส&�งล%าลองในการน�ยามล%าด&บชิ&'นของค์ลาส

Page 14: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ค์%าว�า ค์%าว�า isa isa ใชิส%าห้ร&บบอกว�าค์ลาสน&'นม!ล&กษณะเชิ�นใชิส%าห้ร&บบอกว�าค์ลาสน&'นม!ล&กษณะเชิ�นเด!ยวก&นก&บอ!กค์ลาสห้น$�ง โดยเราเร!ยกค์ลาสที่!� เด!ยวก&นก&บอ!กค์ลาสห้น$�ง โดยเราเร!ยกค์ลาสที่!� specialization specialization ว�า ว�า ssubclassesubclasses ต่&วอย�างเชิ�น ต่&วอย�างเชิ�น employeeemployee เป็�น เป็�น subclass subclass ของ ของ personperson และ และ tellerteller เป็�น เป็�น subclass subclass ของของemployee employee ในที่างกล&บก&น ในที่างกล&บก&น employeeemployee ก�เป็�น ก�เป็�น superclasuperclass ss ของ ของ tellerteller

ขอด!ของการส0บที่อดค์-ณสมบ&ต่�ในระบบเชิ�งว&ต่ถุ-ขอด!ของการส0บที่อดค์-ณสมบ&ต่�ในระบบเชิ�งว&ต่ถุ-ค์0อ ม!ค์-ณล&กษณะของ ค์0อ ม!ค์-ณล&กษณะของ code-reuse code-reuse น&�นค์0อว�ธ์!การใด ๆ น&�นค์0อว�ธ์!การใด ๆ ของค์ลาส ของค์ลาส A A สามารถุที่!�จะถุกเร!ยกใชิโดยค์ลาส สามารถุที่!�จะถุกเร!ยกใชิโดยค์ลาส B B ซึ่$�งเป็�น ซึ่$�งเป็�น subclass A subclass A ไดที่&นที่! ที่%าให้ไม�ต่องเข!ยนค์%าส&�งในค์ลาส ไดที่&นที่! ที่%าให้ไม�ต่องเข!ยนค์%าส&�งในค์ลาส B B อ!กอ!ก

Page 15: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

4. Multiple Inheritance4. Multiple Inheritance

โดยที่&�วไป็แลวโค์รงสรางของค์ลาสแบบโดยที่&�วไป็แลวโค์รงสรางของค์ลาสแบบล%าด&บชิ&'นก�เพั!ยงพัอต่�อการแสดงโมเดลของขอมลล%าด&บชิ&'นก�เพั!ยงพัอต่�อการแสดงโมเดลของขอมลแลว แต่�ในบางกรณ! เชิ�นเราต่องการจ%าแนกแลว แต่�ในบางกรณ! เชิ�นเราต่องการจ%าแนกระห้ว�าง ระห้ว�าง teller teller และ และ secretaries secretaries แบบ แบบ full-time full-time และ และ part-time part-time ในรป็ที่!� ในรป็ที่!� 2 2 ซึ่$�งเราก�สามารถุสราง ซึ่$�งเราก�สามารถุสราง subclassubclass s ของ ของ part-time-teller full-time-teller part-timepart-time-teller full-time-teller part-time-secretary -secretary และ และ full-time-secretary full-time-secretary ด&งรป็ที่!� ด&งรป็ที่!� 14.414.4

Page 16: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ร�ปท�� 14.4 แสดงล%าด&บชิ&'นของค์ลาส ของพัน&กงาน full-time และ part-time

Page 17: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

แต่�จะเก�ดป็8ญห้าสองอย�างค์0อ แต่�จะเก�ดป็8ญห้าสองอย�างค์0อ (1) (1) ป็8ญห้าค์วามไม�ป็8ญห้าค์วามไม�สอดค์ลองในการป็ร&บป็ร-งขอมล เน0�องมาจาก ต่&วแป็รและว�ธ์!สอดค์ลองในการป็ร&บป็ร-งขอมล เน0�องมาจาก ต่&วแป็รและว�ธ์!การของพัน&กงาน การของพัน&กงาน full-time full-time ต่องถุกก%าห้นดสองค์ร&'ง ค์0อ ต่องถุกก%าห้นดสองค์ร&'ง ค์0อ fullfull-time-teller -time-teller และ และ full-time-secretary full-time-secretary ในที่%านองเด!ยวก&นก&บในที่%านองเด!ยวก&นก&บพัน&กงาน พัน&กงาน part-time part-time เม0�อไรก�ต่ามที่!�ต่องม!การเป็ล!�ยนแป็ลงเม0�อไรก�ต่ามที่!�ต่องม!การเป็ล!�ยนแป็ลงขอมลของพัน&กงาน ก�ต่องม!การเป็ล!�ยนแป็ลงสองที่!� ขอมลของพัน&กงาน ก�ต่องม!การเป็ล!�ยนแป็ลงสองที่!� (2) (2) ล%าด&บชิ&'นของค์ลาสไม�สามารถุแสดงพัน&งงานกล-�มอ0�นที่!�ไม�ใชิ� ล%าด&บชิ&'นของค์ลาสไม�สามารถุแสดงพัน&งงานกล-�มอ0�นที่!�ไม�ใชิ� ffull-time ull-time ห้ร0อ ห้ร0อ part-time part-time ไดได

ว�ธ์!การ ว�ธ์!การ Multiple inheritanceMultiple inheritance เป็�นว�ธ์!การที่!�ยอมให้ค์ลาสเป็�นว�ธ์!การที่!�ยอมให้ค์ลาสห้น$�งส0บที่อดค์-ณสมบ&ต่�และว�ธ์!การจากห้ลาย ๆ ค์ลาสไดห้น$�งส0บที่อดค์-ณสมบ&ต่�และว�ธ์!การจากห้ลาย ๆ ค์ลาสได

ค์วามส&มพั&นธ์�ระห้ว�าง ค์วามส&มพั&นธ์�ระห้ว�าง class class และ และ subclass subclass แสดงไดโดย แสดงไดโดย directed acyclic graph (DAG) directed acyclic graph (DAG) ซึ่$�งใชิในกรณ!ที่!�ค์ลาส ม!ซึ่$�งใชิในกรณ!ที่!�ค์ลาส ม! superclass superclass มากกว�าห้น$�งค์ลาสมากกว�าห้น$�งค์ลาส

Page 18: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ร�ปท�� 14.5 แสดงค์ลาส DAG

Page 19: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

จากรป็ที่!� จากรป็ที่!� 14.5 14.5 เราก%าห้นดค์ลาส เราก%าห้นดค์ลาส part-time part-time และค์ลาส และค์ลาส full-time full-time ข$'นมาเพั0�อเก�บขอมลและว�ธ์!ข$'นมาเพั0�อเก�บขอมลและว�ธ์!การของพัน&กงาน การของพัน&กงาน part-time part-time และ และ full-time full-time จากจากน&'น สรางค์ลาส น&'น สรางค์ลาส part-time-teller part-time-teller ซึ่$�งเป็�น ซึ่$�งเป็�น subclass subclass ของ ของ teller teller และ และ part-time part-time ค์ลาส ค์ลาส part-time-teller part-time-teller จะส0บที่อดค์-ณสมบ&ต่� และว�ธ์!การของที่&'ง จะส0บที่อดค์-ณสมบ&ต่� และว�ธ์!การของที่&'ง teller teller และ และ part-time part-time มา ซึ่$�งจะเห้�นว�าไม�เก�ดค์วามซึ่%'าซึ่อนอย�างมา ซึ่$�งจะเห้�นว�าไม�เก�ดค์วามซึ่%'าซึ่อนอย�างที่!�เก�ดข$'นในรป็ที่!� ที่!�เก�ดข$'นในรป็ที่!� 14.4 14.4 แลวแลว

เม0�อม!การส0บที่อดแบบห้ลายค์ลาส อาจจะม!เม0�อม!การส0บที่อดแบบห้ลายค์ลาส อาจจะม!ค์วามค์ล-มเค์ล0อเก�ดข$'นในกรณ!ที่!�ต่&วแป็รห้ร0อว�ธ์!ค์วามค์ล-มเค์ล0อเก�ดข$'นในกรณ!ที่!�ต่&วแป็รห้ร0อว�ธ์!การที่!�ส0บที่อดมาจากห้ลายค์ลาสม!ชิ0�อเด!ยวก&นการที่!�ส0บที่อดมาจากห้ลายค์ลาสม!ชิ0�อเด!ยวก&น

Page 20: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ต่&วอย�างเชิ�น เราก%าห้นดการจ�ายเง�น ต่&วอย�างเชิ�น เราก%าห้นดการจ�ายเง�น pay pay ของพัน&กงานแต่�ละของพัน&กงานแต่�ละป็ระเภที่ด&งน!'ป็ระเภที่ด&งน!'

full-timefull-time: : จ�ายเง�นอย�ระห้ว�าง จ�ายเง�นอย�ระห้ว�าง 0 0 ถุ$ง ถุ$ง 100,000 100,000 ของเง�นรายไดที่&'งป็7 ของเง�นรายไดที่&'งป็7 part-timepart-time: : จ�ายเง�นอย�ระห้ว�าง จ�ายเง�นอย�ระห้ว�าง 0 to 20 0 to 20 เป็�นค์�าแรงต่�อชิ&�วโมงเป็�นค์�าแรงต่�อชิ&�วโมง. .

tellerteller: : จ�ายเง�นอย�ระห้ว�าง จ�ายเง�นอย�ระห้ว�าง 0 to 20,000 0 to 20,000 ของเง�นรายไดที่&'งป็7 ของเง�นรายไดที่&'งป็7 secretarysecretary: : จ�ายเง�นอย�ระห้ว�าง จ�ายเง�นอย�ระห้ว�าง 0 to 25,000 0 to 25,000 ของเง�นรายไดที่&'งป็7 ของเง�นรายไดที่&'งป็7 พั�จารณาค์ลาส พั�จารณาค์ลาส part-time-secretary part-time-secretary ซึ่$�งส0บที่อดต่&วแป็ร ซึ่$�งส0บที่อดต่&วแป็ร pay pay มามา

จากค์ลาส จากค์ลาส part-timepart-time ห้ร0อ ห้ร0อ secretarysecretary ผ่ลล&พัธ์�ที่!�ไดม!ห้ลายกรณ! ผ่ลล&พัธ์�ที่!�ไดม!ห้ลายกรณ! ข$'นอย�ก&บว�ธ์!การว�าจะจ&ดการอย�างไรข$'นอย�ก&บว�ธ์!การว�าจะจ&ดการอย�างไร

ส0บที่อดมาที่&'งสองค์ลาส แลวเป็ล!�ยนชิ0�อของ เป็�น ส0บที่อดมาที่&'งสองค์ลาส แลวเป็ล!�ยนชิ0�อของ เป็�น part-time-paypart-time-pay และ และ secretary-paysecretary-pay

เล0อกต่&วใดต่&วห้น$�ง โดยดจากล%าด&บของการสรางค์ลาส เล0อกต่&วใดต่&วห้น$�ง โดยดจากล%าด&บของการสรางค์ลาส บ&งค์&บให้เล0อกเลยว�าจะใชิ บ&งค์&บให้เล0อกเลยว�าจะใชิ pay pay ต่&วไห้น ต่&วไห้น

แสดงผ่ลว�าเก�ดค์วามผ่�ดพัลาด แสดงผ่ลว�าเก�ดค์วามผ่�ดพัลาด

Page 21: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

5.Object Identity5.Object Identity

Object identity: Object identity: อ1อป็เจ�กจะย&งค์งร&กษาค์วามเป็�น อ1อป็เจ�กจะย&งค์งร&กษาค์วามเป็�น identity identity แมว�าขอมลของต่&วแป็รห้ร0อว�ธ์!การของ อ1อป็เจ�แมว�าขอมลของต่&วแป็รห้ร0อว�ธ์!การของ อ1อป็เจ�กม!การเป็ล!�ยนแป็ลง แนวค์�ดของ กม!การเป็ล!�ยนแป็ลง แนวค์�ดของ identity identity น!'ไม�ไดน%าไป็น!'ไม�ไดน%าไป็ใชิก&บที่เป็:ลของฐานขอมลเชิ�งส&มพั&นธ์� ซึ่$�งในระบบเชิ�งใชิก&บที่เป็:ลของฐานขอมลเชิ�งส&มพั&นธ์� ซึ่$�งในระบบเชิ�งส&มพั&นธ์�น&'น ที่เป็:ลของร!เลชิ&นจะแต่กต่�างก&นดวยขอมลที่!�ส&มพั&นธ์�น&'น ที่เป็:ลของร!เลชิ&นจะแต่กต่�างก&นดวยขอมลที่!�ถุกเก�บอย�ถุกเก�บอย�

รป็แบบต่�าง ๆ ของ รป็แบบต่�าง ๆ ของ identityidentity

Page 22: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

Value: Value: ห้มายถุ$งค์�าของขอมลที่!�ใชิในการ ห้มายถุ$งค์�าของขอมลที่!�ใชิในการ identity identity เชิ�น เชิ�น primary key primary key

Name: Name: เป็�นชิ0�อที่!�ผ่ใชิก%าห้นดเพั0�อใชิในการ เป็�นชิ0�อที่!�ผ่ใชิก%าห้นดเพั0�อใชิในการ identity identity เชิ�น ชิ0�อแฟ้<มในระบบแฟ้<มขอมล เชิ�น ชิ0�อแฟ้<มในระบบแฟ้<มขอมล

Built-in: Built-in: เป็�นการก%าห้นด เป็�นการก%าห้นด identity identity โดยอ&ต่โนม&ต่�โดยอ&ต่โนม&ต่�ให้ก&บขอมล ห้ร0อภาษาโป็รแกรม โดยผ่ใชิไม�จ%าเป็�นให้ก&บขอมล ห้ร0อภาษาโป็รแกรม โดยผ่ใชิไม�จ%าเป็�นต่องก%าห้นด ต่องก%าห้นด identifier identifier รป็แบบน!'ถุกใชิในระบบเชิ�งรป็แบบน!'ถุกใชิในระบบเชิ�งว&ต่ถุ- แต่�ละอ1อป็เจ�กจะถุกก%าห้นด ว&ต่ถุ- แต่�ละอ1อป็เจ�กจะถุกก%าห้นด identifier identifier โดยโดยอ&ต่โนม&ต่� เม0�ออ1อป็เจ�กถุกสรางข$'น อ&ต่โนม&ต่� เม0�ออ1อป็เจ�กถุกสรางข$'น

ในที่างป็ฏิ�บ&ต่� ในที่างป็ฏิ�บ&ต่� Object identity Object identity จะถุกก%าห้นดให้ม!จะถุกก%าห้นดให้ม!ค์�าไม�ซึ่%'าก&น เร!ยกว�า ค์�าไม�ซึ่%'าก&น เร!ยกว�า OID OID ซึ่$�งค์�าของ ซึ่$�งค์�าของ OID OID น!'จะไม�น!'จะไม�สามารถุมองเห้�นไดโดยผ่ใชิที่&�วไป็ แต่�จะถุกใชิโดยระบบสามารถุมองเห้�นไดโดยผ่ใชิที่& �วไป็ แต่�จะถุกใชิโดยระบบเพั0�อระบ-อ1อป็เจ�กแต่�ละอ1อป็เจ�กเพั0�อระบ-อ1อป็เจ�กแต่�ละอ1อป็เจ�ก

Page 23: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

6. Object Containment6. Object Containment

อ1อป็เจ�กที่!�สามารถุบรรจ-อ1อป็เจ�กอ0�น ๆ ไดจะอ1อป็เจ�กที่!�สามารถุบรรจ-อ1อป็เจ�กอ0�น ๆ ไดจะถุกเร!ยกว�า อ1อป็เจ�กเชิ�งซึ่อนถุกเร!ยกว�า อ1อป็เจ�กเชิ�งซึ่อน((complex complex objectobject))ห้ร0ออ1อป็เจ�กผ่สมห้ร0ออ1อป็เจ�กผ่สม((composite objectcomposite object) ) ซึ่$�งซึ่$�งสามารถุบรรจ-ซึ่อนก&นไดห้ลายชิ&'น น&�นค์0อเป็�นสามารถุบรรจ-ซึ่อนก&นไดห้ลายชิ&'น น&�นค์0อเป็�นล&กษณะค์วามส&มพั&นธ์�ที่!�อ1อป็เจ�กห้น$�งจะป็ระกอบดวล&กษณะค์วามส&มพั&นธ์�ที่!�อ1อป็เจ�กห้น$�งจะป็ระกอบดวยอ1อป็เจ�กห้ลาย ๆ อ1อป็เจ�กป็ระกอบเขาดวยก&นยอ1อป็เจ�กห้ลาย ๆ อ1อป็เจ�กป็ระกอบเขาดวยก&น

Page 24: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ต�วัอย่)าง ต�วัอย่)าง A bicycle design databaseA bicycle design database

รป็ที่!� 11.6 แสดงล%าด&บชิ&'นค์วามส&มพั&นธ์�ระห้ว�างอ1อป็เจ1ก ซึ่$�งค์วามส&มพั&นธ์�ใน

ล&กษณะน!' เป็�นล&กษณะของ is-part-of ซึ่$�งเป็�นค์นละแบบก&บ is-a ที่!�เก�ดจากการส0บที่อดค์ลาส

Page 25: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ล&กษณะการป็ระกอบก&นของอ1อป็เจ�กน!'เป็�นล&กษณะการป็ระกอบก&นของอ1อป็เจ�กน!'เป็�นห้ล&กการที่!�ส%าค์&ญอย�างห้น$�งในระบบเชิ�งว&ต่ถุ- ห้ล&กการที่!�ส%าค์&ญอย�างห้น$�งในระบบเชิ�งว&ต่ถุ- เน0�องจากจะที่%าให้การมองขอมลเร��มมองจากจ-ดเน0�องจากจะที่%าให้การมองขอมลเร��มมองจากจ-ดเล�ก ๆ ก�อน เชิ�น ค์นออกแบบลอ ก�จะม-�งไป็ก&บการเล�ก ๆ ก�อน เชิ�น ค์นออกแบบลอ ก�จะม-�งไป็ก&บการออกแบบลอ โดยไม�สนใจก&บส�วนอ0�นเชิ�น เก!ยร�ห้ร0อ ออกแบบลอ โดยไม�สนใจก&บส�วนอ0�นเชิ�น เก!ยร�ห้ร0อ เบรก จากน&'นพัน&กงานฝ่?ายการต่ลาดก�จะที่%าการเบรก จากน&'นพัน&กงานฝ่?ายการต่ลาดก�จะที่%าการก%าห้นดราค์าจ&กรยาน โดยน%าเอาขอมลส�วนต่�าง ๆ ก%าห้นดราค์าจ&กรยาน โดยน%าเอาขอมลส�วนต่�าง ๆ ที่!�เป็�นส�วนป็ระกอบของจ&กรยาน มาค์%านวณราค์าที่!�เป็�นส�วนป็ระกอบของจ&กรยาน มาค์%านวณราค์าต่�อไป็ต่�อไป็

Page 26: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ภาษาเชิ�งวั�ตถุ�ภาษาเชิ�งวั�ตถุ�1. 1. Object-Oriented LanguagesObject-Oriented Languages

ในการแสดงให้เห้�นถุ$งแนวที่างเชิ�งว&ต่ถุ- ห้ล&กการในการแสดงให้เห้�นถุ$งแนวที่างเชิ�งว&ต่ถุ- ห้ล&กการต่�าง ๆ จะถุกน%าไป็ใชิในการเข!ยนโป็รแกรมซึ่$�งสามารถุต่�าง ๆ จะถุกน%าไป็ใชิในการเข!ยนโป็รแกรมซึ่$�งสามารถุที่%าไดว�ธ์!ใดว�ธ์!ห้น$�งในน!'ที่%าไดว�ธ์!ใดว�ธ์!ห้น$�งในน!'1.1.น%าห้ล&กการเชิ�งว&ต่ถุ-ไป็ใชิเป็�นเค์ร0�องม0อในการออกแบบ น%าห้ล&กการเชิ�งว&ต่ถุ-ไป็ใชิเป็�นเค์ร0�องม0อในการออกแบบ เพั0�อด%าเน�นการในข&'นต่�อไป็ ต่&วอย�างเชิ�นการออกแบบเพั0�อด%าเน�นการในข&'นต่�อไป็ ต่&วอย�างเชิ�นการออกแบบฐานขอมลเชิ�งส&มพั&นธ์� เร��มจากการออกแบบ ฐานขอมลเชิ�งส&มพั&นธ์� เร��มจากการออกแบบ E-R E-R ไดอะแกรม จากน&'นก�แป็ลงไป็เป็�นร!เลชิ&น ไดอะแกรม จากน&'นก�แป็ลงไป็เป็�นร!เลชิ&น 2.2.ห้ล&กการเชิ�งว&ต่ถุ-ถุกน%าไป็รวมในภาษาใดภาษาห้น$�ง ห้ล&กการเชิ�งว&ต่ถุ-ถุกน%าไป็รวมในภาษาใดภาษาห้น$�ง เพั0�อใชิในการจ&ดการฐานขอมล ดวยว�ธ์!การน!'ก�ม!อย�ห้ลาย เพั0�อใชิในการจ&ดการฐานขอมล ดวยว�ธ์!การน!'ก�ม!อย�ห้ลาย ภาษาที่!�สามารถุรวมห้ล&กการเชิ�งว&ต่ถุ-ได ด&งน!' ภาษาที่!�สามารถุรวมห้ล&กการเชิ�งว&ต่ถุ-ได ด&งน!'

Page 27: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

--เพั��มค์วามสามารถุเชิ�งว&ต่ถุ-เขาไป็ใน ภาษา เพั��มค์วามสามารถุเชิ�งว&ต่ถุ-เขาไป็ใน ภาษา SQL SQL เพั0�อให้สามารถุจ&ดการก&บชิน�ดขอมลที่!�ซึ่&บซึ่อนได เพั0�อให้สามารถุจ&ดการก&บชิน�ดขอมลที่!�ซึ่&บซึ่อนได ซึ่$�งจะเร!ยกว�า ซึ่$�งจะเร!ยกว�า Object-relational system Object-relational system

--น%าภาษาโป็รแกรมที่!�ม!ล&กษณะเชิ�งว&ต่ถุ-อย�แลวมาน%าภาษาโป็รแกรมที่!�ม!ล&กษณะเชิ�งว&ต่ถุ-อย�แลวมาเพั��มค์วามสามารถุที่างดานฐานขอมลเขาไป็ ซึ่$�งจะเพั��มค์วามสามารถุที่างดานฐานขอมลเขาไป็ ซึ่$�งจะถุกเร!ยกว�า ถุกเร!ยกว�า persistent programming persistent programming languageslanguages

Page 28: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

2. 2. Persistent Programming LanguagesPersistent Programming Languages

Persistent data: Persistent data: ค์0อขอมลที่!�ย&งค์งอย�แมว�าโป็รแกรมค์0อขอมลที่!�ย&งค์งอย�แมว�าโป็รแกรมที่!�สรางขอมลน&'นข$'นมาไดถุกป็:ดไป็แลวก�ต่ามที่!�สรางขอมลน&'นข$'นมาไดถุกป็:ดไป็แลวก�ต่าม

Persistent programming language Persistent programming language ค์0อโป็รแกรมค์0อโป็รแกรมภาษาที่!�เพั��มส�วนส%าห้ร&บจ&ดการ ภาษาที่!�เพั��มส�วนส%าห้ร&บจ&ดการ persistent data persistent data ซึ่$�งแต่กต่�างซึ่$�งแต่กต่�างจากภาษาที่!�รวมจากภาษาที่!�รวม(embedded)(embedded)เอา เอา SQL SQL เขาไวในต่&วภาษาอย�าเขาไวในต่&วภาษาอย�านอย นอย 2 2 อย�างค์0ออย�างค์0อ1. 1. ในภาษาแบบ ในภาษาแบบ embedded embedded ชิน�ดขอมลของ ชิน�ดขอมลของ host language host language จะแต่กต่�างชิน�ดขอมลของภาษาจ&ดการขอมล ด&งน&'นจ$งจะแต่กต่�างชิน�ดขอมลของภาษาจ&ดการขอมล ด&งน&'นจ$งเป็�นห้นาที่!�ของน&กเข!ยนโป็รแกรมที่!�จะที่%าการแป็ลงชิน�ดเป็�นห้นาที่!�ของน&กเข!ยนโป็รแกรมที่!�จะที่%าการแป็ลงชิน�ดขอมลระห้ว�าง ขอมลระห้ว�าง host language host language และภาษาจ&ดการขอมล ซึ่$�งม!และภาษาจ&ดการขอมล ซึ่$�งม!อ-ป็สรรค์ห้ลายอย�างค์0ออ-ป็สรรค์ห้ลายอย�างค์0อ

Page 29: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

--โป็รแกรมที่!�ใชิในการแป็ลงระห้ว�างอ1อป็เจ�กและที่เป็:ล โป็รแกรมที่!�ใชิในการแป็ลงระห้ว�างอ1อป็เจ�กและที่เป็:ล จะไม�ไดม!การด%าเน�นการในเชิ�งว&ต่ถุ- ซึ่$�งอาจจะก�อให้จะไม�ไดม!การด%าเน�นการในเชิ�งว&ต่ถุ- ซึ่$�งอาจจะก�อให้

เก�ดค์วามผ่�ดพัลาดข$'นได เก�ดค์วามผ่�ดพัลาดข$'นได --การแป็ลงขอมลระห้ว�างขอมลที่!�อย�ในรป็แบบเชิ�งการแป็ลงขอมลระห้ว�างขอมลที่!�อย�ในรป็แบบเชิ�งว&ต่ถุ-ก&บขอมลที่!�อย�ในรป็แบบเชิ�งส&มพั&นธ์� จะต่องว&ต่ถุ-ก&บขอมลที่!�อย�ในรป็แบบเชิ�งส&มพั&นธ์� จะต่อง

เข!ยนโป็รแกรมเป็�นจ%านวนมาก เข!ยนโป็รแกรมเป็�นจ%านวนมาก ในที่างกล&บก&น ในที่างกล&บก&น persistent programmingpersistent programming

language language และภาษาส0บค์นขอมลถุกรวมเขาดวยก&น และภาษาส0บค์นขอมลถุกรวมเขาดวยก&น ก&บ ก&บ host language host language และที่&'งสองภาษาต่�างก�ม!การใชิและที่&'งสองภาษาต่�างก�ม!การใชิ

งานชิน�ดขอมลชิน�ดเด!ยวก&น ด&งน&'นอ1อป็เจ�กสามารถุงานชิน�ดขอมลชิน�ดเด!ยวก&น ด&งน&'นอ1อป็เจ�กสามารถุถุกสรางและถุกจ&ดเก�บในฐานขอมล โดยไม�ต่องม!การถุกสรางและถุกจ&ดเก�บในฐานขอมล โดยไม�ต่องม!การ

เป็ล!�ยนแป็ลงรป็แบบใด ๆ ที่&'งส�'นเป็ล!�ยนแป็ลงรป็แบบใด ๆ ที่&'งส�'น

Page 30: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

2. 2. น&กเข!ยนโป็รแกรมใชิงานล&กษณะ น&กเข!ยนโป็รแกรมใชิงานล&กษณะ embedded embedded SQL SQL เพั0�อไป็ด$งขอมลจากฐานขอมลเขาส�ห้น�วยเพั0�อไป็ด$งขอมลจากฐานขอมลเขาส�ห้น�วยค์วามจ%า ถุาม!การป็ร&บป็ร-งขอมลก�จะเข!ยนค์%าส&�งค์วามจ%า ถุาม!การป็ร&บป็ร-งขอมลก�จะเข!ยนค์%าส&�งเพั0�อส&�งให้น%าขอมลบ&นที่$กกล&บลงไป็ส�ฐานขอมลเพั0�อส&�งให้น%าขอมลบ&นที่$กกล&บลงไป็ส�ฐานขอมล

ส�วนใน ส�วนใน persistent programming language persistent programming language น&'น น&กเข!ยนโป็รแกรมสามารถุจ&ดการก&บ น&'น น&กเข!ยนโป็รแกรมสามารถุจ&ดการก&บ persistent data persistent data ไดโดยไมต่องม!การเข!ยนโป็รแกรมไดโดยไมต่องม!การเข!ยนโป็รแกรมเพั0�อด$งขอมลห้ร0อบ&นที่$กขอมลกล&บลงไป็ในฐานเพั0�อด$งขอมลห้ร0อบ&นที่$กขอมลกล&บลงไป็ในฐานขอมล ขอมล

Page 31: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

2.1 2.1 Persistence of ObjectsPersistence of Objects

--ภาษาโป็รแกรมเชิ�งว&ต่ถุ- สน&บสน-นห้ล&กการของอ1อป็เจ�กที่&'งภาษาโป็รแกรมเชิ�งว&ต่ถุ- สน&บสน-นห้ล&กการของอ1อป็เจ�กที่&'งการน�ยามอ1อป็เจ�ก การสรางอ1อป็เจ�ก แต่�อย�างไรก�ต่ามอ1อป็เจ�กการน�ยามอ1อป็เจ�ก การสรางอ1อป็เจ�ก แต่�อย�างไรก�ต่ามอ1อป็เจ�กเห้ล�าน!'ก�เก�ดข$'นเพั!ยงชิ&�วค์ราวเที่�าน&'น เม0�อป็:ดโป็รแกรม อ1อป็เจ�กเห้ล�าน!'ก�เก�ดข$'นเพั!ยงชิ&�วค์ราวเที่�าน&'น เม0�อป็:ดโป็รแกรม อ1อป็เจ�กเห้ล�าน&'นก�จะห้ายไป็ ด&งน&'นข&'นต่อนแรกค์0อต่องห้าว�ธ์!ที่%าให้อ1อป็เห้ล�าน&'นก�จะห้ายไป็ ด&งน&'นข&'นต่อนแรกค์0อต่องห้าว�ธ์!ที่%าให้อ1อป็เจ�กย&งค์งอย� ไม�ห้ายไป็เม0�อป็:ดโป็รแกรม ซึ่$�งก�ม!อย�ห้ลายว�ธ์!ค์0อ เจ�กย&งค์งอย� ไม�ห้ายไป็เม0�อป็:ดโป็รแกรม ซึ่$�งก�ม!อย�ห้ลายว�ธ์!ค์0อ -Persistence by class -Persistence by class เป็�นว�ธ์!ที่!�ง�ายที่!�ส-ดแต่�ไม�เห้มาะที่!�จะน%ามาเป็�นว�ธ์!ที่!�ง�ายที่!�ส-ดแต่�ไม�เห้มาะที่!�จะน%ามาใชิงาน ว�ธ์!การน!'เป็�นการป็ระกาศว�าค์ลาสสรางสรางข$'นเป็�นแบบ ใชิงาน ว�ธ์!การน!'เป็�นการป็ระกาศว�าค์ลาสสรางสรางข$'นเป็�นแบบ persistent persistent น&�นค์0ออ1อป็เจ�กที่-กอ1อป็เจ�กของค์ลาสจะเป็�น น&�นค์0ออ1อป็เจ�กที่-กอ1อป็เจ�กของค์ลาสจะเป็�น persistent persistent อ1อป็เจ�กไป็โดยป็ร�ยาย ซึ่$�งว�ธ์!การน!'ไม�ม!ค์วามย0ดห้ย-�น อ1อป็เจ�กไป็โดยป็ร�ยาย ซึ่$�งว�ธ์!การน!'ไม�ม!ค์วามย0ดห้ย-�น เน0�องจากม&นถุกใชิที่& 'งแบบชิ&�วค์ราวและ เน0�องจากม&นถุกใชิที่& 'งแบบชิ&�วค์ราวและ persistent persistent ในค์ลาสในค์ลาสเพั!ยงค์ลาสเด!ยว ในระบบจ&ดการฐานขอมลเชิ�งว&ต่ถุ- การเพั!ยงค์ลาสเด!ยว ในระบบจ&ดการฐานขอมลเชิ�งว&ต่ถุ- การป็ระกาศค์ลาสให้เป็�นแบบ ป็ระกาศค์ลาสให้เป็�นแบบ persistent persistent จะถุกมองว�าเป็�นค์ลาสที่!�จะถุกมองว�าเป็�นค์ลาสที่!�สามารถุที่%าให้ สามารถุที่%าให้ persist persist ได แที่นที่!�จะมองว�าเป็�นค์ลาสที่!� ได แที่นที่!�จะมองว�าเป็�นค์ลาสที่!� persist persist

Page 32: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

-Persistence by creation -Persistence by creation ว�ธ์!การน!'เป็�นการก%าห้นดรป็แบบในว�ธ์!การน!'เป็�นการก%าห้นดรป็แบบในการสราง การสราง persistent persistent อ1อป็เจ�ก โดยการเพั��มรป็แบบส%าห้ร&บอ1อป็เจ�ก โดยการเพั��มรป็แบบส%าห้ร&บสรางอ1อป็เจ�กชิ&�วค์ราว ด&งน&'นอ1อป็เจ�กที่!�ถุกสรางข$'นจะเป็�นสรางอ1อป็เจ�กชิ&�วค์ราว ด&งน&'นอ1อป็เจ�กที่!�ถุกสรางข$'นจะเป็�นแบบ แบบ persist persist ห้ร0อแบบชิ&�วค์ราว ก�ข$'นอย�ก&บต่อนที่!�สรางอ1อป็ห้ร0อแบบชิ&�วค์ราว ก�ข$'นอย�ก&บต่อนที่!�สรางอ1อป็เจ�ก ว�าจะสรางอย�างไร เจ�ก ว�าจะสรางอย�างไร -Persistence by marking -Persistence by marking ว�ธ์!น!'จะที่%าการก%าห้นดให้อ1อป็เจ�กว�ธ์!น!'จะที่%าการก%าห้นดให้อ1อป็เจ�กเป็�น เป็�น persistent persistent ห้ล&งจากที่!�ไดถุกสรางข$'นมา ที่-ก ๆ อ1อป็เจ�กห้ล&งจากที่!�ไดถุกสรางข$'นมา ที่-ก ๆ อ1อป็เจ�กถุกสรางข$'นมาแบบชิ&�วค์ราว แต่�ถุาอ1อป็เจ�กไห้นต่องการที่!�จะถุกสรางข$'นมาแบบชิ&�วค์ราว แต่�ถุาอ1อป็เจ�กไห้นต่องการที่!�จะให้ค์งอย�ห้ล&งจากจบโป็รแกรม ก�จะที่%าการก%าห้นดก�อนที่!�จะให้ค์งอย�ห้ล&งจากจบโป็รแกรม ก�จะที่%าการก%าห้นดก�อนที่!�จะจบโป็รแกรม จบโป็รแกรม -Persistence by reference -Persistence by reference อ1อป็เจ�กห้น$�งห้ร0อห้ลาย ๆ อ1อป็อ1อป็เจ�กห้น$�งห้ร0อห้ลาย ๆ อ1อป็เจ�กจะถุกก%าห้นดให้ เจ�กจะถุกก%าห้นดให้ persist persist ในล&กษณะเป็�น ในล&กษณะเป็�น root root ของอ1อป็ของอ1อป็เจ�ก ด&งน&'นอ1อป็เจ�กที่-กต่&วที่!�ถุกอางถุ$งจาก เจ�ก ด&งน&'นอ1อป็เจ�กที่-กต่&วที่!�ถุกอางถุ$งจาก root root ก�จะเป็�นแบบ ก�จะเป็�นแบบ persistent persistent

Page 33: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

2.2 2.2 Object Identity and PointersObject Identity and Pointers

เม0�อ เม0�อ persistent object persistent object ถุกสราง ม&นจะถุกก%าห้นด ถุกสราง ม&นจะถุกก%าห้นด persistent object identifierpersistent object identifier

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

ค์วามส&มพั&นธ์�ระห้ว�างอ1อป็เจ�กก&บต่%าแห้น�งที่างค์วามส&มพั&นธ์�ระห้ว�างอ1อป็เจ�กก&บต่%าแห้น�งที่างกายภาพัในแห้ล�งเก�บขอมล อาจม!การเป็ล!�ยนแป็ลงไดกายภาพัในแห้ล�งเก�บขอมล อาจม!การเป็ล!�ยนแป็ลงไดต่ลอดเวลา อย�างไรก�ต่าม ไดม!การแบ�งระด&บค์วามค์วามต่ลอดเวลา อย�างไรก�ต่าม ไดม!การแบ�งระด&บค์วามค์วามถุาวรไวด&งน!'ถุาวรไวด&งน!'

Page 34: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

-intraprocedure: Identity -intraprocedure: Identity จะค์งอย�ในขณะที่!�ก%าล&งที่%าค์%าส&�งจะค์งอย�ในขณะที่!�ก%าล&งที่%าค์%าส&�งของห้น$�งกระบวนค์วามของห้น$�งกระบวนค์วาม(procedure)(procedure)เชิ�น ต่&วแป็รชิน�ด เชิ�น ต่&วแป็รชิน�ด local local ภายในกระบวนค์วาม ภายในกระบวนค์วาม

-intraprogram: Identity -intraprogram: Identity จะค์งอย�ในขณะที่!�ก%าล&งที่%าค์%าส&�งจะค์งอย�ในขณะที่!�ก%าล&งที่%าค์%าส&�งของห้น$�งโป็รแกรมห้ร0อค์�วร! เชิ�นต่&วแป็รชิน�ด ของห้น$�งโป็รแกรมห้ร0อค์�วร! เชิ�นต่&วแป็รชิน�ด global global

-interprogram: Identity -interprogram: Identity จะค์งอย�จากโป็รแกรมห้น$�งไป็ส�จะค์งอย�จากโป็รแกรมห้น$�งไป็ส�อ!กโป็รแกรมห้น$�ง เชิ�น อ!กโป็รแกรมห้น$�ง เชิ�น pointers pointers ไป็ย&งขอมลในแฟ้<มบนไป็ย&งขอมลในแฟ้<มบนด�สก� แต่�ม&นสามารถุเป็ล!�ยนแป็ลงไดข$'นอย�ก&บว�ธ์!การด�สก� แต่�ม&นสามารถุเป็ล!�ยนแป็ลงไดข$'นอย�ก&บว�ธ์!การจ&ดเก�บขอมลในแฟ้<มถุาม!การเป็ล!�ยนแป็ลงระบบแฟ้<ม จ&ดเก�บขอมลในแฟ้<มถุาม!การเป็ล!�ยนแป็ลงระบบแฟ้<ม

-persistent-persistent: Identity : Identity จะค์งอย�ไม�เฉพัาะต่อนที่!�โป็รแกรมจะค์งอย�ไม�เฉพัาะต่อนที่!�โป็รแกรมก%าล&งที่%างานเที่�าน&'น แต่�จะเก!�ยวของก&บกรป็ร&บเป็ล!�ยนก%าล&งที่%างานเที่�าน&'น แต่�จะเก!�ยวของก&บกรป็ร&บเป็ล!�ยนโค์รงสรางของขอมลดวย ซึ่$�งการค์งอย�ในล&กษณะน!'จะโค์รงสรางของขอมลดวย ซึ่$�งการค์งอย�ในล&กษณะน!'จะถุกใชิในระบบเชิ�งว&ต่ถุ- ถุกใชิในระบบเชิ�งว&ต่ถุ-

Page 35: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

2.3 Storage and Access of Persistent 2.3 Storage and Access of Persistent ObjectsObjects

อ1อป็เจ�กถุกจ&ดเก�บในฐานขอมลอย�างไร ขอมลของแต่�ละอ1อป็เจ�กถุกจ&ดเก�บในฐานขอมลอย�างไร ขอมลของแต่�ละอ1อป็เจ�กก�จะถุกจ&ดเก�บแยกเฉพัาะไป็แต่�ละอ1อป็เจ�ก และส�วนของอ1อป็เจ�กก�จะถุกจ&ดเก�บแยกเฉพัาะไป็แต่�ละอ1อป็เจ�ก และส�วนของโป็รแกรมที่!�ใชิเข!ยนเมธ์อดก�ค์วรถุกจ&ดเก�บไวในส�วนของ โป็รแกรมที่!�ใชิเข!ยนเมธ์อดก�ค์วรถุกจ&ดเก�บไวในส�วนของ database database schema schema รวมไป็ถุ$งการก%าห้นดชิน�ดขอมลต่�าง ๆ ของค์ลาส อย�างไรรวมไป็ถุ$งการก%าห้นดชิน�ดขอมลต่�าง ๆ ของค์ลาส อย�างไรก�ต่ามส�วนมากจะม!การจ&ดเก�บไวในไฟ้ล�แยกออกมาจากฐานขอมลก�ต่ามส�วนมากจะม!การจ&ดเก�บไวในไฟ้ล�แยกออกมาจากฐานขอมลการค์นห้าอ1อป็เจ�กในฐานขอมลที่%าไดห้ลายว�ธ์!ค์0อการค์นห้าอ1อป็เจ�กในฐานขอมลที่%าไดห้ลายว�ธ์!ค์0อ1.1.บอกชิ0�อของอ1อป็เจ�ก เห้มาะก&บจ%านวนอ1อป็เจ�กนอย ๆ บอกชิ0�อของอ1อป็เจ�ก เห้มาะก&บจ%านวนอ1อป็เจ�กนอย ๆ 2.2.ใชิ ใชิ object identifiers object identifiers ห้ร0อ ห้ร0อ persistent pointers persistent pointers ไป็ที่!�อ1อป็เจ�ก ซึ่$�งไป็ที่!�อ1อป็เจ�ก ซึ่$�งสามารถุถุกจ&ดเก�บไวภายนอกได ไม�เห้ม0อนก&บการบอกชิ0�อ ต่&วชิ!'สามารถุถุกจ&ดเก�บไวภายนอกได ไม�เห้ม0อนก&บการบอกชิ0�อ ต่&วชิ!'เห้ล�าน!'ไม�ต่องม!การที่%าอะไรอ!ก ม&นสามารถุที่!�จะชิ!'ไป็ย&งต่%าแห้น�งที่!�เห้ล�าน!'ไม�ต่องม!การที่%าอะไรอ!ก ม&นสามารถุที่!�จะชิ!'ไป็ย&งต่%าแห้น�งที่!�เก�บขอมลในฐานขอมลไดที่&นที่! เก�บขอมลในฐานขอมลไดที่&นที่!

Page 36: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

3.3.เก�บค์อลเลกชิ&นของอ1อป็เจ�ก และยอมให้โป็รแกรมเก�บค์อลเลกชิ&นของอ1อป็เจ�ก และยอมให้โป็รแกรมที่%าการค์นห้าอ1อป็เจ�กที่!�ต่องการในค์อลเลกชิ&นได ค์อลเลกชิ&นที่%าการค์นห้าอ1อป็เจ�กที่!�ต่องการในค์อลเลกชิ&นได ค์อลเลกชิ&นของอ1อป็เจ�กสามารถุมองเป็�น ของอ1อป็เจ�กสามารถุมองเป็�น collection type collection type ได ได ป็ระกอบไป็ป็ระกอบไป็ดวย ดวย sets multiset list sets multiset list และอ0�น ๆ และม!ค์ลาสพั�เศษที่!�เร!ยกว�า และอ0�น ๆ และม!ค์ลาสพั�เศษที่!�เร!ยกว�า class extent class extent ซึ่$�งเป็�นค์อลเลกชิ&นของอ1อป็เจ�กที่-กต่&วของค์ลาสซึ่$�งเป็�นค์อลเลกชิ&นของอ1อป็เจ�กที่-กต่&วของค์ลาส ซึ่$�งเม0�อไรก�ต่ามที่!�อ1อป็เจ�กถุกสราง อ1อป็เจ�กน&'นก�จะถุกเพั��มซึ่$�งเม0�อไรก�ต่ามที่!�อ1อป็เจ�กถุกสราง อ1อป็เจ�กน&'นก�จะถุกเพั��มเขาไป็ใน เขาไป็ใน class extent class extent ที่&นที่! และ เม0�อไรที่!�อ1อป็เจ�กถุกลบ อ1อป็ที่&นที่! และ เม0�อไรที่!�อ1อป็เจ�กถุกลบ อ1อป็เจ�กน&'นก�จะถุกลบออกจาก เจ�กน&'นก�จะถุกลบออกจาก class extent class extent เชิ�นก&น เชิ�นก&น

ระบบฐานขอมลเชิ�งว&ต่ถุ-แที่บที่-กระบบสน&บสน-นการเขาระบบฐานขอมลเชิ�งว&ต่ถุ-แที่บที่-กระบบสน&บสน-นการเขาถุ$ง ถุ$ง persistent objects persistent objects ที่&'งสามว�ธ์! โดยที่!�อ1อป็เจ�กที่-กต่&วต่องม! ที่&'งสามว�ธ์! โดยที่!�อ1อป็เจ�กที่-กต่&วต่องม! object identifiers object identifiers การก%าห้นดชิ0�อให้ก&บ การก%าห้นดชิ0�อให้ก&บ class class และ ค์อลเลกและ ค์อลเลกชิ&นของอ1อป็เจ�กอ0�น ๆ แต่�อ1อป็เจ�กเก0อบที่&'งห้มดไม�ไดถุกชิ&นของอ1อป็เจ�กอ0�น ๆ แต่�อ1อป็เจ�กเก0อบที่&'งห้มดไม�ไดถุกก%าห้นดชิ0�อ ด&งน&'นเราจะใชิ ก%าห้นดชิ0�อ ด&งน&'นเราจะใชิ class extents class extents เพั0�อจ&ดการก&บค์ลาสเพั0�อจ&ดการก&บค์ลาสที่-กค์ลาสที่!�ม! ที่-กค์ลาสที่!�ม! persistent objectspersistent objects

Page 37: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

– แนวัคิ�ดฐานข้�อมู�ลเชิ�งวั�ตถุ� ส�มูพั�นธ์. – แนวัคิ�ดฐานข้�อมู�ลเชิ�งวั�ตถุ� ส�มูพั�นธ์. ::คิวัามูส�มูพั�นธ์.เชิ�งกล�)มูคิวัามูส�มูพั�นธ์.เชิ�งกล�)มู

1. Nested Relations1. Nested Relations

ล&กษณะของร!เลชิ&นที่!� ล&กษณะของร!เลชิ&นที่!� 1NF 1NF น&'น ค์�าของขอมลของน&'น ค์�าของขอมลของแต่�ละแอต่ที่ร�บ�วต่�ในห้น$�งที่เป็:ลต่องม!ค์�าเด!ยวจากโดเมนแต่�ละแอต่ที่ร�บ�วต่�ในห้น$�งที่เป็:ลต่องม!ค์�าเด!ยวจากโดเมนของแอต่ที่ร�บ�วต่�น&'น และโดเมนของแอต่ที่ร�บ�วต่�น&'นไม�ของแอต่ที่ร�บ�วต่�น&'น และโดเมนของแอต่ที่ร�บ�วต่�น&'นไม�สามารถุแบ�งย�อยไดอ!ก โดยโมเดลค์วามส&มพั&นธ์�เชิ�งกล-�มสามารถุแบ�งย�อยไดอ!ก โดยโมเดลค์วามส&มพั&นธ์�เชิ�งกล-�มน!'เป็�นส�วนขยายของโมเดลเชิ�งส&มพั&นธ์� ซึ่$�งโดเมนอาจจะน!'เป็�นส�วนขยายของโมเดลเชิ�งส&มพั&นธ์� ซึ่$�งโดเมนอาจจะเป็�นไดที่&'ง เป็�นไดที่&'ง atomic atomic ห้ร0อเป็�นร!เลชิ&นก�ได ด&งน&'นภายในที่เป็:ลห้ร0อเป็�นร!เลชิ&นก�ได ด&งน&'นภายในที่เป็:ลห้น$�ง ค์�าขอมลของแอต่ที่ร�บ�วต่�ห้น$�งอาจม!ไดห้ลายค์�า และห้น$�ง ค์�าขอมลของแอต่ที่ร�บ�วต่�ห้น$�งอาจม!ไดห้ลายค์�า และอาจะเป็�นร!เลชิ&นซึ่อนอย�ในที่เป็:ลได พั�จารณา ร!เลชิ&น อาจะเป็�นร!เลชิ&นซึ่อนอย�ในที่เป็:ลได พั�จารณา ร!เลชิ&น R(a, R(a, b) b) ม!ค์�าขอมลของ ม!ค์�าขอมลของ b b เป็�น ร!เลชิ&นเป็�น ร!เลชิ&น(x, y, z) (x, y, z) ด&งรป็ ที่!� ด&งรป็ ที่!� 14.714.7

Page 38: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ร�ปท�� 14.7 แสดงล&กษณะของค์วามส&มพั&นธ์�เชิ�งกล-�ม

Page 39: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ยกต่&วอย�างค์วามส&มพั&นธ์�เชิ�งกล-�มของขอมลยกต่&วอย�างค์วามส&มพั&นธ์�เชิ�งกล-�มของขอมลพัน&กงาน โดยม!การเก�บขอมลด&งน!'พัน&กงาน โดยม!การเก�บขอมลด&งน!'

employee no employee no รห้&สพัน&กงาน รห้&สพัน&กงาน employee name employee name ชิ0�อพัน&กงาน ชิ0�อพัน&กงาน child name child name ชิ0�อบ-ต่รของพัน&กงานชิ0�อบ-ต่รของพัน&กงาน((ม!ไดห้ลายค์นม!ไดห้ลายค์น) )

training list training list ป็ระว&ต่�การอบรมป็ระว&ต่�การอบรม((ม!ไดห้ลายค์ร&'งม!ไดห้ลายค์ร&'ง) )

ถุาเราก%าห้นดให้ร!เลชิ&นเพั!ยงร!เลชิ&นเด!ยวเก�บขอมลด&งถุาเราก%าห้นดให้ร!เลชิ&นเพั!ยงร!เลชิ&นเด!ยวเก�บขอมลด&งกล�าวขางต่น จะพับว�าขอมล กล�าวขางต่น จะพับว�าขอมล children children และ และ training training จะม!ล&กษณะของโดเมนที่!� จะม!ล&กษณะของโดเมนที่!� nonatomic nonatomic ด&งรป็ที่!� ด&งรป็ที่!� 14.8 14.8 และรป็ที่!� และรป็ที่!� 14.9 14.9 แสดงร!เลชิ&น แสดงร!เลชิ&น employee employee ที่!�ม!ล&กษณะที่!�ม!ล&กษณะของโดเมนที่!� ของโดเมนที่!� atomic atomic ซึ่$�งม!ค์-ณสมบ&ต่� ซึ่$�งม!ค์-ณสมบ&ต่� 1NF1NF

Page 40: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ร�ปท�� 14.8 แสดงร!เลชิ&น Employee ที่!�ไม�ม!ค์-ณสมบ&ต่� 1NF

Page 41: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ร�ปท�� 14.9 แสดงร!เลชิ&น Employee ที่!�ม!ค์-ณสมบ&ต่�

1NF

Page 42: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

จะพับว�าร!เลชิ&น จะพับว�าร!เลชิ&น employee employee ในรป็ที่!� ในรป็ที่!� 3 3 ม!ล&กษณะของม!ล&กษณะของฟ้8งก�ชิ&นการข$'นต่�อก&นเชิ�งกล-�มฟ้8งก�ชิ&นการข$'นต่�อก&นเชิ�งกล-�ม(Multivalued (Multivalued dependencies) dependencies) ด&งน!'ด&งน!'

empno empno namename

empno empno childnamechildname

empno empno tno, tdatetno, tdate

ด&งน&'นเราสามารถุแยกร!เลชิ&นให้อย�ใน ด&งน&'นเราสามารถุแยกร!เลชิ&นให้อย�ใน 4NF 4NF ด&งน!'ด&งน!'(empno, name)(empno, name)

(empno, childname)(empno, childname)

(empno, tno, tdate)(empno, tno, tdate)

รป็ที่!� รป็ที่!� 14.10 14.10 แสดงร!เลชิ&นที่!�ไดจากการแต่กร!เลชิ&นแสดงร!เลชิ&นที่!�ไดจากการแต่กร!เลชิ&น employeeemployee

Page 43: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ร�ปท�� 14.10 แสดงร!เลชิ&นที่!� 4 NF

Page 44: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ร!เลชิ&นที่!�ม!ค์-ณสมบ&ต่� ร!เลชิ&นที่!�ม!ค์-ณสมบ&ต่� 1 NF 1 NF ในรป็ที่!� ในรป็ที่!� 3 3 สามารถุสามารถุแสดงให้เราเห้�นถุ$งล&กษณะของขอมลที่!�ม!การจ&ดเก�บแสดงให้เราเห้�นถุ$งล&กษณะของขอมลที่!�ม!การจ&ดเก�บในฐานขอมล แต่� ถุาพั�จารณาร!เลชิ&นในรป็ที่!� ในฐานขอมล แต่� ถุาพั�จารณาร!เลชิ&นในรป็ที่!� 2 2 จะพับจะพับว�าสามารถุที่!�จะที่%าค์วามเขาใจในขอมลไดง�ายกว�า ว�าสามารถุที่!�จะที่%าค์วามเขาใจในขอมลไดง�ายกว�า เน0�องจากการส0บค์นขอมลโดยที่&�วไป็ จะไม�ได สนใจว�าเน0�องจากการส0บค์นขอมลโดยที่&�วไป็ จะไม�ได สนใจว�าขอมลที่!�ต่องจะต่องอย�ในรป็ของ ขอมลที่!�ต่องจะต่องอย�ในรป็ของ 1 NF(1 NF(ค์�าขอมลค์�าขอมลเพั!ยงค์�าเด!ยวเพั!ยงค์�าเด!ยว) ) แต่�จะสนใจก&บขอมลเป็�นกล-�มมากกว�า แต่�จะสนใจก&บขอมลเป็�นกล-�มมากกว�า ซึ่$�งจะพับว�าร!เลชิ&นที่!�ม!ค์-ณสมบ&ต่� ซึ่$�งจะพับว�าร!เลชิ&นที่!�ม!ค์-ณสมบ&ต่� 4 NF 4 NF ในรป็ที่!� ในรป็ที่!� 4 4 จะม!จะม!ผ่ลที่%าให้การส0บค์นขอมลม!ค์วามซึ่&บซึ่อนมากกว�าผ่ลที่%าให้การส0บค์นขอมลม!ค์วามซึ่&บซึ่อนมากกว�าเน0�องจากต่องม!การ เน0�องจากต่องม!การ join join ระห้ว�างร!เลชิ&นมากกว�าระห้ว�างร!เลชิ&นมากกว�า

Page 45: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ชิน�ดข้�อมู�ลท��ซั�บซั�อนและแนวัทางเชิ�งชิน�ดข้�อมู�ลท��ซั�บซั�อนและแนวัทางเชิ�งวั�ตถุ�วั�ตถุ�

ในห้&วขอน!'จะกล�าวถุ$งส�วนขยายของค์%าส&�ง ในห้&วขอน!'จะกล�าวถุ$งส�วนขยายของค์%าส&�ง SQL SQL ที่!�ยอมให้ม!ชิน�ดขอมลที่!�ซึ่&บซึ่อน รวมถุ$งการร!เลชิ&นเชิ�งที่!�ยอมให้ม!ชิน�ดขอมลที่!�ซึ่&บซึ่อน รวมถุ$งการร!เลชิ&นเชิ�งกล-�ม และรป็แบบเชิ�งว&ต่ถุ- โดยรป็แบบของค์%าส&�งจะกล-�ม และรป็แบบเชิ�งว&ต่ถุ- โดยรป็แบบของค์%าส&�งจะอางอ�งมาต่รฐาน อางอ�งมาต่รฐาน SQL-3 SQL-3 ซึ่$�งค์%าส&�งจะอย�ในรป็แบบค์%าซึ่$�งค์%าส&�งจะอย�ในรป็แบบค์%าส&�งของ ส&�งของ Illustra database system Illustra database system โดย โดย Illustra Illustra น!'เป็�นน!'เป็�นเวอร�ชิ&นที่างการค์าของ เวอร�ชิ&นที่างการค์าของ Postgres database system Postgres database system ที่!�ม!การพั&ฒนาที่!�มห้าว�ที่ยาล&ยแห้�งแค์ล�ฟ้อร�เน!ย ที่!� ที่!�ม!การพั&ฒนาที่!�มห้าว�ที่ยาล&ยแห้�งแค์ล�ฟ้อร�เน!ย ที่!� Berkley Berkley ซึ่$�งเป็�นระบบจ&ดการฐานขอมลที่!�ขยายค์วามซึ่$�งเป็�นระบบจ&ดการฐานขอมลที่!�ขยายค์วามสามารถุเชิ�งว&ต่ถุ-เขาไป็ในโมเดลเชิ�งส&มพั&นธ์�สามารถุเชิ�งว&ต่ถุ-เขาไป็ในโมเดลเชิ�งส&มพั&นธ์�

Page 46: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

1.Structured and collection Types1.Structured and collection Types

พั�จารณาค์%าส&�งต่�อไป็น!' เป็�นการก%าห้นดร!เลชิ&น พั�จารณาค์%าส&�งต่�อไป็น!' เป็�นการก%าห้นดร!เลชิ&น employee employee ดวยแอต่ที่ร�บ�วต่�เชิ�งซึ่อนดวยแอต่ที่ร�บ�วต่�เชิ�งซึ่อน

create type mystring char varyingcreate type mystring char varying

create type mytrainingcreate type mytraining

(tno integer,(tno integer,

tdate date)tdate date)

create type empcreate type emp

(empno as integer,(empno as integer,

name as mystring,name as mystring,

childname setof(mystring),childname setof(mystring),

training setof(mytraining))training setof(mytraining))

create table employee of type empcreate table employee of type emp

Page 47: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ค์%าส&�งแรกเป็�นการก%าห้นดชิน�ดขอมล ค์%าส&�งแรกเป็�นการก%าห้นดชิน�ดขอมล mystring mystring ซึ่$�งซึ่$�งเป็�นชิน�ดสต่ร�งแบบ เป็�นชิน�ดสต่ร�งแบบ variable length character variable length character ค์%าส&�งที่!�ค์%าส&�งที่!�สองเป็�นการก%าห้นดชิน�ดขอมล สองเป็�นการก%าห้นดชิน�ดขอมล mytraining mytraining ซึ่$�งป็ระกอบไป็ซึ่$�งป็ระกอบไป็ดวย ดวย tno tno และ และ tdate tdate และค์%าส&�งที่!�สามเป็�นการก%าห้นดชิน�ดและค์%าส&�งที่!�สามเป็�นการก%าห้นดชิน�ดขอมล ขอมล emp emp ซึ่$�งป็ระกอบไป็ดวย ซึ่$�งป็ระกอบไป็ดวย empno name empno name กล-�มของ กล-�มของ children children และ กล-�มของ และ กล-�มของ training training และค์%าส&�งส-ดที่ายเป็�นการและค์%าส&�งส-ดที่ายเป็�นการสรางต่าราง สรางต่าราง employee employee ซึ่$�งจากค์%าส&�งด&งกล�าวจะพับว�าม!ซึ่$�งจากค์%าส&�งด&งกล�าวจะพับว�าม!ค์วามแต่กต่�างจาก การสรางต่ารางในระบบฐานขอมลเชิ�งค์วามแต่กต่�างจาก การสรางต่ารางในระบบฐานขอมลเชิ�งส&มพั&นธ์� เน0�องจากเรายอมให้แอต่ที่ร�บ�วต่�ม!ล&กษณะเป็�นเซึ่ต่ส&มพั&นธ์� เน0�องจากเรายอมให้แอต่ที่ร�บ�วต่�ม!ล&กษณะเป็�นเซึ่ต่ได และดวยค์-ณสมบ&ต่�น!'จะยอมให้เราสามารถุก%าห้นดชิน�ดได และดวยค์-ณสมบ&ต่�น!'จะยอมให้เราสามารถุก%าห้นดชิน�ดของขอมลเป็�นแอต่ที่ร�บ�วต่�แบบผ่สมของขอมลเป็�นแอต่ที่ร�บ�วต่�แบบผ่สม(composite (composite attribute) attribute) และแอต่ที่ร�บ�วต่�แบบห้ลายค์�าและแอต่ที่ร�บ�วต่�แบบห้ลายค์�า(multivalued (multivalued attribute)attribute)ไดโด ไดโด

Page 48: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

เราสามารถุสรางต่าราง เราสามารถุสรางต่าราง employee employee ไดโดยต่รง โดยไม�ไดโดยต่รง โดยไม�ต่องสรางชิน�ดขอมลของ ต่องสรางชิน�ดขอมลของ emp emp ข$'นมาก�อนก�ไดข$'นมาก�อนก�ได

create table employeecreate table employee(empno as integer,(empno as integer,name as mystring,name as mystring,childname setof(mystring),childname setof(mystring),training setof(mytraining))training setof(mytraining))

โดยที่&�วไป็แลว ล&กษณะชิน�ดขอมลเชิ�งซึ่อนน!' จะโดยที่&�วไป็แลว ล&กษณะชิน�ดขอมลเชิ�งซึ่อนน!' จะสน&บสน-นชิน�ดขอมลแบบค์อลเลค์ชิ&นสน&บสน-นชิน�ดขอมลแบบค์อลเลค์ชิ&น(collection : (collection : ค์0อค์0อขอมลที่!�ไม�ม!ล%าด&บ และสามารถุม!ขอมลไดห้ลาย ๆ ค์�าขอมลที่!�ไม�ม!ล%าด&บ และสามารถุม!ขอมลไดห้ลาย ๆ ค์�าขอมลขอมล) ) เชิ�นอะเรย�เชิ�นอะเรย�(array) (array) และม&ลต่�เซึ่ต่และม&ลต่�เซึ่ต่(multiset) (multiset) ต่&วอย�างเชิ�น สมม-ต่�ว�าเราเพั��มแอต่ที่ร�บ�วต่� ต่&วอย�างเชิ�น สมม-ต่�ว�าเราเพั��มแอต่ที่ร�บ�วต่� telephone telephone ให้ก&บร!เลชิ&น ให้ก&บร!เลชิ&น employee employee ซึ่$�งพัน&กงานแต่�ละค์นสามารถุม!ซึ่$�งพัน&กงานแต่�ละค์นสามารถุม!โที่รศ&พัที่�ไดห้ลายห้มายเลข เราจะเพั��มแอต่ที่ร�บ�วต่� โที่รศ&พัที่�ไดห้ลายห้มายเลข เราจะเพั��มแอต่ที่ร�บ�วต่� telephone telephone ด&งน!'ด&งน!'

Page 49: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

telephone mystring[3]telephone mystring[3]

ซึ่$�งห้มายถุ$งอะเรย�ของห้มายเลขโที่รศ&พัที่�ของซึ่$�งห้มายถุ$งอะเรย�ของห้มายเลขโที่รศ&พัที่�ของพัน&กงานแต่�ละค์นน&�นเอง ซึ่$�งถุาเราต่องการพัน&กงานแต่�ละค์นน&�นเอง ซึ่$�งถุาเราต่องการที่ราบว�าห้มายเลขโที่รศ&พัที่�ห้มายเลขที่!�ห้น$�งค์0อที่ราบว�าห้มายเลขโที่รศ&พัที่�ห้มายเลขที่!�ห้น$�งค์0อห้มายเลขอะไร ก�สามารถุบอกไดที่&นที่! เพัราะม!ห้มายเลขอะไร ก�สามารถุบอกไดที่&นที่! เพัราะม!การอางถุ$งขอมลแบบอะเรย� แต่�ถุาเราก%าห้นดการอางถุ$งขอมลแบบอะเรย� แต่�ถุาเราก%าห้นดขอมลโที่รศ&พัที่�น!'เป็�น ขอมลโที่รศ&พัที่�น!'เป็�น setof(mystring) setof(mystring) เราจะไม�เราจะไม�สามารถุบอกไดเลยว�าห้มายเลขโที่รศ&พัที่�ใดเป็�นสามารถุบอกไดเลยว�าห้มายเลขโที่รศ&พัที่�ใดเป็�นล%าด&บที่!�เที่�าไรล%าด&บที่!�เที่�าไร

Page 50: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

2.Inheritance2.Inheritance

การส0บที่อดก�สามารถุด%าเน�นการก&บชิน�ดของขอมลไดเชิ�นการส0บที่อดก�สามารถุด%าเน�นการก&บชิน�ดของขอมลไดเชิ�นก&น ต่&วอย�างเชิ�น สมม-ต่�ว�าเราไดก%าห้นดชิน�ดขอมลของก&น ต่&วอย�างเชิ�น สมม-ต่�ว�าเราไดก%าห้นดชิน�ดขอมลของบ-ค์ค์ลด&งน!'บ-ค์ค์ลด&งน!'create type personcreate type person

( name mystring,( name mystring,

social-security integer)social-security integer)

จากน&'นเราต่องการเก�บขอมลเก!�ยวก&บน&กเร!ยน และค์ร ซึ่$�งจากน&'นเราต่องการเก�บขอมลเก!�ยวก&บน&กเร!ยน และค์ร ซึ่$�งที่&'งน&กเร!ยนและค์ร ต่�างก�เป็�นบ-ค์ค์ลดวยก&นที่&'งค์� ด&งน&'นเราที่&'งน&กเร!ยนและค์ร ต่�างก�เป็�นบ-ค์ค์ลดวยก&นที่&'งค์� ด&งน&'นเราสามารถุใชิค์-ณสมบ&ต่�การส0บที่อดมาก%าห้นดชิน�ดขอมลสามารถุใชิค์-ณสมบ&ต่�การส0บที่อดมาก%าห้นดชิน�ดขอมลน&กเร!ยน และค์รไดด&งน!'น&กเร!ยน และค์รไดด&งน!'

Page 51: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

create type studentcreate type student

( degree mystring,( degree mystring,

department mystring )department mystring )

under personunder person

create type teachercreate type teacher

( salary integer,( salary integer,

department mystring )department mystring )

under personunder person

ที่&'งน&กเร!ยนและค์รต่�างส0บที่อดค์-ณสมบ&ต่�ที่& 'งน&กเร!ยนและค์รต่�างส0บที่อดค์-ณสมบ&ต่�ของ ของ person person ค์0อ ค์0อ name name และ และ social-security social-security กล�าวไดว�า กล�าวไดว�า student student และ และ teacher teacher เป็�น เป็�น subtype subtype ของ ของ person person และ และ person person เป็�น เป็�น supertype supertype ของ ของ student student และ และ teacherteacher

Page 52: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

สมม-ต่�ว�า เราต่องการเก�บขอมลของผ่สมม-ต่�ว�า เราต่องการเก�บขอมลของผ่ชิ�วยสอนชิ�วยสอน(teacher assistant) (teacher assistant) ซึ่$�งเป็�นที่&'งซึ่$�งเป็�นที่&'งน&กเร!ยนและค์รในเวลาเด!ยวก&น และอาจจะอย�น&กเร!ยนและค์รในเวลาเด!ยวก&น และอาจจะอย�ต่�างแผ่นกก&น แนวค์�ดน!'เร!ยกว�า ต่�างแผ่นกก&น แนวค์�ดน!'เร!ยกว�า multiple multiple inherit inherit ถุาระบบสน&บสน-น ถุาระบบสน&บสน-น multiple inherit multiple inherit เราสามารถุก%าห้นดชิน�ดขอมล เราสามารถุก%าห้นดชิน�ดขอมล teaching assistteaching assistant ant ไดด&งน!'ไดด&งน!'create type teachingassistantcreate type teachingassistant

under student, teacherunder student, teacher

Page 53: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

teachingassistant teachingassistant จะส0บที่อดค์-ณสมบ&ต่�ที่&'งห้มดของ จะส0บที่อดค์-ณสมบ&ต่�ที่&'งห้มดของ student student และ และ teacher teacher จะพับว�าแอต่ที่ร�บ�วต่� จะพับว�าแอต่ที่ร�บ�วต่� social-security social-security name name และ และ department department ป็รากฎอย�ในที่&'ง ป็รากฎอย�ในที่&'ง student student และ และ teacher teacher ซึ่$�งแอต่ที่ร�บ�วต่� ซึ่$�งแอต่ที่ร�บ�วต่� social-security social-security และ และ name name ไดถุกไดถุกส0บที่อดมาจาก ส0บที่อดมาจาก person person เห้ม0อนก&น ด&งน&'นจ$งไม�เก�ดค์วามเห้ม0อนก&น ด&งน&'นจ$งไม�เก�ดค์วามข&ดแยงจากการส0บที่อดจาก ข&ดแยงจากการส0บที่อดจาก student student และ และ teacher teacher แต่� แต่� แอต่ที่ร�บ�วต่� แอต่ที่ร�บ�วต่� department department อาจเก�ดค์วามข&ดแยงไดอาจเก�ดค์วามข&ดแยงไดเน0�องจาก เน0�องจาก teaching assistant teaching assistant อาจจะเป็�นน&กเร!ยนในแผ่นกอาจจะเป็�นน&กเร!ยนในแผ่นกห้น$�ง แต่�อาจารย�จะอย�อ!กแผ่นกห้น$�ง ด&งน&'นในการห้ล!กห้น$�ง แต่�อาจารย�จะอย�อ!กแผ่นกห้น$�ง ด&งน&'นในการห้ล!กเล!ยงค์วามข&ดแยงน!' เราจะใชิว�ธ์!การเป็ล!�ยนชิ0�อ ด&งน!'เล!ยงค์วามข&ดแยงน!' เราจะใชิว�ธ์!การเป็ล!�ยนชิ0�อ ด&งน!'

create type teachingassistantcreate type teachingassistant

under student with (department as student-under student with (department as student-department) ,department) ,

teacher with (department as teacher-departmentteacher with (department as teacher-department))

Page 54: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

3. Reference Type3. Reference Type

ภาษาเชิ�งว&ต่ถุ-สน&บสน-นการอางอ�งอ1อป็เจ�ก โดยที่!�ภาษาเชิ�งว&ต่ถุ-สน&บสน-นการอางอ�งอ1อป็เจ�ก โดยที่!�แอต่ที่ร�บ�วต่�ห้น$�ง ๆ ของ ชิน�ดขอมลสามารถุที่!�จะอางอ�งไป็อ!แอต่ที่ร�บ�วต่�ห้น$�ง ๆ ของ ชิน�ดขอมลสามารถุที่!�จะอางอ�งไป็อ!กอ1อป็เจ�กห้น$�งได ต่&วอย�างเชิ�นการอางอ�งไป็ที่!�ร !เลชิ&น กอ1อป็เจ�กห้น$�งได ต่&วอย�างเชิ�นการอางอ�งไป็ที่!�ร !เลชิ&น person person ของแอต่ที่ร�บ�วต่� ของแอต่ที่ร�บ�วต่� childname childname สามารถุเข!ยนให้ม�ไดด&งน!'สามารถุเข!ยนให้ม�ไดด&งน!'

childname setof(ref(person))childname setof(ref(person))

ห้มายถุ$งแอต่ที่ร�บ�วต่�เป็�นเซึ่ต่ของการอางอ�งไป็ที่!�อ1อป็เจ�กห้มายถุ$งแอต่ที่ร�บ�วต่�เป็�นเซึ่ต่ของการอางอ�งไป็ที่!�อ1อป็เจ�ก person person เราสามารถุจ&ดการก&บการอางอ�งไป็ที่!�ที่เป็:ลของร!เลเราสามารถุจ&ดการก&บการอางอ�งไป็ที่!�ที่เป็:ลของร!เลชิ&น ชิ&น person person โดยการใชิค์!ย�ห้ล&กของร!เลชิ&น โดยการใชิค์!ย�ห้ล&กของร!เลชิ&น person person มาเป็�นมาเป็�นขอมลใน ขอมลใน childname childname เพั0�อที่%าห้นาที่!� เพั0�อที่%าห้นาที่!� foreign key foreign key ห้ร0ออ!กว�ธ์!ห้ร0ออ!กว�ธ์!ห้น$�งค์0อ ใชิ ห้น$�งค์0อ ใชิ tuple identifer tuple identifer ของแต่�ละที่เป็:ลเป็�นต่&วอางอ�งของแต่�ละที่เป็:ลเป็�นต่&วอางอ�งแที่นแที่น

Page 55: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

การส%บคิ�นข้�อมู�ลชิน�ดท��ซั�บซั�อนการส%บคิ�นข้�อมู�ลชิน�ดท��ซั�บซั�อนในห้&วขอน!'จะแสดงให้เห้�นถุ$งการใชิค์%าส&�ง ในห้&วขอน!'จะแสดงให้เห้�นถุ$งการใชิค์%าส&�ง SQL SQL เพั0�อเพั0�อ

ส0บค์นขอมลที่!�ม!ชิน�ดขอมลที่!�ซึ่&บซึ่อนในล&กษณะต่�างๆส0บค์นขอมลที่!�ม!ชิน�ดขอมลที่!�ซึ่&บซึ่อนในล&กษณะต่�างๆ1.Relation-Valued Attributes1.Relation-Valued Attributes

จากร!เลชิ&น จากร!เลชิ&น employee employee ถุาต่องการค์นห้าชิ0�อของพัน&กงานที่!�ม!บ-ต่รถุาต่องการค์นห้าชิ0�อของพัน&กงานที่!�ม!บ-ต่รชิ0�อ ชิ0�อ Jane Jane เราสามารถุเข!ยนเป็�นค์%าส&�ง เราสามารถุเข!ยนเป็�นค์%าส&�ง select select ไดด&งน!'ไดด&งน!'

select nameselect name

from employeefrom employee

where “Jane” in childnamewhere “Jane” in childname

เราเร!ยกแอต่ที่ร�บ�วต่� เราเร!ยกแอต่ที่ร�บ�วต่� childname childname ว�า ว�า relation-valued attribute relation-valued attribute ซึ่$�งซึ่$�งจะป็รากฎอย�ในส�วนของ จะป็รากฎอย�ในส�วนของ where where ในค์%าส&�ง ในค์%าส&�ง Select Select ห้ร0อ จงแสดงห้ร0อ จงแสดงชิ0�อของพัน&กงาน และชิ0�อของบ-ต่ร พัน&กงานแต่�ละค์น สามารถุชิ0�อของพัน&กงาน และชิ0�อของบ-ต่ร พัน&กงานแต่�ละค์น สามารถุเข!ยนค์%าส&�ง เข!ยนค์%าส&�ง select select ไดด&งน!' ไดด&งน!'

Page 56: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

select E.name, C.childnameselect E.name, C.childname

from employee as E, E.childname as Cfrom employee as E, E.childname as C

เน0�องจากแอต่ที่ร�บ�วต่� เน0�องจากแอต่ที่ร�บ�วต่� childname childname ของร!เลชิ&น ของร!เลชิ&น employee employee เป็�นฟ้:ลด�ป็ระเภที่เป็�นฟ้:ลด�ป็ระเภที่set-valued set-valued ด&งน&'นจ$งสามารถุใชิในส�วนด&งน&'นจ$งสามารถุใชิในส�วน

ของ ของ fromfromไดไดเราสามารถุใชิ เราสามารถุใชิ aggregate aggregate ฟ้8งก�ชิ&นเพั0�อด%าเน�นการก&บกล-�มฟ้8งก�ชิ&นเพั0�อด%าเน�นการก&บกล-�ม

ขอมลได เชิ�นจงแสดงชิ0�อพัน&กงาน และจ%านวนบ-ต่รของขอมลได เชิ�นจงแสดงชิ0�อพัน&กงาน และจ%านวนบ-ต่รของพัน&กงานแต่�ละค์น สามารถุเข!ยนเป็�นค์%าส&�ง พัน&กงานแต่�ละค์น สามารถุเข!ยนเป็�นค์%าส&�ง select select ไดได

ด&งน!'ด&งน!'select name, count(childname)select name, count(childname)

from employeefrom employee

Page 57: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

2.Path Expression2.Path Expression

เราใชิส&ญล&กษณ�จ-ด เราใชิส&ญล&กษณ�จ-ด (.) (.) เพั0�อการอางอ�งเพั0�อการอางอ�งแอต่ที่ร�บ�วต่�ที่!�ป็ระกอบก&นเป็�นแอต่ที่ร�บ�วต่�ผ่สมแอต่ที่ร�บ�วต่�ที่!�ป็ระกอบก&นเป็�นแอต่ที่ร�บ�วต่�ผ่สมได เชิ�น สมม-ต่�เราม!ร!เลชิ&นที่!�เก�บขอมล ได เชิ�น สมม-ต่�เราม!ร!เลชิ&นที่!�เก�บขอมล phd-phd-student student และร!เลชิ&น และร!เลชิ&น person person โดยก%าห้นดน�ยามโดยก%าห้นดน�ยามของร!เลชิ&นด&งน!'ของร!เลชิ&นด&งน!'create table phd-studentscreate table phd-students

( advisor ref(person))( advisor ref(person))

under personunder person

Page 58: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

ด&งน&'นถุาเราต่องการค์นห้าขอมลชิ0�อของ ด&งน&'นถุาเราต่องการค์นห้าขอมลชิ0�อของ advisor advisor ของน&กเร!ยนป็ร�ญญาเอกที่&'งห้มด สามารถุเข!ยนเป็�นค์%าของน&กเร!ยนป็ร�ญญาเอกที่&'งห้มด สามารถุเข!ยนเป็�นค์%าส&�ง ไดด&งน!'ส& �ง ไดด&งน!'select phd-students.advisor.nameselect phd-students.advisor.name

from phd-studentsfrom phd-students

เน0�องจาก เน0�องจาก phd-students.advisor phd-students.advisor ม!การอางถุ$งม!การอางถุ$งแอต่ที่ร�บ�วต่� แอต่ที่ร�บ�วต่� name name ในต่าราง ในต่าราง people people ซึ่$�งการอางอ�งน!'ใชิซึ่$�งการอางอ�งน!'ใชิเพั0�อซึ่�อนการ เพั0�อซึ่�อนการ join join ระห้ว�างร!เลชิ&น จากต่&วอย�างขางต่น ระห้ว�างร!เลชิ&น จากต่&วอย�างขางต่น ถุาเราไม�ไดใชิว�ธ์!การอางอ�ง ฟ้:ลด� ถุาเราไม�ไดใชิว�ธ์!การอางอ�ง ฟ้:ลด� advisor advisor ของร!เลชิ&น ของร!เลชิ&น phphd-student d-student จะต่องเป็�น จะต่องเป็�น foreign foreign ไป็ที่!�ร !เลชิ&น ไป็ที่!�ร !เลชิ&น person person จากจากน&'นก�จะที่%าการ น&'นก�จะที่%าการ join join ระห้ว�างร!เลชิ&น ระห้ว�างร!เลชิ&น phd-student phd-student ก&บ ก&บ persperson on ดวย ดวย foreign key foreign key โดยเราจะเร!ยกน�พัจน� โดยเราจะเร!ยกน�พัจน� phd-studentphd-students.advisor.name s.advisor.name น!'ว�า น!'ว�า path expressionpath expression

Page 59: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

3.Nesting and Unnesting3.Nesting and Unnesting

การที่%า การที่%า unnesting unnesting ค์0อการแป็ลงค์วามส&มพั&นธ์�เชิ�งค์0อการแป็ลงค์วามส&มพั&นธ์�เชิ�งกล-�มให้อย�ในรป็แบบ กล-�มให้อย�ในรป็แบบ 1 NF 1 NF พั�จารณาร!เลชิ&น พั�จารณาร!เลชิ&น employee employee ม!ม!แอต่ที่ร�บ�วต่� แอต่ที่ร�บ�วต่� childname childname และ และ training training ที่!�เป็�นค์วามที่!�เป็�นค์วามส&มพั&นธ์�เชิ�งกล-�ม สมม-ต่�ว�าเราต่องการแป็ลงร!เลชิ&น ส&มพั&นธ์�เชิ�งกล-�ม สมม-ต่�ว�าเราต่องการแป็ลงร!เลชิ&น empemployee loyee ให้อย�ในรป็แบบที่!�ไม�ม!ร!เลชิ&นเชิ�งกล-�ม สามารถุให้อย�ในรป็แบบที่!�ไม�ม!ร!เลชิ&นเชิ�งกล-�ม สามารถุที่%าไดโดยที่%าไดโดยselect empno, name, C as childname, T.tno as tno,select empno, name, C as childname, T.tno as tno, T.tdate as tdate T.tdate as tdate

from employee As E, E.childname As C, E.training from employee As E, E.childname As C, E.training As TAs T

Page 60: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

โดยที่!�ต่&วแป็ร โดยที่!�ต่&วแป็ร E E ในป็ระโยค์ ในป็ระโยค์ from from เป็�นการป็ระกาศเป็�นการป็ระกาศขอบเขต่ของร!เลชิ&น ขอบเขต่ของร!เลชิ&น employee employee ต่&วแป็ร ต่&วแป็ร C C ก%าห้นดขอบเขต่ก%าห้นดขอบเขต่แอต่ที่ร�บ�วต่� แอต่ที่ร�บ�วต่� childname childname และต่&วแป็ร และต่&วแป็ร T T ก�จะก%าห้นดขอบเขต่ก�จะก%าห้นดขอบเขต่แอต่ที่ร�บ�วต่� แอต่ที่ร�บ�วต่� trainingtraining

ในที่างกล&บก&นถุาที่%าการแป็ลงจากร!เลชิ&นที่!�อย�ในรป็ ในที่างกล&บก&นถุาที่%าการแป็ลงจากร!เลชิ&นที่!�อย�ในรป็ 1 1 NF NF ไป็เป็�นร!เลชิ&นเชิ�งกล-�มจะเร!ยกว�าการที่%า ไป็เป็�นร!เลชิ&นเชิ�งกล-�มจะเร!ยกว�าการที่%า nesting nesting ในการที่%า ในการที่%า nesting nesting จะใชิว�ธ์!การจ&ดกล-�ม ซึ่$�งเม0�อที่%าการจ&ดกล-�มแลว จะจะใชิว�ธ์!การจ&ดกล-�ม ซึ่$�งเม0�อที่%าการจ&ดกล-�มแลว จะเห้ม0อนก&บม!การสราง เห้ม0อนก&บม!การสราง multiset multiset ร!เลชิ&นของแต่�ละกล-�มข$'นมา ร!เลชิ&นของแต่�ละกล-�มข$'นมา และที่%าการส�ง และที่%าการส�ง multiset multiset กล&บค์0นมาแที่นที่!�จะใชิฟ้8งก�ชิ&น กล&บค์0นมาแที่นที่!�จะใชิฟ้8งก�ชิ&น aggreaggregate gate ต่&วอย�างเชิ�น จากรป็ที่!� ต่&วอย�างเชิ�น จากรป็ที่!� 3 3 เป็�นร!เลชิ&นที่!�อย�ในรป็ เป็�นร!เลชิ&นที่!�อย�ในรป็ 1 NF 1 NF เราเราต่องการแป็ลงให้อย�ในรป็ของ ค์วามส&มพั&นธ์�เชิ�งกล-�ม ต่องการแป็ลงให้อย�ในรป็ของ ค์วามส&มพั&นธ์�เชิ�งกล-�ม สามารถุเข!ยนเป็�นค์%าส&�ง ไดด&งน!'สามารถุเข!ยนเป็�นค์%าส&�ง ไดด&งน!'

select empno, empname, set(childname) as select empno, empname, set(childname) as childname-list, set(training) as training-listchildname-list, set(training) as training-list

from employeefrom employeegroup by empno, empnamegroup by empno, empname

Page 61: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

การสร�างคิ)าข้�อมู�ลท��ซั�บซั�อนและการการสร�างคิ)าข้�อมู�ลท��ซั�บซั�อนและการสร�างวั�ตถุ�สร�างวั�ตถุ�

ที่!�ผ่�านมาเป็�นการก%าห้นดชิน�ดขอมลที่!�ซึ่&บซึ่อน และการส0บค์นขอมลที่!�ผ่�านมาเป็�นการก%าห้นดชิน�ดขอมลที่!�ซึ่&บซึ่อน และการส0บค์นขอมลในร!เลชิ&นที่!�ม!การก%าห้นดชิน�ดขอมลที่!�ซึ่&บซึ่อน ในห้&วขอน!'จะเป็�นการในร!เลชิ&นที่!�ม!การก%าห้นดชิน�ดขอมลที่!�ซึ่&บซึ่อน ในห้&วขอน!'จะเป็�นการสรางและป็ร&บป็ร-งขอมลในร!เลชิ&นที่!�ม!ชิน�ดขอมลที่!�ซึ่&บซึ่อนสรางและป็ร&บป็ร-งขอมลในร!เลชิ&นที่!�ม!ชิน�ดขอมลที่!�ซึ่&บซึ่อนเราสามารถุเพั��มขอมลห้น$�งที่เป็:ลในร!เลชิ&น เราสามารถุเพั��มขอมลห้น$�งที่เป็:ลในร!เลชิ&น employee employee ไดด&งน!'ไดด&งน!'

(105, “John”, set(“Jane”, “Eric”), set((125, “02/05/80”), (168, (105, “John”, set(“Jane”, “Eric”), set((125, “02/05/80”), (168, “07/06/81”), (198, “03/04/83”)))“07/06/81”), (198, “03/04/83”)))

จากค์%าส&�งด&งกล�าว จะเห้�นว�าเราสรางค์�าขอมลของแอต่ที่ร�บ�วต่�จากค์%าส&�งด&งกล�าว จะเห้�นว�าเราสรางค์�าขอมลของแอต่ที่ร�บ�วต่�ผ่สมผ่สม(composite attribute) (composite attribute) โดยการก%าห้นดเป็�นรายการไวในโดยการก%าห้นดเป็�นรายการไวในวงเล�บ และใชิค์%าห้ล&ก วงเล�บ และใชิค์%าห้ล&ก set set เป็�นต่&วบอกว�า เป็�นชิน�ดขอมลที่!�ซึ่&บซึ่อน เป็�นต่&วบอกว�า เป็�นชิน�ดขอมลที่!�ซึ่&บซึ่อน ด&งน&'นถุาจะเข!ยนให้อย�ในรป็ของค์%าส&�ง ด&งน&'นถุาจะเข!ยนให้อย�ในรป็ของค์%าส&�ง SQL SQL สามารถุเข!ยนไดด&งน!'สามารถุเข!ยนไดด&งน!'

Page 62: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

เราสามารถุสรางค์�าขอมลแบบ เราสามารถุสรางค์�าขอมลแบบ multiset multiset โดยใชิค์%าส&�ง โดยใชิค์%าส&�ง multiset multiset แที่น แที่น set set ได ซึ่$�งผ่ลล&พัธ์�จะเป็�นการสรางรายการได ซึ่$�งผ่ลล&พัธ์�จะเป็�นการสรางรายการห้ร0ออะเรย�ของขอมลภายในที่เป็:ลห้น$�ง ๆห้ร0ออะเรย�ของขอมลภายในที่เป็:ลห้น$�ง ๆ

ในการสรางอ1อป็เจ�กของขอมล เราจะใชิฟ้8งก�ชิ&น ในการสรางอ1อป็เจ�กของขอมล เราจะใชิฟ้8งก�ชิ&น constructor constructor ซึ่$�งฟ้8งก�ชิ&น ซึ่$�งฟ้8งก�ชิ&น constructor constructor ของชิน�ดขอมล ของชิน�ดขอมล T T ค์0อ ค์0อ T() T() เม0�อ เม0�อ constructor constructor ถุกเร!ยกข$'นมาสรางอ1อป็เจ�กให้ม�ถุกเร!ยกข$'นมาสรางอ1อป็เจ�กให้ม�ของ ของ T T ก�จะที่%าการก%าห้นด ก�จะที่%าการก%าห้นด oid oid ให้ก&บอ1อป็เจ�กและส�งอ1อป็ให้ก&บอ1อป็เจ�กและส�งอ1อป็เจ�ก กล&บมา จากน&'นขอมลแต่�ละต่&วของอ1อป็เจ�กก�จะถุกเจ�ก กล&บมา จากน&'นขอมลแต่�ละต่&วของอ1อป็เจ�กก�จะถุกก%าห้นดค์�าขอมลก%าห้นดค์�าขอมล

เราสามารถุใชิค์%าส&�ง เราสามารถุใชิค์%าส&�ง update update เพั0�อป็ร&บป็ร-งขอมลในร!เพั0�อป็ร&บป็ร-งขอมลในร!เลชิ&นที่!�ซึ่&บซึ่อนได เห้ม0อนก&บค์%าส&�ง เลชิ&นที่!�ซึ่&บซึ่อนได เห้ม0อนก&บค์%าส&�ง update update ที่!�ใชิในฐานที่!�ใชิในฐานขอมลเชิ�งส&มพั&นธ์�ขอมลเชิ�งส&มพั&นธ์�

Page 63: บทที่ 14 ระบบฐานข้อมูลเชิงวัตถุ (Object-Oriented Database)

insert into employee values (insert into employee values (

105, “John”, set(“Jane”, “Eric”),105, “John”, set(“Jane”, “Eric”),

set((125, “02/05/80”), (168, “07/06/81”), (198,set((125, “02/05/80”), (168, “07/06/81”), (198, “03/04/83”)) ) “03/04/83”)) )

อ!กที่&'งเราสามารถุที่!�จะใชิขอมลที่!�ซึ่&บซึ่อนในการส0บค์นอ!กที่&'งเราสามารถุที่!�จะใชิขอมลที่!�ซึ่&บซึ่อนในการส0บค์นขอมลไดอ!กดวย ด&งต่&วอย�างเชิ�นขอมลไดอ!กดวย ด&งต่&วอย�างเชิ�น

select empno, nameselect empno, name

from employeefrom employee

where name in set(”John”,”Anna”,”Tom”)where name in set(”John”,”Anna”,”Tom”)

ค์%าส&�งขางต่นเป็�นการส0บค์นขอมล รห้&สพัน&กงานและชิ0�อค์%าส&�งขางต่นเป็�นการส0บค์นขอมล รห้&สพัน&กงานและชิ0�อพัน&กงาน จากร!เลชิ&น พัน&กงาน จากร!เลชิ&น employee employee ที่!�ม!ชิ0�อเป็�น “ที่!�ม!ชิ0�อเป็�น “John” John” ห้ร0อ “ห้ร0อ “Anna” Anna” ห้ร0อ “ห้ร0อ “Tom”Tom”