Βάσεις Δεδομένων II Αντικειμενο-Σχεσιακές Βάσεις Δεδομένων Πάνος Βασιλειάδης Δεκέμβρης 2002

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
Advertisements

Μάρτιος 2011 Βαρόμετρο ΕΒΕΘ - Καταναλωτές. “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Βάσεις Δεδομένων II Αντικειμενοστρεφείς Βάσεις Δεδομένων Πάνος Βασιλειάδης.
Βάσεις Δεδομένων II Περίληψη: Αντικειμενοστρεφείς Βάσεις Δεδομένων Πάνος Βασιλειάδης Νοέμβρης 2002
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
MySQL + Γλώσσα Προγραμματισμού
Βάσεις Δεδομένων.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
PL/SQL.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 6: Java Collections Εβδομάδα 6: Συλλογές δεδομένων στην Java.
Resource Description Framework
Αποθηκευμένες Διαδικασίες και Εναύσματα Δρ. Παναγιώτης Συμεωνίδης.
JAVA και SQL Δαμιανός Χατζηαντωνίου
Βαρόμετρο ΕΒΕΘ - Καταναλωτές Σεπτέμβριος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
Αντικείμενα, Κλάσεις και Μέθοδοι
Επανάληψη βασικών αρχών του αντικειμενοστρεφούς προγραμματισμού
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
2006 GfK Praha CORRUPTION CLIMATE IN EUROPE % % % %0 - 10% % % % % % ΚΛΙΜΑ ΔΙΑΦΘΟΡΑΣ Η.
Βάσεις Δεδομένων II Διαχείριση Δοσοληψιών Πάνος Βασιλειάδης Σεπτέμβρης 2002
1 Ανικειμενοστραφής & Αντικειμενο-Σχεσιακές Βάσεις Δεδομένων.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
1919 Αντικειμενο-σχεσιακά ΣΔΒΔ  Εμφωλιασμένες Σχέσεις  Το Πρότυπο SQL:1999 (SQL3)  Σύγκριση Συστημάτων.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
1 Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Επεξεργασία και βελτιστοποίηση ερωτήσεων Πάνος Βασιλειάδης Σεπτέμβρης.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
9 Η Γλώσσα SQL Ορισμός Δεδομένων (data definition)
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
Βαρόμετρο ΕΒΕΘ - Καταναλωτές Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Διαχείριση Συναλλαγών Πάνος Βασιλειάδης Μάρτιος 2014
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Οι επεκτάσεις του έργου TOOBIS στις γλώσσες ορισμού και ερωτήσεων του ODMG Κ. Βασιλάκης.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
Βάσεις Δεδομένων Κεφ. 1 Πλεονεκτήματα Β.Δ. έναντι αρχείων Βασικές λειτουργίες Β.Δ. Εφαρμογές Β.Δ. στην καθημερινή ζωή.
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Βάσεις Δεδομένων Ι 4η διάλεξη
ΤΙΤΛΟΣ ΕΡΓΑΣΙΑΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ανδρέου Βασίλης.
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Κλάσεις και αντικείμενα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αντικειμενο-σχεσιακά ΣΔΒΔ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Μεταγράφημα παρουσίασης:

Βάσεις Δεδομένων II Αντικειμενο-Σχεσιακές Βάσεις Δεδομένων Πάνος Βασιλειάδης Δεκέμβρης

2 Περιεχόμενα Επανάληψη αντικειμενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισμένοι από τον Χρήστη Διακριτοί τύποι - Distinct Types Αφηρημένοι τύποι - Abstract Data Types (ADTs) Τύποι γραμμών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες

3 Περιεχόμενα Επανάληψη αντικειμενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισμένοι από τον Χρήστη Διακριτοί τύποι - Distinct Types Αφηρημένοι τύποι - Abstract Data Types (ADTs) Τύποι γραμμών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες

