Ειδικά Θζματα Βάςεων Δεδομζνων Ενότητα 11: Αντικειμενοςτραφήσ και αντικείμενοςχεςιακζσ βάςεισ Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικϊν Πλθροφορικισ ΤΕ
Άδειεσ Χρήςησ Το παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χριςθσ Creative Commons. Για εκπαιδευτικό υλικό, όπωσ εικόνεσ, που υπόκειται ςε άλλου τφπου άδειασ χριςθσ, θ άδεια χριςθσ αναφζρεται ρθτϊσ. 2
Χρηματοδότηςη Το παρόν εκπαιδευτικό υλικό ζχει αναπτυχκεί ςτα πλαίςια του εκπαιδευτικοφ ζργου του διδάςκοντα. Το ζργο «Ανοικτά Ακαδθμαϊκά Μακιματα ςτο ΤΕΙ Κεντρικισ Μακεδονίασ» ζχει χρθματοδοτιςει μόνο τθ αναδιαμόρφωςθ του εκπαιδευτικοφ υλικοφ. Το ζργο υλοποιείται ςτο πλαίςιο του Επιχειρθςιακοφ Προγράμματοσ «Εκπαίδευςθ και Δια Βίου Μάκθςθ» και ςυγχρθματοδοτείται από τθν Ευρωπαϊκι Ζνωςθ (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εκνικοφσ πόρουσ. 3
Ενότητα 11 Αντικειμενοςτραφήσ και αντικειμενοςχεςιακζσ βάςεισ δεδομζνων Δρ. Τςιμπίρθσ Αλκιβιάδθσ 4
Περιεχόμενα ενότητασ Μοντζλα καταςκευισ ΣΔΒΔ Αντικειμενοςτραφισ και αντικειμενο-ςχεςιακζσ ΒΔ Δυαδικά Μεγάλα Αντικείμενα (Binary Large Objects BLOBs) Προςκικθ αντικειμενοςτραφϊν χαρακτθριςτικϊν ςτθν SQL Reference types and deref Μζκοδοι οριςμζνοι από τουσ χριςτεσ Κλθρονομικότθτα Επεκτάςεισ 5
Σκοποί ενότητασ Στθν ενότθτα αυτι κα γίνει εναςχόλθςθ με τα ςυςτιματα διαχείριςθσ βάςθσ δεδομζνων βαςιςμζνα ςτο αντικειμενοςτραφζσ μοντζλο. Ειςαγωγι ςτα αντικείμενο-ςχεςιακά μοντζλα και αντικειμενοςτραφι μοντζλα. Τζλοσ δυαδικά μεγάλα αντικείμενα τα οποία μποροφν να αποκθκευτοφν και να προςπελαςτοφν και προςκικθ χαρακτθριςτικϊν ςτο ςφςτθμα τφπων τθσ SQL. 6
Μοντζλα καταςκευήσ ςυςτημάτων διαχείριςησ ΒΔ Υπάρχουν δφο τάςεισ καταςκευισ ςυςτθμάτων διαχείριςθσ βάςεων δεδομζνων βαςιςμζνα ςτο αντικειμενοςτραφζσ μοντζλο τα: αντικειμενο-ςχεςιακά μοντζλα (επζκταςθ ςχεςιακοφ μοντζλου) αντικειμενο-ςτραφή μοντζλα (επζκταςθ αντικειμενοςτραφϊν γλωςςϊν προγραμματιςμοφ) 7
Ειςαγωγή ςτισ αντικειμενοςτραφήσ και αντικειμενο-ςχεςιακζσ βάςεισ Το πρϊτο απλό αντικειμενο-ςχεςιακό μοντζλο εμφανίςτθκε ςτθ δεκαετία του 70 : Ήταν κατάλλθλο για δεδομζνα διαχείριςθσ Δεν ιταν κατάλλθλο για άλλα ειδι όπωσ πολυμζςων,cad και άλλων. Τθν δεκαετία του 80 εμφανίςτθκαν και τα αντικειμενο-ςτραφή μοντζλα: πολφπλοκοι τφποι δεδομζνων ταυτότθτα αντικειμζνου (object identity)/ αναφορζσ (references) ADTs (encapsulation, behavior goes with data) κλθρονομικότθτα (inheritance) 8
Παράδειγμα ενόσ μη ςχεςιακοφ μοντζλου ΒΔ Παράδειγμα create table foithtes (ΑΕΜ integer, image BLOB, category integer) Τα BLOBs είναι: Δυαδικά Μεγάλα Αντικείμενα (Binary Large Objects BLOBs) μποροφν να αποκθκευτοφν και να προςπελαςτοφν Κϊδικασ χριςτθ για τθν επεξεργαςία των BLOBs Σχόλιο! Για τθν επεξεργαςία των BLOBs ο χριςτθσ πρζπει να διακζτει κϊδικα χριςθσ του. 9
Προςθήκη αντικειμενοςτραφών χαρακτηριςτικών ςτην SQL ςτιλεσ (γνωρίςματα) ωσ νζοι τφποι δεδομζνων (ADTs) μζκοδοι οριςμζνοι από τουσ χριςτεσ για τουσ τφπουσ δεδομζνων οι ςτιλεσ μπορεί να ανικουν ςε ςφνκετουσ τφπουσ τφποι αναφοράσ (reference and deref ) 10
Τφποι οριςμζνοι από τουσ χρήςτεσ (ADTS) ADTS Μπορεί οι τφποι των δεδομζνων ςτθν SQL να είναι περιοριςμζνοι οι μζκοδοι όμωσ είναι πολλοί απλοί. Στα αντικειμενο-ςχεςιακά ςυςτιματα βάςεων δεδομζνων επιτρζπεται ο οριςμόσ νζων τφπων και μεκόδων. 11
Reference types and deref Κάκε αντικείμενο ςτισ ςχεςιακζσ βάςεισ ζχει ζνα OID Στισ ςχεςιακζσ βάςεισ μπορείτε να ζχετε ζναν τφπο αναφοράσ ref(lesson_n) Υπάρχει διαφορά μεταξφ ςφνκετων τφπων και τθσ αναφοράσ παρόλο που το αποτζλεςμα τουσ μπορεί να φαίνεται το ίδιο. 12
SQL-99 Η SQL χρθςιμοποιεί bult-in πράξεισ για ςφνκετουσ τφπουσ δεδομζνων όπωσ για ςφνολα sets και για ςυμβολιςμοφ τφπων πλειάδων Υποςτθρίηει τελεςτζσ για τφπουσ αναφοράσ Υποςτθρίηει μεκόδουσ που θ ςφνταξι τουσ ορίηεται από τουσ χριςτεσ. Η ςφνταξι τθσ εξαρτάται από το προϊόν 13
Μζθοδοι οριςμζνοι από τουσ χρήςτεσ Για τον χειριςμό των ADTS χρειάηεται θ ειςαγωγι μεκόδου οριςμοφ ( jpeg: thumbnail, crop, rotate, smooth) Τισ μεκόδουσ τισ ειςάγει ςε κάποια γλϊςςα και τισ μεταγλωττίηει το ςφςτθμα Το ςφςτθμα δυναμικά κάνει ζναν ςφνδεςμο με ςυναρτιςεισ για τον διαχειριςτι 14
Κληρονομικότητα Είναι χριςιμο να δθμιουργιςετε εξειδικευμζνουσ τφπουσ όπωσ και ςτθν C++: create type lessons_dioikisis_t under lessons (menu text); Σχόλιο! Oι μζκοδοι του lessons_t ιςχφουν επίςθσ και ςτουσ υπό-τφπουσ. Το lessons_dioikisis_t είναι ο κφριοσ τφποσ. Κλθρονομικότθτα ςε πίνακεσ: create table foithtes_aem under aem (gpa int); οι ερωτιςεισ ςτο aem επιςτρζφουν πλειάδεσ και τθσ ςχζςθσ foitites_aem (εκτόσ αν προςδιοριςτεί aem only ) 15
Επεκτάςεισ Όλα τα αντικείμενα ενόσ ςυγκεκριμζνου τφπου μποροφν να επιλεγοφν από μία μόνο όψθ (π.χ. select * from lesson_t). 16