Αντικειµενο-Σχεσιακές Βάσεις εδοµένων. Περιεχόµενα

Σχετικά έγγραφα
ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

ΗΜΙΟΥΡΓΙΑ USER DEFINED DATATYPES ΣΤΗΝ IBM DB2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Εργαστήριο Βάσεων Δεδομένων. Triggers

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Εργαστήριο βάσεων δεδομένων. MySQL Stored Procedures

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Ηλεκτρονικοί Υπολογιστές II

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΓΡΕΒΕΝΑ)

. Εργαστήριο Βάσεων Δεδομένων. Triggers

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Ν. ΠΟΛΥΖΩΤΗΣ, Π. ΞΗΡΟΣ, Π. ΒΑΣΙΛΕΙΑ ΗΣ

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Διάλεξη 17: Προγραμματισμός Βάσης Δεδομένων Ι. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Τμήμα Διοίκησης Επιχειρήσεων

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

MySQL stored procedures

PostgreSQL. Oracle. Εαρινό Εξάμηνο

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Το σχεσιακό μοντέλο βάσεων δεδομένων

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

. Εργαστήριο Βάσεων Δεδομένων. Stored Procedures

Βάσεις Δεδομένων σχεσιακών αντικειμένων Βάσεις Δεδομένων Διδάσκων: Μ. Χαλκίδη

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Lecture 19: Internal DB Programming II

ΑΠΟΘΗΚΕΥΜΕΝΕΣ ΔΙΑΔΙΚΑΣΙΕΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 4ο Μάθημα: SQL - Παράδειγμα. Δρ. Κωνσταντίνος Χ.

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Βάσεις δεδομένων. (10 ο μάθημα) Ηρακλής Βαρλάμης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Αντικειμενοστρεφής Προγραμματισμός

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

10 η Διάλεξη Python Βάσεις δεδομένων στη python

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Τμήμα Πληροφορικής ΑΠΘ

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Σχεδιασμός Βάσεων Δεδομένων

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

Κεφάλαιο 7: Υπορουτίνες

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

Αρχεία και Βάσεις Δεδομένων

Εισαγωγή στις βασικές έννοιες των Βάσεων Δεδομένων

PL/SQL. Κώστας Στεφανίδης

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

ΕΠΛ 342 Βάσεις εδοµένων

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πληροφοριακά Συστήµατα

Βασικά Στοιχεία της Java

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

ΕΠΛ 342 Βάσεις εδοµένων

Ανοικτά Ακαδημαϊκά Μαθήματα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Περιγραφή του EcoTruck

DELETE, UPDATE, INSERT.

Διάλεξη 19: Προγραμματισμός Βάσης Δεδομένων ΙΙΙ. Διδάσκων: Παναγιώτης Ανδρέου

DELETE, UPDATE, INSERT

Λογισµικό (Software SW) Γλώσσες

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Ανάκτηση Δεδομένων (Information Retrieval)

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου


Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Transcript:

Αντικειµενο-Σχεσιακές Βάσεις εδοµένων Πάνος Βασιλειάδης pvassil@cs.uoi.gr εκέµβρης 2002 www.cs.uoi.gr/~pvassil/courses/db_advanced/ Περιεχόµενα Επανάληψη αντικειµενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισµένοι από τον Χρήστη ιακριτοί τύποι - Distinct Types Αφηρηµένοι τύποι - Abstract Data Types (ADTs) Τύποι γραµµών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες 2

Τα τµήµατα της 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) 3 SQL/Framework Παρέχει µια γενική εικόνα του στάνταρτ Παρουσιάζει πώς τα διάφορα τµήµατα δένουν µεταξύ τους Παρέχει ένα κοινό λεξιλόγιο ορολογία 4

SQL/Foundation Νέα στοιχεία στην SQL: τύποι δεδοµένων κατηγορήµατα (predicates) αναδροµή δυνατότητες δοσοληψιών triggers και πολλά άλλα... Σήµερα, θα δούµε το τµήµα του που ασχολείται µε τις αντικειµενοστρεφείς επεκτάσεις της SQL 5 SQL/CLI (Call Level Interface) επιτρέπει την εκτέλεση κώδικα χωρίς να παρέχεται ο πηγαίος κώδικας λειτουργία χωρίς preprocessor είναι ένα είδος binding σαν την dynamic SQL και το ODBC 6