4 Αντικειμενοστρεφής Προγραμματισμός – Object Oriented Programming (OOP) «μοντελοποίηση του λογισμικού και κάποιες αρχές ανάπτυξης που διευκολύνουν την κατασκευή σύνθετων συστημάτων από ξεχωριστά συστατικά» Η βασική ιδέα πίσω από τον OOP: οι οντότητες προσδιορίζονται από τις λειτουργίες τους!

5 Αντικείμενα Αντικείμενο είναι μια ξεχωριστή οντότητα, που προσπαθεί να μοντελοποιήσει και να προσεγγίσει όσον το δυνατό καλύτερα, το φυσικό κόσμο. Συγκριτικά, ότι και μια εγγραφή (πλειάδα) στο σχεσιακό μοντέλο

6 Αντικείμενα Αντικείμενο  συμπεριφορά Η συμπεριφορά καθορίζεται από τη διαπροσωπεία (interface) του αντικειμένου, ήτοι, από ένα σύνολο λειτουργιών τις οποίες το αντικείμενο μπορεί να επιτελέσει Η συμπεριφορά καθορίζεται ακόμα, και από τις συγκεκριμένες τιμές που έχουν τα χαρακτηριστικά του αντικειμένου. Το διάνυσμα αυτών των τιμών είναι η τιμή του αντικειμένου

7 Αντικείμενα Τα χαρακτηριστικά των αντικειμένων ονομάζονται instance variables (ελληνιστί, πεδία, χαρακτηριστικά, μεταβλητές,...). Η υλοποίηση μιας λειτουργίας της διαπροσωπείας ενός αντικειμένου ονομάζεται μέθοδος (το αντίστοιχο των συναρτήσεων). Η κλήση μιας λειτουργίας ενός αντικειμένου, ονομάζεται αποστολή μηνύματος στο αντικείμενο

8 OID – Object Identity Ταυτότητα Αντικειμένου: προσδιορίζει ένα αντικείμενο μονοσήμαντα στην ΒΔ Δεν αλλάζει ποτέ – συνυπάρχει με το αντικείμενο για όλη τη διάρκεια ζωής του αντικειμένου (object’s lifetime) Απονέμεται από το σύστημα και είναι κρυμμένο από το χρήστη Πιο προφανής χρήση: υλοποίηση αναφορών (μοίρασμα και ενημερώσεις αντικειμένων)

9 Ενθυλάκωση (Encapsulation) object = interface part + implementation part Τμήμα Διαπροσωπείας = ο ορισμός των λειτουργιών που μπορεί να επιτελέσει το αντικείμενο (πρβλ., υπογραφή συναρτήσεων) Τμήμα Υλοποίησης = η αναπαράσταση του αντικειμένου (όπως π.χ., σε ένα struct στη C) + η υλοποίηση των λειτουργιών (π.χ., ο κώδικας μιας συνάρτησης), ήτοι, implementation part = (data part + procedural part)

10 Ενθυλάκωση (Encapsulation) Ενσωματώνει, εκτός από δεδομένα, και λειτουργίες στα αντικείμενα Αποκρύπτει τον τρόπο υλοποίησης των μεθόδων, οπότε, απεξαρτά τη διαχείριση του αντικειμένου από τη δομή του, Επιβάλει τη διαχείριση του κάθε αντικειμένου, αυστηρά και μόνο από τις δικές του μεθόδους*, μέσω των αντίστοιχων μηνυμάτων. * Πολλές φορές θα δείτε τον όρο «μέθοδος» να χαρακτηρίζει το interface part …

11 Τύποι και Κλάσεις Αντιστοιχούν σε αφηρημένους τύπους δεδομένων (abstract data types) Ομαδοποιούν αντικείμενα με ίδιες σημασιολογικές ιδιότητες Αποτελούνται από interface part και implementation part Χτίζονται πάνω σε τύπους Έχουν τιμές (values) ως στιγμιότυπα Έχουν αντικείμενα ως στιγμιότυπα

12 Τύποι και Κλάσεις add class Monument type tuple(name: string, address: Address, description: string, closing_days: list(string), admission_fee: integer) add method increase_fee(amount: integer) in class Monument

