Αντικειμενοστρεφείς βάσεις δεδομένων: Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
μ Ο Kalogeropoulos μετακίνησε τη σελίδα Αντικειμενοστραφείς βάσεις δεδομένων στη Αντικειμενοστρεφείς βάσεις δεδομένων πάνω από την ανακατεύθυνση
Stergios.ntua (συζήτηση | συνεισφορές)
Χωρίς σύνοψη επεξεργασίας
Γραμμή 1:
Οι αντικειμενοστρεφείς βάσεις δεδομένων είναι συστήματα [[Βάση δεδομένων|βάσεων δεδομένων]] που κρατούν τα δεδομένα τους σαν αντικείμενα, κατά τις αρχές του [[αντικειμενοστρεφήςΑντικειμενοστραφής προγραμματισμός|αντικειμενοστρεφούςαντικειμενοστραφούς προγραμματισμού]].
 
== Βάσεις δεδομένων και αντικειμενοστρεφήςαντικειμενοστραφής προγραμματισμός ==
Γύρω στα 1986, η προσπάθεια συσχετισμού αντικειμένων και βάσεων δεδομένων, ήταν συναρπαστική. Από την πλευρά των βάσεων δεδομένων υπήρχε η τάση επέκτασης του σχεσιακού μοντέλου, που μόλις πριν από λίγο καιρό είχε καθιερωθεί. Από την πλευρά των γλωσσών προγραμματισμού υπήρχε η τάση πρόσθεσης χαρακτηριστικών όπως διάρκεια στα δεδομένα. Από τη συνάντηση των δύο τάσεων προέκυψε μια ποικιλία απόψεων: κάποιοι πίστευαν ότι ο συνδυασμός χαρακτηριστικών από τις [[ΑντικειμενοστρεφήςΑντικειμενοστραφής προγραμματισμός|αντικειμενοστρεφείςαντικειμενοστραφείς]] γλώσσες προγραμματισμού και τις βάσεις δεδομένων θα δημιουργούσε ένα νέο είδος συστημάτων βάσεων δεδομένων. Την ίδια στιγμή, κάποιοι άλλοι πίστευαν ότι, με τη βοήθεια των αντικειμένων, ο κόσμος θα έπρεπε να προσανατολιστεί σε εργαλεία (toolkits) που θα βοηθούσαν τους προγραμματιστές να κατασκευάσουν εξειδικευμένα συστήματα διαχείρισης βάσεων δεδομένων. Στη συνέχεια του κεφαλαίου αυτού, θα παρουσιάσουμε το πώς οι
διαφορετικές αυτές προσεγγίσεις κατέληξαν στη δημιουργία των αντικειμενοστρεφώναντικειμενοστραφών συστημάτων βάσεων δεδομένων. Προηγουμένως, όμως,θα κάνουμε μια μικρή εισαγωγή στις έννοιες του προσανατολισμού στα αντικείμενα. Προσανατολισμός στ' Αντικείμενα (Object Orientation) σημαίνει μια "μοντελοποίηση του [[λογισμικό|λογισμικού]] και κάποιες αρχές ανάπτυξης που διευκολύνουν την κατασκευή
σύνθετων συστημάτων από ξεχωριστά συστατικά" [Kh93]. Τι είναι "Αντικείμενο" (Object); "Αντικείμενο είναι μια ξεχωριστή οντότητα, που προσπαθεί να μοντελοποιήσει και να προσεγγίσει όσον το δυνατό καλύτερα, το φυσικό κόσμο." [CK86]. Ένα αντικείμενο μπορεί να διενεργήσει ένα σύνολο δραστηριοτήτων. Το σύνολο, αυτό, των δραστηριοτήτων του, καθορίζει και τη συμπεριφορά του (object's behaviour). Ο ορισμός της συμπεριφοράς ενός αντικειμένου αποτελείται από τρία μέρη:
 