SQL/CLI - τυπική ακολουθία εντολών AllocEnv() AllocConnect() Connect() AllocStmt() build the statement Execute() -repeat as required... Transact() -repeat as required... FreeStmt() Disconnect() FreeConnect() FreeEnv() 7 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... 8

SQL/PSM -SQL Routines compound statement BEGIN END; variable declaration DECLARE var CHAR (6) if statement IF subject (var) <> urgent THEN ELSE ; case statement CASE subject (var) WHEN SQL THEN WHEN ; loop statement LOOP <SQL statements list> END LOOP; while statement WHILE i < 100 DO END WHILE; repeat statement REPEAT UNTIL i<100 END REPEAT; for statement FOR result AS DO END FOR; leave statement LEAVE ; return statement RETURN urgent ; call statement CALL procedure_x (1, 3, 5,); assignment statement SET x = abc ; signal / resignal SIGNAL division_by_zero 9 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.gif)) 10

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

ιακριτοί τύποι (distinct types) H πιο βασική έκφραση των ορισµένων από τον χρήστη τύπων Aποτελούν µετονοµασία ενός βασικού τύπου πηγή συνήθως µε διαφορετική συµπεριφορά από τον source type µε τον οποίο έχουν ίδια εσωτερική δοµή δεν είναι όµως, συγκρίσιµοι 13 ιακριτοί τύποι Λειτουργίες ορισµένες στους distinct types τελεστής σύγκρισης (προαιρετικά) βασίζεται στον τελεστή του source type casting άµεσο, casting µεταξύ του distinct type και του source type 14

ιακριτοί τύποι - Παραδείγµατα 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!!!!! 15 Περιεχόµενα Επανάληψη αντικειµενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισµένοι από τον Χρήστη ιακριτοί τύποι - Distinct Types Αφηρηµένοι τύποι - Abstract Data Types (ADTs) Τύποι γραµµών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες 16

Αφηρηµένοι τύποι (ADTs) Αποτελούν οντότητες µε συµπεριφορά και ενθυλακωµένη εσωτερική δοµή Η εσωτερική δοµή ορίζεται σε SQL CREATE TYPE address (street char (30), city char (20), state char (2), zip integer); 17 ADTs - Ενθυλάκωση (Encapsulation) Μπορούµε να ορίσουµε functions (µεθόδους στην ΟΟ ορολογία) για τους ADT s Η φυσική αναπαράσταση µπορεί να αλλάξει χωρίς να επηρεαστούν οι εφαρµογές (αν οι τελευταίες χρησιµοποιούν τις functions αυτές) OBSERVER και MUTATOR functions δηµιουργούνται αυτόµατα 18

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 19 Συναρτήσεις - Μέθοδοι Ορισµένοι από τον Χρήστη Οι δηλώσεις τους: SQL/PSM, σε γλώσσες τρίτης ή τέταρτης γενιάς (3GLs ή 4GLs). εσωτερικές/εξωτερικές CREATE FUNCTION fulladdress(address) RETURNS char(55) AS EXTERNAL NAME usr/pvassil/toy.class LANGUAGE java ; 20

ADTs - ηµιουργία Στιγµιοτύπων µέσω της constructor function default CONSTRUCTOR function δηµιουργείται αυτόµατα Η κλήση address() -> address επιστρέφει ένα νέο στιγµιότυπο του ADT µε κάθε attribute αρχικοποιηµένο στην default τιµή 21 ADTs -Κληρονοµικότητα Οι ADTs κληρονοµούν attributes και συµπεριφορά (functions) από τους υπερτύπους τους Υποστηρίζεται η πολλαπλή κληρονοµικότητα shape point line polygon CREATE TYPE shape CREATE TYPE point UNDER shape CREATE TYPE line UNDER shape CREATE TYPE polygon UNDER shape 22

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)) 23 ADTs - Substitutability CREATE TABLE real_estate_info ( price money, owner CHAR (40), property shape) 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)) 24