13 Collection Types Σύνολα (Sets) αντικειμένων Πολυσύνολα (Bags) αντικειμένων = σύνολα με διπλοεγγραφές Λίστες (Lists) αντικειμένων = διατεταγμένα πολυσύνολα Πίνακες (Arrays) αντικειμένων = λίστες πεπερασμένου μεγέθους Πλειάδες (Tuples) αντικειμένων = παράθεση αντικειμένων, με συγκεκριμένο τρόπο

14 Σύνθετα Αντικείμενα OID: OID12 Name: Πέτρος Age: 40 Children: {OID15} OID: OID15 Name: Γιάννης Age: 15 Children: {} OID: OID10 Name: Μαμά Καγκουρό Age: 4 Children: { [OID: OID15 Name: Μωρό Κ. Age: 0.5 Children: {}] }

15 Ιεραρχίες Τύπων και Κλάσεων Κληρονομικότητα (Inheritance): Κατασκευάζουμε ένα δέντρο (ιεραρχία) κλάσεων. Κάθε κλάση που είναι κόμβος του δέντρου «κληρονομεί», από την πατρική της κλάση όλα τα δομικά και λειτουργικά χαρακτηριστικά της -τις instance variables και τις μεθόδους, δηλαδή. Στα χαρακτηριστικά αυτά, κάθε κλάση νομιμοποιείται να προσθέσει τα δικά της χαρακτηριστικά και λειτουργίες. Οι ιεραρχίες αφορούν και τύπους και κλάσεις

16 Ιεραρχίες Τύπων και Κλάσεων Vehicle - Name - Weight - Color + GetName() + GetWeight + GetColor() FourWheels - MaxVelocity +GetMaxVelocity() Bike - NumSpeeds +GetNumSpeeds() Van - MaxCargo +GetMaxCargo() Car - NumDoors +GetNumDoors()

17 Υπερφόρτωση και πολυμορφισμός Vehicle - Name - Weight - Color + GetName() + GetWeight + GetColor() FourWheels - MaxVelocity +GetMaxVelocity() Bike - NumSpeeds +GetNumSpeeds() Van - MaxCargo +GetMaxCargo() +GetWeight() Car - NumDoors +GetNumDoors()

18 Τυπικός ορισμός αντικειμένου Αντικείμενο = [OID, τιμή, κατάσταση, κλάση] OID = μοναδικός προσδιοριστής Τιμή = διάνυσμα τιμών των instance variables + τιμές επιστροφής των μεθόδων (public) Κατάσταση = διάνυσμα τιμών των instance variables βάσει του τύπου στον οποίο δομείται το αντικείμενο (private) Κλάση = η κλάση στην οποία ανήκει το αντικείμενο

19 Τυπικός ορισμός κλάσης όνομα κλάσης, τύπος της τιμής των στιγμιοτύπων, τύπος της κατάστασης των στιγμιοτύπων, {μηνύματα στιγμιοτύπων}, {μέθοδοι στιγμιοτύπων}, τιμή της κλάσης, κατάσταση της κλάσης, {μηνύματα της κλάσης}, {μέθοδοι της κλάσης} τύπος της τιμής της κλάσης, τύπος της κατάστασης της κλάσης Η κλάση είναι μια συλλογή στιγμιοτύπων αλλά είναι κι η ίδια ένα αντικείμενο οπότε ανήκει κι αυτή σε μια μετα-κλάση

20 Από το σύστημα O 2 add class City with extension type tuple(name: string, map: Bitmap, hotels: set(Hotel)) add class Monument type tuple(name: string, address: Address, description: string, closing_days: list(string), admission_fee: integer)

21 Από το σύστημα O 2 add class Address type tuple(street: string, city: City) add class Hotel type tuple(name: string, address: Address, facilities: list(string), stars: integer, rate: float)

22 Από το σύστημα O 2 add name Eiffel_tower: Monument, ή ισοδύναμα Eiffel_tower = new(Monument) add method increase_fee(amount: integer) in class Monument is private add class Historical_hotel inherits Monument, Hotel add method print_height(amount: float) in object Eiffel_tower