Γραμμή 17:
Ο κώδικας του κάθε μηνύματος εκτελείται κάθε φορά που ένα αντικείμενο λαμβάνει το εν λόγω μήνυμα. Ο κώδικας που σχετίζεται με κάθε μήνυμα ονομάζεται μέθοδος. Όταν ένα αντικείμενο λαμβάνει ένα μήνυμα, καθορίζει ποια μέθοδος πρέπει να εκτελεστεί και της περνάει τον έλεγχο. Ένα αντικείμενο έχει τόσες μεθόδους, όσα και μηνύματα. Εν γένει, το όνομα της μεθόδου είναι το ίδιο με το όνομα του μηνύματος. Τα δεδομένα ενός αντικειμένου χρησιμοποιούνται για να διατηρούν την πληροφορία γύρω από αυτό. Τα αντικείμενα διατηρούν μεταβλητές, οι οποίες υλοποιούν τα δεδομένα και ονομάζονται μεταβλητές στιγμιότυπου (instance variables).<ref>Το όνομα instance variables είναι σύμβαση της Smalltalk. Στη C++ οι μεταβλητές αυτές ονομάζονται data members.</ref> Είναι σαφές ότι αυτού του είδους οι μεταβλητές ζουν όσο και το αντικείμενο.
 
Ένα από τα χαρακτηριστικά του αντικειμενοστρεφούςαντικειμενοστραφούς προγραμματισμού είναι και το γεγονός, ότι ένα αντικείμενο μπορεί να έρθει σε επικοινωνία με ένα άλλο, μόνο μέσω του interface του δεύτερου. Η λογική και τα δεδομένα κάθε αντικειμένου αποκρύπτονται. Το interface ενθυλακώνει τον κώδικα και τα δεδομένα κάθε αντικειμένου, γι' αυτό και το χαρακτηριστικό αυτό, του αντικειμενοστρεφούςαντικειμενοστραφούς προγραμματισμού, ονομάζεται ενθυλάκωση (encapsulation)
 
Είναι χαρακτηριστικό φαινόμενο, το γεγονός ότι πολλά αντικείμενα επιδεικνύουν την ίδια ακριβώς συμπεριφορά και διαφέρουν μόνο στην τιμή των μεταβλητών στιγμιοτύπου. Για να μην επαναλαμβάνουμε τη συγγραφή του κώδικα για τις μεθόδους, τα δεδομένα και το interface, φροντίζουμε να ομαδοποιήσουμε τα αντικείμενα σε κλάσεις. Κλάση είναι μια ομάδα από αντικείμενα με παρόμοια σημασιολογία και, εν γένει, παρόμοια δομή και λειτουργίες. Είναι χαρακτηριστικό, ότι στον αντικειμενοστρεφήαντικειμενοστραφή προγραμματισμό, δεν ορίζουμε αντικείμενα,αλλά τις κλάσεις στις οποίες ανήκουν. Ένα στιγμιότυπο (instance) είναι ένα αντικείμενο που ανήκει στην κλάση αυτή, και έχει τα δικά του δεδομένα. Δομούμε τις κλάσεις σε ιεραρχίες κλάσεων, έτσι ώστε να κατασκευαστεί ένα δέντρο από κλάσεις. Κάθε κλάση κληρονομεί από την πατρική της όλα τα χαρακτηριστικά της δεύτερης,στα οποία, αν υπάρχει ανάγκη, προσθέτει και τα ιδιαίτερα δικά της. Το φαινόμενο αυτό ονομάζεται κληρονομικότητα. Με τον τρόπο αυτό, μπορούμε να ομαδοποιούμε αλλά και να εξειδικεύουμε τα αντικείμενα με μια δενδρική δομή εύκολα αντιληπτή σημασιολογικά, η οποία ταυτοχρόνως μας επιτρέπει να εξοικονομούμε σημαντικό τμήμα κώδικα (αφού δε χρειάζεται να ορίσουμε ξανά τις λειτουργίες και τη δομή μιας θυγατρικής κλάσης -αρκεί να έχει περιγραφεί ο πατέρας της).
 
Τέλος, άλλο ένα χαρακτηριστικό του αντικειμενοστρεφούςαντικειμενοστραφούς προγραμματισμού είναι το γεγονός ότι διαφορετικά αντικείμενα αντιδρούν με διαφορετικό τρόπο στο ίδιο μήνυμα. (Έχουν, δηλαδή, διαφορετική υλοποίηση της μεθόδου για το ίδιο μήνυμα). Το φαινόμενο ονομάζεται πολυμορφισμός (polymorphism). Τα βασικά χαρακτηριστικά του αντικειμενοστρεφήαντικειμενοστραφή προγραμματισμού, είναι:
 
* Ένα αντικείμενο αποτελείται από δεδομένα, λογική και το interface που τα ενθυλακώνει και που καθορίζει τη συμπεριφορά του αντικειμένου.
Γραμμή 30:
* Δύο αντικείμενα μπορεί να υλοποιούν το ίδιο μήνυμα μέσω διαφορετικών μεθόδων.
 
