Αντικειμενο-σχεσιακά ΣΔΒΔ 19 Αντικειμενο-σχεσιακά ΣΔΒΔ Εμφωλιασμένες Σχέσεις Το Πρότυπο SQL:1999 (SQL3) Σύγκριση Συστημάτων
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Κίνητρο Οι λόγοι που οδήγησαν τους ερευνητές προς αυτήν την κατεύθυνση είναι: αφενός τα μειονεκτήματα που παρουσιάζουν τα αντικειμενο-στραφή ΣΔΒΔ, και αφετέρου το γεγονός ότι τα σχεσιακά ΣΔΒΔ έχουν λύσει πολλά προβλήματα που αφορούν στη διαχείριση δεδομένων, και επομένως αποτελούν μία καλή βάση για την κατασκευή νέων συστημάτων με περισσότερες δυνατότητες.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Εμφωλιασμένες σχέσεις Μία από τις απαιτήσεις του σχεσιακού μοντέλου είναι η ατομικότητα των τιμών σε μία στήλη. Ο κανόνας αυτός προσδιορίζει στην ουσία και την πρώτη κανονική μορφή (1NF). Για την υποστήριξη πολύπλοκων αντικειμένων θα πρέπει οι σχέσεις να επιτρέπουν σε ένα χαρακτη-ριστικό να δέχεται τιμές που δεν είναι κατ΄ανάγκη ατομικές.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Εμφωλιασμένες σχέσεις Αυτό οδηγεί σε εμφωλιασμένες σχέσεις (nested relations), όπου η τιμή ενός χαρακτηριστικού μίας σχέσης μπορεί να είναι μία άλλη σχέση. Στην περίπτωση αυτή η σχέση δεν ικανοποιεί την πρώτη κανονική μορφή (non-first normal form, N1NF). Το μοντέλο που προκύπτει από το σχεσιακό μοντέλο επιτρέποντας σχέσεις N1NF καλείται μοντέλο εμφωλιασμένων σχέσεων (nested-relational model) και αποτελεί μία πρώτη προσέγγιση επέκτασης του σχεσιακού μοντέλου για την υποστήριξη πολύπλοκων τύπων δεδομένων.
Εμφωλιασμένες σχέσεις Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Εμφωλιασμένες σχέσεις
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Η υποστήριξη αντικειμένων και πολύπλοκων τύπων δεδομένων από ένα σχεσιακό σύστημα επιβάλλει και την επέκταση της γλώσσας SQL έτσι ώστε να μπο-ρούμε να εκμεταλλευτούμε τις επιπλέον λειτουργίες του συστήματος. Για το σκοπό αυτό δημιουργήθηκε ένα νέο πρότυπο της γλώσσας SQL με την ονομασία SQL3, το οποίο εμπλουτίζει τη γλώσσα SQL με νέα στοιχεία τα βασικότερα από τα οποία είναι:
SQL3 υποστήριξη τύπου γραμμής, Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 υποστήριξη τύπου γραμμής, υποστήριξη αντικειμένων και εννοιών του αντικειμενο-στρεφούς μοντέλου, υποστήριξη αφαιρετικών τύπων δεδομένων, τύποι δεδομένων οριζόμενοι από το χρήστη, διαδικασίες και συναρτήσεις οριζόμενες από το χρήστη, υποστήριξη μεγάλων αντικειμένων, αυτόματη εκτέλεση εντολών μετά ή πριν από εισαγωγή, διαγραφή ή ενημέρωση δεδομένων.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Υποστήριξη Τύπου Γραμμής. Η SQL3 επιτρέπει τη διαχείριση σύνθετων χαρακτηριστικών. Ένα χαρακτη-ριστικό μπορεί να αποτελείται από πολλά διαφορετικά πεδία σχηματίζοντας μία γραμμή. Επίσης, μία γραμμή ενός πίνακα μπορεί να χρησιμο-ποιηθεί ως παράμετρος σε μία συνάρτηση, να αποτελεί τιμή επιστροφής μίας συνάρτησης ή να αποθηκευθεί σε μία μεταβλητή. Θεωρείστε τον πίνακα Συνδρομητής, ο οποίος περιέχει τα χαρακτηριστικά κωδικός, όνομα και διεύθυνση. Το χαρακτηριστικό διεύθυνση είναι σύνθετο και αποτελείται από τα πεδία οδός, αριθμός, πόλη, ταχυδρομικός-κώδικας και χώρα.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Υποστήριξη Τύπου Γραμμής. Για την κατασκευή του πίνακα χρησιμοποιείται η εντολή CREATE TABLE της SQL3. Η δεσμευμένη λέξη ROW δηλώνει ότι ακο-λουθεί ο ορισμός γραμμής που αποτελεί την περιγραφή του χαρακτηριστικού διεύθυνση: CREATE TABLE Συνδρομητής (κωδικός INT, όνομα CHAR(50), Διεύθυνση ROW (οδός CHAR(30), αριθμός CHAR(4), ταχυδρομικός-κώδικας CHAR(6), πόλη CHAR(30), χώρα CHAR(30)));
SQL3 Υποστήριξη Τύπου Γραμμής. INSERT INTO Συνδρομητής Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Υποστήριξη Τύπου Γραμμής. INSERT INTO Συνδρομητής VALUES (1000, 'A. Παπαγεωργίου', ('Φιλύρων', '13', '56225', 'Θεσσαλονίκη', 'Ελλάδα'));
SQL3 Τύποι Οριζόμενοι από το χρήστη (user-defined types). Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Τύποι Οριζόμενοι από το χρήστη (user-defined types). Οι τύποι δεδομένων που υποστηρίζει ένα ΣΔΒΔ συνήθως δεν επαρκούν για την κάλυψη των απαιτήσεων όλων των εφαρμογών. Η SQL3 δίνει τη δυνατότητα να ορίζονται νέοι τύποι δεδομένων μέσω της εντολής CREATE TYPE. Η δημιουργία νέων τύπων δεδομένων προσφέρει σημαντική ευκολία στην υλοποίηση πολύπλοκων αντικειμένων με στόχο τη ρεαλιστική αναπαράσταση του πραγματικού κόσμου.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Παράδειγμα ορισμού ενός νέου τύπου δεδομένων για τη διαχείριση ορθογωνίων γεωμετρικών σχημάτων: CREATE TYPE RectType AS ( x1 INT, x2 INT, y1 INT, y2 INT, FUNCTION getArea (r RectType) RETURNS FLOAT RETURN (x2-x1)*(y2-y1); END, FUNCTION getPerimeter (r RectType) RETURNS FLOAT RETURN 2*(x2-x1) + 2*(y2-y1); END ) REF IS SYSTEM GENERATED INSTANTIABLE NOT FINAL;
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Η χρήση ενός νέου τύπου δεδομένων ως πεδίο ορισμού μίας στήλης δεν διαφέρει από τη χρήση ενός απλού τύπου δεδομένων: CREATE TABLE κύκλωμαVLSI (κωδικός INT, περιοχή GeneralRectType);
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Η SQL3 επιτρέπει το σχηματισμό ιεραρχίας εξειδίκευ-σης μεταξύ των νέων τύπων δεδομένων μέσω απλής κληρονομικότητας (η πολλαπλή κληρονομικότητα δεν υποστηρίζεται από την SQL3). Θεωρείστε μία εφαρμογή που απαιτεί κάποια από τα γεωμετρικά αντικείμενα να έχουν ένα συγκεκριμένο χρώμα που δηλώνεται σε μορφή RGB. Μπορούμε να δημιουργήσουμε ένα νέο τύπο δεδομένων ColoredGeneralRectType, ο οποίος κληρονομεί τα χαρακτηριστικά και τις μεθόδους του τύπου GeneralRectType:
SQL3 CREATE TYPE ColoredGeneralRectType UNDER GeneralRectType AS Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 CREATE TYPE ColoredGeneralRectType UNDER GeneralRectType AS (colorR INT, colorG INT, colorB INT, FUNCTION ..., ... );
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Διαδικασίες και συναρτήσεις οριζόμενες από το χρήστη (user-defined functions). Μία διαδικασία ή συνάρτηση μπορεί να ορισθεί είτε ως μέθοδος ενός τύπου δεδομένων είτε ως μέθοδος του σχήματος της ΒΔ, και μπορεί να υλοποιηθεί είτε εξωτερικά, με τη βοήθεια μίας γλώσσας προγραμμα-τισμού (π.χ. C++), είτε εσωτερικά εξολοκλήρου με εντολές της SQL3.
SQL3 CREATE FUNCTION MyFunction (IN MyParameter) RETURNS FLOAT Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 CREATE FUNCTION MyFunction (IN MyParameter) RETURNS FLOAT EXTERNAL NAME MyFunctionFileName LANGUAGE C PARAMETER STYLE SQL DETERMINISTIC NO SQL;
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Πριν το πρότυπο SQL3 ο μόνος τρόπος να ορίσουμε συσχετισμό μεταξύ δύο πινάκων ήταν η χρήση του ξένου κλειδιού. Η SQL3 επιτρέπει τη χρήση τύπου αναφοράς (reference type) για τον ορισμό συσχετισμών μεταξύ γραμμών. Μία τιμή ενός τύπου αναφοράς μπορεί να αποθηκευθεί σε έναν πίνακα και να χρησιμοποιηθεί ως άμεση ανα-φορά σε μία συγκεκριμένη γραμμή ενός άλλου πίνακα.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Παρατηρείστε την ομοιότητα μεταξύ του τύπου αναφοράς και των δεικτών στη γλώσσα C/C++. Η τιμή του τύπου αναφοράς χρησιμοποιείται όπως ακριβώς και οι δείκτες. Με τη χρήση των αναφορών μία γραμμή ενός πίνακα μπορεί να μοιρασθεί σε πολλούς πίνακες απλοποιώντας τη διατύπωση ερωτημάτων που περιέχουν πράξεις σύνδεσης.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Μεγάλα Αντικείμενα. Πολλές φορές παρουσιάζεται η ανάγκη για την αποθήκευση δεδομένων με μεγάλο μέγεθος σχετικά με τα μεγέθη που υποστηρίζουν οι απλοί τύποι δεδομένων. Θεωρείστε για παράδειγμα ένα μεγάλο αρχείο κειμένου. Οι τύποι δεδομένων CHAR και VARCHAR έχουν περιορισμούς σχετικά με το μέγιστο μέγεθος μίας σειράς χαρακτήρων. Επομένως, είναι αδύνατο το κείμενο να αποθηκευθεί σε μία μεταβλητή τύπου CHAR ή VARCHAR.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Η SQL3 παρέχει εναλλακτικές λύσεις για το πρόβλημα αυτό, καθώς υποστηρίζει μεγάλα αντικείμενα (large objects, LOBs): CREATE TABLE Φοιτητής (κωδικός INT NOT NULL, όνομα VARCHAR(40), φωτογραφία BLOB(200K), βιογραφικό-σημείωμα CLOB(20K), PRIMARY KEY (κωδικός));
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Διατήρηση Τμημάτων Κώδικα. Η SQL3 έχει εμπλουτισθεί με πρόσθετες εντολές έτσι ώστε να είναι υπολογιστικά πλήρης (computationally complete). Οι εντολές της γλώσσας μπορούν να ομοδοποιηθούν και να σχηματίσουν ένα τμήμα κώδικα με τις δικές του τοπικές μεταβλητές. Τα τμήματα κώδικα μπορούν να αποθηκευθούν στη ΒΔ και να είναι πάντοτε διαθέσιμα προς χρήση.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Δηλώσεις μεταβλητών. Η δήλωση μίας μεταβλητής πραγματοποιείται με την εντολή DECLARE ως εξής: DECLARE x INT; DECLARE p BLOB(100K); DECLARE flag BOOLEAN;
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Έλεγχος συνθηκών. Με τη χρήση των εντολών IF ... THEN ... ELSE ... END IF μπορούμε να εκτελέσουμε διαφορετικές εντολές ανάλογα με τη συνθήκη που υπάρχει στο IF. Το ίδιο υποστηρίζεται και με την εντολή CASE, η οποία χρησιμοποιείται ως εξής: CASE x WHEN 1 THEN y=100; WHEN 2 THEN y=200; WHEN default THEN SET y=0; END CASE;
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Ανακύκλωση. Με τη χρήση των εντολών FOR ... END FOR, WHILE ... END WHILE και REPEAT ... UNTIL μπορούμε να επαναλαμβάνουμε την εκτέλεση ενός τμήματος κώδικα μέχρι να ισχύσει η συνθήκη εξόδου.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Ένας σκανδαλισμός (trigger) είναι ένα τμήμα κώδικα που εκτελείται όταν συμβεί ένα συγκεκριμένο γεγονός. Τα γεγονότα που ενεργοποιούν σκανδαλισμούς είναι εισαγωγές, διαγραφές και ενημερώσεις στα δεδομένα ενός πίνακα. Σε αντίθεση με τις διαδικασίες και τις συναρτήσεις, ένας σκανδαλισμός δεν δέχεται παραμέτρους και δεν μπορεί να κληθεί άμεσα από κάποιο τμήμα κώδικα προγράμματος εφαρμογής.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 Οι σκανδαλισμοί μπορούν να χρησιμοποιηθούν για τους ακόλουθους σκοπούς: διενέργεια ελέγχων πριν από την εισαγωγή δεδομένων, έτσι ώστε τα δεδομένα που εισάγονται να ικανοποιούν πολύπλοκους περιορισμούς ακεραιότητας, καταγραφή των ενεργειών που έχουν πραγματοποιηθεί σε έναν πίνακα (logging), και υποστήριξη προειδοποιήσεων όταν εισαχθούν, διαγραφούν ή ενημερωθούν δεδομένα ενός πίνακα.
SQL3 CREATE TRIGGER όνομα-σκανδαλισμού Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ SQL3 CREATE TRIGGER όνομα-σκανδαλισμού BEFORE | AFTER <γεγονός ενεργοποίησης> ON <όνομα-πίνακα> [REFERENCING <ψευδώνυμα νέων και παλαιών τιμών>] [FOR EACH ROW | STATEMENT] [WHEN (συνθήκη-σκανδαλισμού)] BEGIN <σώμα σκανδαλισμού> END;
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Σύγκριση συστημάτων Σύμφωνα με τον Stonebraker οι εφαρμογές μπορούν να ομαδοποιηθούν σε τέσσερις κατηγορίες, ανάλογα με τις απαιτήσεις τους ως προς: απαιτήσεις αναζήτησης και υποστήριξη πολλών χρηστών, και πολυπλοκότητα δεδομένων και επεκτασιμότητα. Οι κατηγορίες αυτές είναι οι εξής τέσσερις:
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Σύγκριση συστημάτων Οι εφαρμογές με μικρή πολυπλοκότητα δεδομένων και μικρές απαιτήσεις αναζήτησης μπορούν να εξυπηρετη-θούν απευθείας από το λειτουργικό σύστημα, μέσω του συστήματος αρχείων. Παραδείγματα τέτοιων εφαρμο-γών είναι οι επεξεργαστές κειμένου και προγράμματα επεξεργασίας εικόνας.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Σύγκριση συστημάτων Οι εφαρμογές με μικρή πολυπλοκότητα δεδομένων αλλά μεγάλες απαιτήσεις για αναζητήσεις και εξυπηρέτηση πολλών χρηστών, όπως εφαρμογές μηχανοργάνωσης εταιρείας, μπορούν να εξυπηρετηθούν από ένα σχεσιακό ΣΔΒΔ.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Σύγκριση συστημάτων Οι εφαρμογές που διαχειρίζονται πολύπλοκα δεδομένα και έχουν μεγάλες απαιτήσεις σε επεκτασιμότητα αλλά δεν έχουν υψηλές απαιτήσεις ως προς την αναζήτηση μπορούν να στηριχθούν σε ένα αντικειμενοστρεφές ΣΔΒΔ. Παραδείγματα εφαρμογών αυτής της κατηγορίας είναι οι εφαρμογές CAD.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Σύγκριση συστημάτων Τέλος, οι εφαρμογές με υψηλές απαιτήσεις στην πολύ-πλοκότητα των δεδομένων, την αναζήτηση, την υποστη-ριξη πολλών χρηστών και την επεκτασιμότητα μπορούν να υποστηριχθούν από ένα αντικειμενο-σχεσιακό ΣΔΒΔ. Παραδείγματα εφαρμογών της κατηγορίας αυτής είναι τα συστήματα γεωγραφικών πληροφοριών και οι εφαρμογές πολυμέσων.
Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Σύγκριση συστημάτων
Σύνοψη Κεφάλαιο 19: Αντικειμενο-σχεσιακά ΣΔΒΔ Τα αντικειμενο-σχεσιακά ΣΔΒΔ ακολουθούν μία διαφορετική προσέγγιση για την υποστήριξη των σύγχρονων εφαρμογών σε σχέση με τα αντικειμενοστρεφή ΣΔΒΔ. Ένα αντικειμενο-σχεσιακό ΣΔΒΔ υποστηρίζει πλήρως το σχεσιακό μοντέλο δεδομένων, αλλά έχει εμπλουτισθεί με επιπλέον δυνατότητες με στόχο την υποστήριξη πολύπλοκων αντικειμένων. Οι λόγοι που οδήγησαν τους ερευνητές στην κατεύθυνση είναι αφενός τα μειονεκτήματα που παρουσιάζουν τα αντικειμενο-στρεφή ΣΔΒΔ και αφετέρου το γεγονός ότι τα σχεσιακά ΣΔΒΔ έχουν λύσει πολλά προβλήματα που αφορούν στη διαχείριση δεδομένων, και επομένως αποτελούν μία καλή βάση για την κατασκευή νέων συστημάτων με περισσότερες δυνατότητες. Πολλοί κατασκευαστές εμπορικά διαθέσιμων ΣΔΒΔ όπως η IBM, η Microsoft και η Oracle έχουν ήδη προχωρήσει στην επέκταση των συστημάτων τους σε αντικειμενο-σχεσιακά.