23 ODMG - 93 Το Object Database Management Group (ODMG) είναι μια επιτροπή που, στις αρχές της δεκαετίας του 1990, πρότεινε ένα κοινό interface (ODMG ‑ 93) στους διάφορους κατασκευαστές αντικειμενοστρεφών συστημάτων βάσεων δεδομένων Σήμερα: version 3.0 του στάνταρτ

24 Object Definition Language, ODL interface Person ( extent people ) { attribute String name; attribute Struct Address { Unsigned Short number, String Street, String city_name} address; relationship Person spouse inverse Person::spouse; relationship Set children inverse Person::parents {order by birth_date } relationship List parents inverse Person::children; void birth (in String name); Boolean marriage (in String person_name) raises (no_such_person); Unsigned Short ancestors (out Set all_ancestors) raises (no_such_person); void move (in String new_address); };

25 Object Query Language - OQL select department, avg_salary: avg(select e.salary from partition x) from Employees e group by department: e.department having count(select * from partition x) > 5 order by department.name Το clause group by χωρίζει τους υπαλλήλους σε ομάδες (partitions). Κάθε ομάδα χαρακτηρίζεται από το γεγονός ότι όλοι οι υπάλληλοι δουλεύουν στο ίδιο τμήμα και ονομάζεται partition (που είναι δεσμευμένη λέξη στην OQL). Το clause having περιορίζει τα τμήματα σ’ αυτά που έχουν αριθμό υπαλλήλων πάνω από 5. Η συντόμευση * διατηρείται και στην OQL (όπως και στην SQL) Το order by λειτουργεί όπως και στην SQL Αποτέλεσμα: set

26 Περιεχόμενα Επανάληψη αντικειμενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισμένοι από τον Χρήστη Διακριτοί τύποι - Distinct Types Αφηρημένοι τύποι - Abstract Data Types (ADTs) Τύποι γραμμών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες

27 Τα τμήματα της SQL:1999 SQL/Framework SQL/Foundation SQL/PSM (Persistent Stored Modules) SQL/CLI (Call Level Interface) SQL/MED (Management of External Data) SQL Bindings/Temporal/OLAP/XML/OLB (Object Language Bindings, πρακτικά SQLJ)

28 SQL/Framework Παρέχει μια γενική εικόνα του στάνταρτ Παρουσιάζει πώς τα διάφορα τμήματα “δένουν“ μεταξύ τους Παρέχει ένα κοινό λεξιλόγιο – ορολογία

29 SQL/Foundation Νέα στοιχεία στην SQL: τύποι δεδομένων κατηγορήματα (predicates) αναδρομή δυνατότητες δοσοληψιών triggers και πολλά άλλα... Σήμερα, θα δούμε το τμήμα του που ασχολείται με τις αντικειμενοστρεφείς επεκτάσεις της SQL

30 SQL/CLI (Call Level Interface) επιτρέπει την εκτέλεση κώδικα χωρίς να παρέχεται ο πηγαίος κώδικας λειτουργία χωρίς preprocessor είναι ένα είδος binding σαν την dynamic SQL και το ODBC

31 SQL/CLI - τυπική ακολουθία εντολών AllocEnv() AllocConnect() Connect() AllocStmt() build the statement… Execute() -repeat as required... Transact() -repeat as required... FreeStmt() Disconnect() FreeConnect() FreeEnv()

32 SQL/PSM (Persistent Stored Modules) επιτρέπει το διαχωρισμό των εφαρμογών σε client και server stored modules SQL routines 3GL external routines υπολογιστικά πλήρης ! CREATE FUNCTION sin (FLOAT) RETURNS FLOAT EXTERNAL NAME ‘LIB%MATH- SUBS\SINE’ LANGUAGE FORTRAN...

33 –compound statementBEGIN…END; –variable declarationDECLARE var CHAR (6) –if statementIF subject (var) <> ‘urgent’ THEN … ELSE…; –case statementCASE subject (var) WHEN ‘SQL’ THEN… WHEN …; –loop statementLOOP END LOOP; –while statementWHILE i < 100 DO … END WHILE; –repeat statementREPEAT … UNTIL i<100 END REPEAT; –for statementFOR result AS … DO … END FOR; –leave statementLEAVE …; –return statementRETURN ‘urgent’; –call statementCALL procedure_x (1, 3, 5,); –assignment statementSET x = ‘abc’; –signal / resignalSIGNAL division_by_zero SQL/PSM -SQL Routines