== Βασικές αρχές ενός αντικειμενοστρεφούςαντικειμενοστραφούς μοντέλου δεδομένων ==
Σύμφωνα με το [Mai89] η έννοια μοντέλο δεδομένων (data model) έχει διττή σημασία:
σημαίνει αφενός ένα συγκεκριμένο σχήμα ή γενικά, περιγραφή των μεταδεδομένων (metadata) σε μια εφαρμογή,
Γραμμή 46:
παρατηρεί «...(σ.σ. ένα μοντέλο) είναι λιγότερο ένα μοντέλο αυτό καθεαυτό, και περισσότερο ένα πλαίσιο για να συλλάβουμε μοντέλα....»</ref>
 
Η ενότητα αυτή αφορά ζητήματα του αντικειμενοστρεφούςαντικειμενοστραφούς μοντέλου δεδομένων. Κυρίως θα βασιστούμε στο μοντέλο που προτείνεται στο [Di93], το οποίο με τη σειρά του βασίζεται στο μοντέλο που διαφαίνεται να υπάρχει στο [At+89]. Επιπλέον,όπου κρίνεται αναγκαίο, θα αναφέρουμε τις ενστάσεις και τους προβληματισμούς άλλων επιστημόνων.
 
Η γενική ιδέα είναι ότι ένα αντικειμενοστρεφέςαντικειμενοστραφές μοντέλο δεδομένων προσπαθεί να ενώσει ιδέες που διέπουν αντικειμενοστρεφήαντικειμενοστραφή συστήματα, με καθιερωμένες ιδέες από ισχύοντα μοντέλα δεδομένων.
 
=== Δομή των Δεδομένων ===
Ένα αντικειμενοστρεφέςαντικειμενοστραφές μοντέλο δεδομένων βασίζεται στη γενική ιδέα του αντικειμένου (object) και της κλάσης (class).
Σύμφωνα με το [Di93], ένα αντικείμενο μπορεί να θεωρηθεί σαν μία τετράδα: '''<OID, τιμή, κατάσταση, κλάση>''' και μια κλάση σαν μία εντεκάδα:
 
Γραμμή 118:
Η μεταφορά της έννοιας της ενθυλάκωσης στις Βάσεις Δεδομένων καθορίζει ότι ένα αντικείμενο ενσωματώνει πρόγραμμα και δεδομένα. Στις σχεσιακές βάσεις, κάθε οντότητα παριστάνεται με μια πλειάδα (tuple), ενώ οι εφαρμογές τρέχουν χρησιμοποιώντας κάποια προστακτική γλώσσα με ενσωματωμένες DML εντολές (ή μια γλώσσα τέταρτης γενεάς). Οι εφαρμογές είναι αποθηκευμένες σε ένα σύστημα αρχείων, ανεξάρτητο της βάσης.
 
Σε ένα αντικειμενοστρεφέςαντικειμενοστραφές σύστημα κάθε οντότητα καθορίζεται σαν ένα τμήμα δεδομένων και ένα τμήμα υλοποίησης, όπου υλοποιούνται οι διάφορες εφαρμογές που έχουν σχέση με την οντότητα.
 
Ένα καλό παράδειγμα, για τη διαφορά ανάμεσα στο σχεσιακό και το αντικειμενοστρεφέςαντικειμενοστραφές μοντέλο, είναι η οντότητα "Εργοστάσιο_Αυτοκινήτων" και η υλοποίηση της εφαρμογής "''Αύξησε_Παραγωγή_Φορτηγών''". Σε μια σχεσιακή βάση, η εφαρμογή "''Αύξησε_Παραγωγή_Φορτηγών''" θα ήταν ένα εξωτερικό πρόγραμμα. Αντίθετα, σε μια αντικειμενοστρεφήαντικειμενοστραφή βάση, η οντότητα "Εργοστάσιο_Αυτοκινήτων" θα αποτελούνταν από το τμήμα διαπροσωπείας (το μέσο επικοινωνίας με το χρήστη), το τμήμα δεδομένων (το οποίο θα έμοιαζε αρκετά με την υλοποίηση της οντότητας στο σχεσιακό μοντέλο) και το συναρτησιακό τμήμα, που ανάμεσα στα άλλα, θα είχε και την εφαρμογή "''Αύξησε_Παραγωγή_Φορτηγών''". Καμιά λειτουργία, πέραν αυτών που καθορίστηκαν στο τμήμα διαπροσωπείας δεν μπορεί να επιτελεστεί. Η παραπάνω θέση αποτελεί ένα από τα πιο σημαντικά στοιχεία για την έννοια της
ενθυλάκωσης. Ο μόνος τρόπος για να αποταθούμε στα διάφορα αντικείμενα, και στις μεταβλητές στιγμιοτύπου τους, είναι μέσω των μηνυμάτων που δηλώθηκαν στο τμήμα διαπροσωπείας.
 