ADTs - Substitutability Price <us_dollar> amount:100,000 <cdn_dollar> amount:400,000 <s_frank> amount:150,000 Owner Mr. S. White Mr. W. Green Mrs. D. Black Property <point> <poly> <line> 25 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, ) 26

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 27 Περιεχόµενα Επανάληψη αντικειµενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισµένοι από τον Χρήστη ιακριτοί τύποι - Distinct Types Αφηρηµένοι τύποι - Abstract Data Types (ADTs) Τύποι γραµµών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες 28

Επώνυµοι Τύποι Γραµµής (Named Row Types) Ορίζονται από τον χρήστη χωρίς ενθυλακωµένη εσωτερική δοµή CREATE ROW TYPE account_t (acctno INT, cust REF (customer_t), type CHAR (1), opened DATE, rate balance DOUBLE PRECISION, DOUBLE PRECISION); για να ορίσουν τον τύπο των rows σε ένα πίνακα CREATE TABLE account OF account_t (PRIMARY KEY acctno ); 29 Τύποι αναφοράς (Reference Types) ιευκολύνουν τη συσχέτιση τύπων γραµµής CREATE ROW TYPE account_t (acctno INT, cust REF (customer_t), type CHAR (1), opened DATE, rate balance DOUBLE PRECISION, DOUBLE PRECISION); Οι αναφορές µπορούν να έχουν εµβέλεια (scope) CREATE TABLE account OF account_t (PRIMARY KEY acctno, SCOPE OF cust IS customer ); Μπορούµε να αναφερθούµε µόνο σε top level εγγραφές 30

Τύποι αναφοράς (Reference Types) Mόνο top level rows σε πίνακες µπορούν να γίνουν referenced η reference value ποτέ δεν αλλάζει, όσο τα αντίστοιχα tuples ζουν οι reference values είναι µοναδικές µέσα στη βάση δεδοµένων Account(account_t) Customer(customer_t) 31 Εκφράσεις µονοπατιών - Path Expressions Τα references µπορούν να χρησιµοποιηθούν σε path expressions SELECT a.acctno, a.cust->name FROM account a WHERE a.cust->address..city = Hollywood AND a.balance > 1000000; 32

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

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)) 35 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 του! 36

Περιεχόµενα Επανάληψη αντικειµενοστρεφών εννοιών Μικρή εισαγωγή στο νέο SQL:1999 στάνταρτ Τύποι Ορισµένοι από τον Χρήστη ιακριτοί τύποι - Distinct Types Αφηρηµένοι τύποι - Abstract Data Types (ADTs) Τύποι γραµµών - Row Types Τύποι αναφοράς - Reference Types Ιεραρχίες Τύπων και Πινάκων Περαιτέρω δυνατότητες 37 Κατηγόρηµα TYPE (TYPE Predicate) CREATE TABLE real_estate_info (price money, owner CHAR (40), property real_estate) price owner property <us_dollar> <real_estate> amount: 100,000 Mr. S. White rooms: 4 size: <cdn_dollar> <house> amount: 400,000 Mr. W. Green rooms: 10 size: <swiss_franc> <condo> amount: 150,000 Mrs. D. Black rooms: 5 size: 38

Κατηγόρηµα 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) 39 Συγκεντρωτικοί Τύποι (Collection Types) Προς το παρόν, υποστηρίζονται µόνο arrays. CREATE TABLE time_info( weekdays VARCHAR(10) ARRAY[7], months VARCHAR(15) ARRAY[12]) Κάθε εγγραφή θα έχει ένα πεδίο weekdays που θα περιέχει ένα array 7 θέσεων, σε κάθε µία από τις οποίες θα µπαίνει ένα VARCHAR(10). Οµοίως τα months Παραβιάζεται, φυσικά η 1η κανονική µορφή (1NF)! 40

Εµείς θα θέλαµε στο µέλλον και... CREATE ROW TYPE employee ( id INTEGER, name VARCHAR(30), address address, manager REF (employee), projects SET (REF (project)), children LIST (REF (PERSON)), hobbies MULTISET (VARCHAR (20))) 41