34 SQL/MED (Management of External Data) επιτρέπει το registration, προσπέλαση και επερώτηση μη σχεσιακών δεδομένων μέσω SQL επιτρέπει να ορίσουμε ότι κάποιο πεδίο ενός πίνακα βρίσκεται αποθηκευμένο έξω από το DBMS CREATE FOREIGN TABLE MyData(ID Integer,… ) SERVER MyServer OPTIONS (Filename /usr/pvassil/mydata. txt, Delimiter ‘:’) CREATE TABLE MyGifs( ID Integer, picture DATALINK) INSERT INTO MyGifs VALUES(3,DLVALUE( /usr/pvassil/mygif.g if))

35 Αντικειμενοστρεφείς Επεκτάσεις των Σχεσιακών συστημάτων Τύποι Ορισμένοι από τον Χρήστη Διακριτοί τύποι - Distinct Types Αφηρημένοι τύποι - Abstract Data Types (ADTs) Τύποι γραμμών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες

36 Περιεχόμενα Επανάληψη αντικειμενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισμένοι από τον Χρήστη Διακριτοί τύποι - Distinct Types Αφηρημένοι τύποι - Abstract Data Types (ADTs) Τύποι γραμμών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες

37 Διακριτοί τύποι (distinct types) H πιο βασική έκφραση των ορισμένων από τον χρήστη τύπων Aποτελούν μετονομασία ενός βασικού τύπου πηγή συνήθως με διαφορετική συμπεριφορά από τον source type με τον οποίο έχουν ίδια εσωτερική δομή δεν είναι όμως, συγκρίσιμοι

38 Διακριτοί τύποι Λειτουργίες ορισμένες στους distinct types τελεστής σύγκρισης (προαιρετικά) βασίζεται στον τελεστή του source type casting άμεσο, casting μεταξύ του distinct type και του source type

39 Διακριτοί τύποι - Παραδείγματα CREATE DISTINCT TYPE CDN_DOLLAR AS DECIMAL (9.2) CREATE DISTINCT TYPE US_DOLLAR AS DECIMAL (9.2) CREATE TABLE SALES (ID INTEGER, US US_DOLLAR, CDN CDN_DOLLAR) SELECT * FROM SALES WHERE CDN > US => fails!!!!! SELECT * FROM SALES WHERE CDN > CDN_DOLLAR(US) =>O.K!!!!!

40 Περιεχόμενα Επανάληψη αντικειμενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισμένοι από τον Χρήστη Διακριτοί τύποι - Distinct Types Αφηρημένοι τύποι - Abstract Data Types (ADTs) Τύποι γραμμών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες

41 Αφηρημένοι τύποι (ADTs) Αποτελούν οντότητες με συμπεριφορά και ενθυλακωμένη εσωτερική δομή Η εσωτερική δομή ορίζεται σε SQL CREATE TYPE address (streetchar (30), citychar (20), statechar (2), zipinteger);

42 ADTs - Ενθυλάκωση (Encapsulation) Μπορούμε να ορίσουμε functions (μεθόδους στην ΟΟ ορολογία) για τους ADT’s Η φυσική αναπαράσταση μπορεί να αλλάξει χωρίς να επηρεαστούν οι εφαρμογές (αν οι τελευταίες χρησιμοποιούν τις functions αυτές) OBSERVER και MUTATOR functions δημιουργούνται αυτόματα

43 ADTs - Ενθυλάκωση (Encapsulation) street (address)-> char(30) city (address)-> char(20) state (address)-> char(2) zip (address)-> integer street(address,char(30)) -> address city(address,char(20)) -> address state(address,char(2)) -> address zip(address,integer) -> address