Γραμμή 140:
 
=== Περιορισμοί Ακεραιότητας ===
Οι περιορισμοί σκοπό έχουν να εξασφαλίσουν την ακεραιότητα των δεδομένων. Στις αντικειμενοστρεφείςαντικειμενοστραφείς βάσεις δεδομένων οι περιορισμοί ακεραιότητας που συνήθως μπορούν να οριστούν είναι οι ακόλουθοι:
 
* Περιορισμοί ακεραιότητας κλειδιού (Key constraints).
* Υπαρξιακός περιορισμός ακεραιότητας (Existential constraint) (όταν σε κάποιο σύνθετο αντικείμενο, υπάρχει αναφορά σε κάποιο άλλο αντικείμενο, τότε το αντικείμενο στο οποίο γίνεται η αναφορά, υπάρχει).
* Περιορισμοί ακεραιότητας μη κενού χαρακτηριστικού (NOT NULL constraints).
* Περιορισμός δομικής συνέπειας (structural consistency) (το σχήμα μιας αντικειμενοστρεφούςαντικειμενοστραφούς βάσης δεδομένων είναι δομικά συνεπές αν η ιεραρχία των κλάσεων είναι ένας [[Κατευθυνόμενος Άκυκλος Γράφος|κατευθυνόμενος ακυκλικός γράφος]] (DAG), αν δεν υπάρχουν συγκρούσεις στον ορισμό χαρακτηριστικών (attributes) και μεθόδων και αν οι τύποι και οι υπογραφές των μεθόδων είναι συμβατοί. Ένα αντικείμενο, δε, είναι δομικά συνεπές, αν η τιμή του ανταποκρίνεται στον τύπο της κλάσης του).
* Περιορισμός συνέπειας συμπεριφοράς (Behavioral consistency) (μια βάση είναι συνεπής στη συμπεριφορά της αν κάθε μέθοδος σέβεται την υπογραφή της και αν ο κώδικάς της δεν παράγει λάθη στο χρόνο εκτέλεσης (run-time errors) ή ανεπιθύμητα αποτελέσματα).
* Περιορισμός διατήρησης της συνέπειας του αντίστροφου δείκτη (Inverse link consistency).
Γραμμή 154:
Η επιτυχία των σχεσιακών συστημάτων διαχείρισης βάσεων δεδομένων βασίστηκε αφενός στην απλότητα του σχεσιακού μοντέλου δεδομένων και στην ανεξαρτησία των δεδομένων από τις εφαρμογές, και αφετέρου στην τυποποίηση. Η αποδοχή του [[SQL|SQL standard]], το οποίο βασίστηκε στο μοντέλο δεδομένων και τη γλώσσα που πρότεινε η ΙΒΜ (η μεγαλύτερη εταιρεία που αναμίχθηκε από νωρίς στην ανάπτυξη τέτοιων συστημάτων), πρόσφερε μεταφερσιμότητα των δεδομένων και των εφαρμογών, γεγονός που έκανε το σχεσιακό μοντέλο δεδομένων και την SQL τόσο δημοφιλή.
 