44 Συναρτήσεις - Μέθοδοι Ορισμένοι από τον Χρήστη Οι δηλώσεις τους: SQL/PSM, σε γλώσσες τρίτης ή τέταρτης γενιάς (3GLs ή 4GLs). εσωτερικές/εξωτερικές CREATE FUNCTION fullAddress(address) RETURNS char(55) AS EXTERNAL NAME ‘usr/pvassil/toy.class’ LANGUAGE ‘java’;

45 ADTs - Δημιουργία Στιγμιοτύπων μέσω της constructor function default CONSTRUCTOR function δημιουργείται αυτόματα Η κλήση address() -> address επιστρέφει ένα νέο στιγμιότυπο του ADT με κάθε attribute αρχικοποιημένο στην default τιμή

46 ADTs -Κληρονομικότητα Οι ADTs κληρονομούν attributes και συμπεριφορά (functions) από τους υπερτύπους τους Υποστηρίζεται η πολλαπλή κληρονομικότητα CREATE TYPE shape… CREATE TYPE point UNDER shape… CREATE TYPE line UNDER shape… CREATE TYPE polygon UNDER shape… linepolygon shape point

47 ADTs - Χρήση CREATE TYPE shape( refencing_system INTEGER, tolerance DECIMAL (8.2), geometry BLOB (1M)) CREATE TABLE real_estate_info (address address, price money, owner char (40), property shape); UPDATE real_estate_info SET price = US_dollar (0.9 * amount (price)) WHERE within_distance (property..geometry, point (5, 5), miles (10)) SELECT D_mark (price), owner FROM real_estate_info WHERE overlaps (property..geometry, square (5, 5, 25, 25))

48 ADTs - Substitutability CREATE TABLE real_estate_info (pricemoney, ownerCHAR (40), propertyshape) INSERT INTO real_estate_info VALUES (US_dollar (100000), ‘Mr. S. White’, point (4, 4)) INSERT INTO real_estate_info VALUES (CDN_dollar (400000), ‘Mr. W. Green’, poly (point (4, 4), point (10, 10), point (12, 14))) INSERT INTO SALES VALUES (S_frank (150000), ‘Mrs. D. Black’, line (5, 5, 7, 8))

49 ADTs - Substitutability PriceOwnerProperty amount:100,000 Mr. S. White amount:400,000 Mr. W. Green amount:150,000 ‘Mrs. D. Black’

50 ADTs - Late Binding SELECT owner, dollar_amount (price) FROM real_estate_info WHERE dollar_amount(price) < US_dollar(500000) θα καλέσει διαφορετική function στο runtime, ανάλογα με τον τύπο χρήματος που αποθηκεύτηκε στη στήλη PRICE (US_dollar, CDN_dollar, D_mark, S_frank,…)

51 ADT’S – Περαιτέρω χαρακτηριστικά CREATE TYPE emp_type UNDER person_t AS ( EMP_ID INTEGER, SALARY REAL) INSTANTIABLE % με data δηλαδή NOT FINAL % επιτρέπεται να έχει subtypes REF (EMP_ID) % με ότι REF’s σε αυτόν να % γίνονται μέσω του EMP_ID

52 Περιεχόμενα Επανάληψη αντικειμενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισμένοι από τον Χρήστη Διακριτοί τύποι - Distinct Types Αφηρημένοι τύποι - Abstract Data Types (ADTs) Τύποι γραμμών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες

53 Επώνυμοι Τύποι Γραμμής (Named Row Types) Ορίζονται από τον χρήστη χωρίς ενθυλακωμένη εσωτερική δομή CREATE ROW TYPE account_t (acctnoINT, custREF (customer_t), typeCHAR (1), openedDATE, rateDOUBLE PRECISION, balanceDOUBLE PRECISION); για να ορίσουν τον τύπο των rows σε ένα πίνακα CREATE TABLE account OF account_t (PRIMARY KEY acctno );