Στην περίπτωση των αντικειμενοστρεφώναντικειμενοστραφών συστημάτων δεδομένων, η κατάσταση είναι διαφορετική, καθώς η "παιδική τους ηλικία" συνοδεύτηκε από το βασικό πρόβλημα της ανυπαρξίας ενός καλά ορισμένου μοντέλου δεδομένων. Κάθε σύστημα προσέφερε το δικό του μοντέλο δεδομένων. Τα μοντέλα δεδομένων αυτά έμοιαζαν σημαντικά μεταξύ τους, όμως η ομοιότητα δεν είναι αρκετή: στο επίπεδο του μοντέλου δεδομένων χρειάζεται ταύτιση, και όχι απλή ομοιότητα στα βασικά στοιχεία. Το ίδιο συμβαίνει και στο επίπεδο των γλωσσών προγραμματισμού και των ερωτήσεων. Κάθε σύστημα, βασιζόμενο στο δικό του μοντέλο δεδομένων, προσέφερε και τη δική του γλώσσα. Αν και οι γλώσσες προγραμματισμού της βάσης δεδομένων βασίζονταν στις ίδιες κλασικές γλώσσες τρίτης γενιάς ([[C plus plus|C++]], [[Smalltalk]], κλπ.) δεν υπήρχε ταύτιση στα επιπλέον στοιχεία που χρειάζονται για τη διαχείριση των αντικειμένων μιας βάσης δεδομένων.
 
Με βάση τα παραπάνω, ήταν φανερή η ανάγκη για την ύπαρξη τουλάχιστον ενός κοινού παρονομαστή, που να επιτρέπει τη μεταφερσιμότητα εφαρμογών και δεδομένων. Το Object Database Management Group (ODMG) είναι μια επιτροπή που, στις αρχές της δεκαετίας του 1990, πρότεινε ένα κοινό interface (ODMG-93) στους διάφορους κατασκευαστές αντικειμενοστρεφώναντικειμενοστραφών συστημάτων βάσεων δεδομένων, με βάση το οποίο να συγγράφονται μεταφέρσιμες εφαρμογές από το ένα σύστημα στο άλλο. Η μεταφερσιμότητα (portability) των εφαρμογών συνίσταται στη μεταφερσιμότητα του σχήματος της βάσης, του binding της γλώσσας προγραμματισμού, της γλώσσας διαχείρισης δεδομένων και της γλώσσας ερωτήσεων.
 
Το ODMG δεν είναι μια επίσημη επιτροπή τυποποίησης. Συμμετέχουν όμως, σ’ αυτήν, εταιρείες που κατέχουν το 80% της αγοράς των αντικειμενοστρεφώναντικειμενοστραφών συστημάτων βάσεων δεδομένων. Επιπλέον, οι εταιρείες αυτές έχουν δεσμευτεί να παρέχουν το κοινό αυτό interface από τις αρχές του 1995. Κομμάτια του standard αποτελούν στοιχεία ήδη υλοποιημένα σε κάποια από τα υπάρχοντα αντικειμενοστρεφήαντικειμενοστραφή συστήματα βάσεων δεδομένων (π.χ. η γλώσσα ερωτήσεων βασίζεται στη γλώσσα ερωτήσεων του Ο2).
 
Το 1993, τα επτά μέλη του ODMG με δικαίωμα ψήφου ήταν οι εταιρείες Object Design (ObjectStore), Objectivity, ONTOS, O2 Technology, POET Software, Servio Corporation (GemStone), και Versant Technology. Επιπλέον όλες οι εταιρείες που συμμετέχουν ως Reviewer Members έχουν δεσμευτεί να υλοποιήσουν το ODMG-93. Σήμερα, στα 1997, οι εταιρείες αυτές έχουν παραμείνει σχεδόν οι ίδιες (αν και πολλές έχουν αλλάξει τα ονόματά τους) και είναι οι εξής: GemStone Systems, IBEX Computing, O2 Technology, Object Design, Objectivity, POET Software, UniSQL, Versant Object Technology. Πρακτικά, αποχώρησε η Ontos και προσχώρησε η IBEX Computing (που διακινεί το Itasca) και η UniSQL. Στην παρουσίαση του ODMG-93 standard θα βασιστούμε κυρίως στο [Ca95] και κατά δεύτερο λόγο στα [Ki94], [ODMG94]. Όλα τα σχήματα και τα παραδείγματα είναι από το [Ca94] και το [Ca95].
Γραμμή 169:
* Language Bindings ([[C plus plus|C++]], [[Smalltalk]])
 
Η περιγραφή του ODMG-93 περιλαμβάνει ένα μοντέλο αντικειμένων που είναι μια επέκταση στο μοντέλο αντικειμένων του OMG [OMG97], μια γλώσσα ορισμού αντικειμένων (ODL) που παρέχει ένα μηχανισμό ανεξάρτητο από τις γλώσσες προγραμματισμού για να εκφράσει κανείς το σχήμα μιας βάσης, μια γλώσσα ερωταποκρίσεων αντικειμένων (OQL) που παρέχει ένα δηλωτικό τρόπο προσπέλασης των δεδομένων, σαν μια επέκταση της SQL, και δυο επεκτάσεις αντικειμενοστρεφώναντικειμενοστραφών γλωσσών προγραμματισμού. Η μια επέκταση είναι αυτή για τη C++ και η άλλη για τη Smalltalk.
 
Στην παρακάτω εικόνα φαίνεται ο τρόπος, με βάση τον οποίο θα χρησιμοποιείται ένα αντικειμενοστρεφέςαντικειμενοστραφές σύστημα βάσεων δεδομένων, στα πλαίσια της προδιαγραφής του ODMG-93. Ένας διαχειριστής της βάσης γράφει δηλώσεις για το σχήμα της, οι οποίες συγγράφονται στην ODL, ή σε μια επέκταση της γλώσσας προγραμματισμού (PL ODL). Ο προγραμματιστής εφαρμογών γράφει και ένα πρόγραμμα που υλοποιεί την εφαρμογή. Ο κώδικας του προγράμματος αυτού γράφεται σε μια [[γλώσσα προγραμματισμού]] (PL), όπως για παράδειγμα, η C++, η οποία επεκτείνεται για να αποτελέσει την γλώσσα προγραμματισμού μιας βάσης δεδομένων. Οι δηλώσεις περνούν από κάποιο προεπεξεργαστή (preprocessor), ο οποίος αφενός παράγει το σχήμα της βάσης και αφετέρου φτιάχνει μια περιγραφή του σχήματος στη γλώσσα προγραμματισμού της εφαρμογής. Ο κώδικας της εφαρμογής και η περιγραφή αυτή
μεταφράζονται, δημιουργείται ένα εκτελέσιμο αρχείο της εφαρμογής, το οποίο αφού συνδυαστεί με τη μηχανή του αντικειμενοστρεφούςαντικειμενοστραφούς συστήματος βάσεων δεδομένων (μέσα από ένα πρόγραμμα σύνδεσης - linker) δημιουργεί την τελική εφαρμογή, η οποία και επεξεργάζεται τα δεδομένα της βάσης δεδομένων.
 
=== Το Μοντέλο Αντικειμένων του ODMG ===
Γραμμή 185:
 
=== Γλώσσα Ορισμού Αντικειμένων (Object Definition Language - ODL) ===
Η ODL είναι μια γλώσσα που χρησιμοποιείται για να δηλώσει διαπροσωπείες (interfaces) σε τύπους αντικειμένων που ακολουθούν το μοντέλο αντικειμένων του ODMG-93 και έχει σκοπό να παρέχει μεταφερσιμότητα των σχημάτων των βάσεων δεδομένων. Η ODL αποτελεί την DDL για τύπους αντικειμένων. Καθορίζει τα χαρακτηριστικά των τύπων και τις υπογραφές των μεθόδων. Για τη διαχείριση των στιγμιότυπων των τύπων, και την υλοποίηση των μεθόδων, υπάρχουν οι γλώσσες διαχείρισης αντικειμένων (Object Manipulation Languages - OMLs). Το ODMG-93 δεν καθορίζει κάποια συγκεκριμένη OML. Περιγράφει, όμως, δύο interfaces για τη σύνδεση των αντικειμενοστρεφώναντικειμενοστραφών συστημάτων βάσεων δεδομένων με C++ και Smalltalk.
 
Δεδομένου ότι δεν είναι σαφές που θα υλοποιηθεί το σχήμα που θα καθοριστεί στην ODL, η ODL πρέπει να είναι ανεξάρτητη από την οποιαδήποτε γλώσσα προγραμματισμού. Επιπλέον, πρέπει να μπορεί να ενσωματωθεί με ομαλό τρόπο σε γλώσσες όπως η Smalltalk και η C++, πράγμα που καθορίζεται στα αντίστοιχα bindings. Ακολουθεί το παράδειγμα ενός υποτυπώδους σχήματος σε ODL (με έντονα γράμματα φαίνονται οι δεσμευμένες λέξεις της ODL):
Γραμμή 295:
'''Ref'''<Professor> profP;
 