54 Τύποι αναφοράς (Reference Types) Διευκολύνουν τη συσχέτιση τύπων γραμμής CREATE ROW TYPE account_t (acctnoINT, custREF (customer_t), typeCHAR (1), openedDATE, rateDOUBLE PRECISION, balanceDOUBLE PRECISION); Οι αναφορές μπορούν να έχουν εμβέλεια (scope) CREATE TABLE account OF account_t (PRIMARY KEY acctno, SCOPE OF cust IS customer ); Μπορούμε να αναφερθούμε μόνο σε “top level” εγγραφές

55 Τύποι αναφοράς (Reference Types) Mόνο top level rows σε πίνακες μπορούν να γίνουν referenced η reference value ποτέ δεν αλλάζει, όσο τα αντίστοιχα tuples “ζουν” οι reference values είναι μοναδικές μέσα στη βάση δεδομένων Account(account_t)Customer(customer_t)

56 Εκφράσεις μονοπατιών - Path Expressions Τα references μπορούν να χρησιμοποιηθούν σε path expressions SELECT a.acctno, a.cust->name FROM account a WHERE a.cust->address..city = “Hollywood” AND a.balance > ;

57 Reference Types ≠ Περιορισμών Ακεραιότητας Οι περιορισμοί ακεραιότητας επιβάλλουν την ύπαρξη target Είναι απολύτως ασαφές από ποιον πίνακα απαντάται το προηγούμενο query!

58 Περιεχόμενα Επανάληψη αντικειμενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισμένοι από τον Χρήστη Διακριτοί τύποι - Distinct Types Αφηρημένοι τύποι - Abstract Data Types (ADTs) Τύποι γραμμών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες

59 ADT’s & Row Types: Subtyping Ένας row type μπορεί να είναι υποτύπος ενός ή περισσότερων row types, κληρονομώντας attributes και συμπεριφορά από αυτούς CREATE TYPE employee_t (name CHAR (20), salary DECIMAL (10,2)) CREATE TYPE manager_t UNDER employee (bonus DEMICAL (10,2)) CREATE TYPE ssummer_stundent_t UNDER employee (school VARCHAR (30))

60 ADT’s & Row Types: Ιεραρχίες Πινάκων •Για τη μοντελοποίηση ιεραρχιών πινάκων (super/sub collections) CREATE TABLE employees OF employee_t CREATE TABLE managers OF manager_t UNDER employees CREATE TABLE summer_stundents OF summer_stundents_t UNDER employees •Ερωτήσεις στον πίνακα employees επιστρέφουν rows ΚΑΙ από τα sub-tables του!

61 Περιεχόμενα Επανάληψη αντικειμενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισμένοι από τον Χρήστη Διακριτοί τύποι - Distinct Types Αφηρημένοι τύποι - Abstract Data Types (ADTs) Τύποι γραμμών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες

62 Κατηγόρημα TYPE ( TYPE Predicate) CREATE TABLE real_estate_info (price money, owner CHAR (40), property real_estate)

63 Κατηγόρημα TYPE Late binding SELECT price, owner, property FROM real_estate_info WHERE TYPE (price) IN (us_dollar) Αλλαγή του τύπου μιας έκφρασης σε έναν από τους υποτύπους του SELECT TREAT (price AS us_dollar), owner, property FROM real_estate_info WHERE TYPE (price) IN (us_dollar)

64 Συγκεντρωτικοί Τύποι (Collection Types) Προς το παρόν, υποστηρίζονται μόνο arrays. CREATE TABLE time_info( weekdaysVARCHAR(10) ARRAY[7], monthsVARCHAR(15) ARRAY[12]) Κάθε εγγραφή θα έχει ένα πεδίο weekdays που θα περιέχει ένα array 7 θέσεων, σε κάθε μία από τις οποίες θα μπαίνει ένα VARCHAR(10). Ομοίως τα months… Παραβιάζεται, φυσικά η 1η κανονική μορφή (1NF)!

65 Εμείς θα θέλαμε στο μέλλον και... CREATE ROW TYPE employee (idINTEGER, nameVARCHAR(30), addressaddress, managerREF (employee), projectsSET (REF (project)), childrenLIST (REF (PERSON)), hobbiesMULTISET (VARCHAR (20)))