Στην παραπάνω εικόνα φαίνεται ο τρόπος με τον οποίο παράγεται μια εφαρμογή, χρησιμοποιώντας το C++ binding για ODL/OML. Ένας διαχειριστής της βάσης γράφει δηλώσεις για το σχήμα της, οι οποίες συγγράφονται στην C++ ODL, η οποία είναι μια επέκταση της C++. Ο προγραμματιστής εφαρμογών γράφει και ένα πρόγραμμα που υλοποιεί την εφαρμογή σε C++, η οποία επεκτείνεται για να αποτελέσει την γλώσσα προγραμματισμού μιας βάσης δεδομένων. Οι δηλώσεις περνούν από κάποιο προεπεξεργαστή (preprocessor), ο οποίος αφενός παράγει το σχήμα της βάσης και αφετέρου φτιάχνει μια περιγραφή του σχήματος στη C++. Ο κώδικας της εφαρμογής και η περιγραφή αυτή μεταφράζονται, δημιουργείται ένα εκτελέσιμο αρχείο της εφαρμογής, το οποίο αφού συνδυαστεί με τη μηχανή του αντικειμενοστρεφούςαντικειμενοστραφούς συστήματος βάσεων δεδομένων (μέσα από ένα πρόγραμμα σύνδεσης -linker) δημιουργεί την τελική εφαρμογή, η οποία και επεξεργάζεται τα δεδομένα της βάσης δεδομένων.
 
Όπως προαναφέρθηκε, η ODL καθορίζει το σχήμα μιας βάσης, ενώ η OML καθορίζει τη διαχείριση των αντικειμένων, των σχέσεων μεταξύ των κλάσεων, καθώς και των συλλογών (set, bag, list, array). Σε ότι αφορά τις [[Συναλλαγές (βάσεις δεδομένων)|δοσοληψίες ή συναλλαγές]] (transactions), είναι υποχρεωτικό, κάθε λειτουργία διαχείρισης αντικειμένων να γίνεται μέσα από μια δοσοληψία. Οι δοσοληψίες αποτελούν στιγμιότυπα της ομώνυμης κλάσης και διαθέτουν λειτουργίες commit, abort και checkpoint. Δεν υποστηρίζονται μακρές συναλλαγές, υποστηρίζονται όμως, εμφωλευμένες. Επιπλέον, η OML είναι υπεύθυνη και για τις λειτουργίες σύνδεσης και αποσύνδεσης με μία βάση.
Γραμμή 301:
Υπάρχει και μια απεικόνιση της OQL για C++. Οι ερωτήσεις μπορούν να δηλωθούν μέσα σε ένα πρόγραμμα μέσω μιας συναρτήσεως για ερωτήσεις, η οποία παίρνει συμβολοσειρές για ορίσματα. Τα ορίσματα αυτά πρέπει να είναι έγκυρες ερωτήσεις, οι οποίες μεταφράζονται και εκτελούνται στο run-time. Το αποτέλεσμα επιστρέφεται στην παράμετρο "result".
 
== ΑντικειμενοστρεφείςΑντικειμενοστραφείς επεκτάσεις των Σχεσιακών Συστημάτων (SQL/Object, SQL/Foundation) ==
Εδώ θα εξετάσουμε τον τρόπο με τον οποίο οι παρουσία των
αντικειμενοστρεφώναντικειμενοστραφών βάσεων δεδομένων επηρέασε την εξέλιξη των κλασικών, σχεσιακών
συστημάτων. Διάφορα σχεσιακά ΣΔΒΔ ([[Oracle Database|Oracle]], Informix κλπ.) άρχισαν σιγά σιγά, στα μέσα
της δεκαετίας του '90 να παρέχουν αντικειμενοστρεφείςαντικειμενοστραφείς επεκτάσεις στη μηχανή τους. Η πιο
βασική, όμως, έκφανση της επίδρασης που είχε η ύπαρξη των αντικειμενοστρεφώναντικειμενοστραφών συστημάτων
ήταν η υιοθέτηση αντικειμενοστρεφώναντικειμενοστραφών επεκτάσεων στο καινούριο στάνταρτ της SQL, το SQL-3. Πιο συγκεκριμένα, υπάρχουν τέσσερις κύριοι τομείς στους οποίους συνοψίζεται αδρά, ηεπίδραση αυτή. Οι τομείς αυτοί είναι:
* Εισαγωγή τύπων που ορίζονται από το χρήστη -UDTs
* Κατηγορήματα για την κατασκευή τους -Type Predicate
Γραμμή 706:
 
[[Κατηγορία:Βάσεις δεδομένων]]
[[Κατηγορία:ΑντικειμενοστρεφήςΑντικειμενοστραφής προγραμματισμός]]