ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Lecture 19: Internal DB Programming II

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

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

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

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

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

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων

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

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

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

MySQL stored procedures

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

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

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

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

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

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων (Databases)

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

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

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

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

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

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

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

Κεφ 4: Προχωρημένες Εντολές SQL

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

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

Εισαγωγή στην πληροφορική

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

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

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

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό

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

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

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

IBM DB2, Microsoft SQL Server. Εαρινό Εξάμηνο

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

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

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

SQL Data Manipulation Language

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

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

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

(C) 2010 Pearson Education, Inc. All rights reserved.

H Γλώσσα SQL Σχεδιασμός Βάσεων Δεδομένων

Εξεταστική Περίοδος Ιουνίου 2004

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

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

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚ. ΜΗΧ. ΚΑΙ ΜΗΧ. ΥΠΟΛΟΓΙΣΤΩΝ ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΕΦΑΛΑΙΟ 3 SQL-3-1 ΕΙΣΑΓΩΓΗ: Τα τμήματα της SQL-3 SQL/Framework SQL/Foundation SQL/PSM (Persistent Stored Modules) SQL/CLI (Call Level Interface) SQL/Object SQL/Bindings SQL/Transaction SQL/Temporal - 2 1

SQL/Framework Παρέχει μια γενική εικόνα του στάνταρτ Παρουσιάζει πώς τα διάφορα τμήματα δένουν μεταξύ τους Παρέχει ένα κοινό λεξιλόγιο - ορολογία - 3 SQL/Foundation Νέα στοιχεία στην SQL: τύποι δεδομένων κατηγορήματα (predicates) σχεσιακός τελεστής δυνατότητες δοσοληψιών triggers user-defined types και πολλά άλλα... - 4 2

SQL/CLI (Call Level Interface) επιτρέπει την εκτέλεση κώδικα χωρίς να παρέχεται ο πηγαίος κώδικας λειτουργία χωρίς preprocessor είναι ένα είδος binding σαν την dynamic SQL και το ODBC - 5 SQL/PSM (Persistent Stored Modules) επιτρέπει το διαχωρισμό των εφαρμογών σε client και server stored modules SQL routines 3GL external routines υπολογιστικά πλήρης! - 6 3

SQL/Bindings dynamic SQL βελτιώσεις στην embedded SQL - 7 SQL/Transaction εξειδίκευση του ΧΑ τυποποιεί ένα ΧΑ interface για υλοποιήσεις SQL - 8 4

SQL/Temporal προσθέτει χρονικά χαρακτηριστικά στα δεδομένα βασίζεται κυρίως στην TSQL-2-9 SQL/Object προσθέτει αντικειμενοστρεφή χαρακτηριστικά στο σχεσιακό μοντέλο named rows reference type πιο αναλυτικά στη συνέχεια... - 10 5

SQL/Foundation - τύποι δεδομένων BOOLEAN LOB (Large Object) αποθηκεύεται στη βάση δεδομένων character ή binary LOB LOCATOR - για τη διαχείριση των LOBs επιτρέπει την πρόσβαση σε τμήματα των LOBs επιτρέπει την καλύτερη εκτέλεση λειτουργιών σε LOBs - 11 SQL/Foundation - κατηγορήματα SIMILAR (x SIMILAR TO pattern) BOOLEAN (expression IS FALSE/TRUE/UNKNOWN) Type predicate - στη συνέχεια... - 12 6

SQL/Foundation - σχεσιακός τελεστής WITH RECURSIVE query_name (col-list) AS (query expression) [search clause] [limit clause] query expression WITH RECURSIVE parts(outer, inner) AS (SELECT outer, inner FROM p_table WHERE outer= P1 UNION ALL SELECT p_table(outer), p_table(inner) FROM parts, p_table WHERE p_table.outer = parts.inner) SELECT * from parts - 13 SQL/Foundation - transactions START TRANSACTION (READ ONLY/READ WRITE) SET LOCAL TRANSACTION για transactions σε παραπάνω από ένα server CHAINED TRANSACTIONS COMMIT/ROLLBACK AND CHAIN SAVEPOINTS ROLLBACK TO SAVEPOINT name - 14 7

SQL/Foundation - ασφάλεια Ρόλοι: λειτουργούν σαν τα δικαιώματα CREATE ROLE payroll GRANT select ON emp TO payroll GRANT payroll TO john - 15 SQL/Foundation - triggers (1) Γεγονότα: INSERT/DELETE/UPDATE Χρόνος που συμβαίνουν: BEFORE/AFTER Συνθήκη: οποιαδήποτε SQL συνθήκη Πράξη: οποιαδήποτε SQL εντολή - 16 8

SQL/Foundation - triggers (2) δυνατότητα προσπέλασης παλιών και νέων τιμών των επηρρεαζόμενων rows οι κανόνες ελέγχονται είτε ανά γεγονός, είτε ανά row CREATE TRIGGER new_hire AFTER INSERT ON emps REFERENCING NEW AS n UPDATE corp_status SET no_of_emps = no_of_emps + 1 WHERE n.corp_id = corp.id; - 17 SQL/Foundation - SQL client modules (1) modules που βρίσκονται στους clients περιέχουν ρουτίνες γραμμένες σε καθαρή SQL που μπορούν να κληθούν από άλλες γλώσσες οι παράμετροι πρέπει να έχουν αντίστοιχο τύπο στις εξωτερικές γλώσσες - 18 9

SQL/Foundation - SQL client modules (2) MODULE trxn LANGUAGE C AUTHORIZATION admin PROCEDURE get_balance (SQLCODE, :acct INTEGER, :bal REAL); SELECT balance INTO :bal FROM accounts WHERE account = :acct; main ( ) { long SQLCODE; long acct_no; real bal;... get_balance (&SLQCODE, acct_no, bal);... - 19 SQL/PSM (Persistent Stored Modules) modules αποθηκευμένα στον server πολίτες α κατηγορίας στο σχήμα μιας βάσης υπολογιστικά πλήρης γλώσσα! Δύο ειδών routines: SQL routines external routines - 20 10

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; statement WHILE i < 100 DO END WHILE; repeat statement REPEAT UNTIL i<100 END REPEAT; of 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 - 21 SQL/PSM - External routines γραμμένες σε οποιαδήποτε host γλώσσα μπορούν να περιέχουν embedded SQL CREATE FUNCTION sin (FLOAT) RETURNS FLOAT EXTERNAL NAME LIB%MATH-SUBS\SINE LANGUAGE FORTRAN... - 22 11

SQL/CLI (Call Level Interface) επιτρέπει την εκτέλεση κώδικα χωρίς να παρέχεται ο πηγαίος κώδικας λειτουργία χωρίς preprocessor είναι ένα είδος binding σαν την dynamic SQL και το ODBC, δηλαδή ένα functional interface στη βάση δεδομένων - 23 SQL/CLI - είδη συναρτήσεων σύνδεση στο server allocation/deallocation πόρων εκτέλεση SQL εντολών διαγνωστικά διαχείριση transactions διάφορες βοηθητικές συναρτήσεις - 24 12

SQL/CLI - τυπική ακολουθία εντολών AllocEnv() AllocConnect() Connect() AllocStmt() build the statement Execute() -repeat as required... Transact() -repeat as required... FreeStmt() Disconnect() FreeConnect() FreeEnv() - 25 Νέες δυνατότητες σε cursors Holdable cursors πρόταση WITH HOLD διατηρεί την θέση μετά από commit... αλλά απαιτεί νέο FETCH για να τοποθετηθεί στην προηγούμενη θέση μετά από UPDATE ή DELETE δεν παραμένει μετά από ROLLBACK SENSITIVE cursors Σε αντίθεση με unspecified και INSENSITIVE - 26 13

Νέες δυνατότητες για transactions START TRANSACTION δήλωση SET LOCAL TRANSACTION δήλωση Αλυσιδωτές δοσοληψίες(chained) Savepoints - 27 START TRANSACTION Σύνταξη START TRANSACTION mode... Οι επιλογές για το mode είναι ίδιες όπως στη δήλωση SET TRANSACTION READ ONLY/READ WRITE ISOLATION LEVEL DIAGNOSTICS SIZE Παράδειγμα: START TRANSACTION READ WRITE ISOLATION SERIALIZABLE - 28 14

SET LOCAL TRANSACTION Θέτει επιλογές μόνο για το τοπικό μέρος μιας multi-site δοσοληψίας Χρησιμοποιείται όταν η δοσοληψία επεκτείνεται σε διαφορετικούς SQL-servers(χρήση CONNECT και SET CONNECTION) Πιθανές βελτιστοποιήσεις περιλαμβάνουν τα local-read branches από τις read-write δοσοληψίες - 29 Αλυσιδωτές δοσοληψίες Μια νέα δοσοληψία ξεκινά αυτόματα με το τελείωμα της προηγούμενης Υπάρχουν πανομοιότυπα χαρακτηριστικά με την προηγούμενη(δεν μπορούμε να ορίσουμε SET TRANSACTION) Καλείται μέσω: COMMIT AND CHAIN ή ROLLBACK AND CHAIN - 30 15

Savepoints Σημειώνει ένα μέρος σε μια δοσοληψία για να επιτρέψει partial rollback της εργασίας Μοντελοποιείται σαν φωλιασμένες υποδοσοληψίες Εγκαθίσταται με τη δήλωση: SAVEPOINT name Χρησιμοποιείται με τις δηλώσεις: RELEASE SAVEPOINT name ή ROLLBACK TO SAVEPOINT name - 31 Object Relational Επεκτάσεις στην SQL(SQL/Object, SQL/Foundation) User Defined Types Type Predicate User Defined Functions & Procedures Collection Types - 32 16

User Defined Types Distinct Types Abstract Data Types (ADTs) Row Types / Reference Types - 33 User-defined Types - Distinct Types (1) Η πιο απλή μορφή User Defined Types βασίζεται στην name equivalence ουσιαστικά ένας renamed type, συνήθως με διαφορετική συμπεριφορά από τον source type με τον οποίο έχουν ίδια εσωτερική δομή δεν είναι, όμως, συγκρίσιμοι λειτουργίες ορισμένες στους distinct types system-provided τελεστές σύγκρισης (προαιρετικά) ο ορισμός τους βασίζεται στον τελεστή του source type casting άμεσο casting μεταξύ του distinct type και του source type - 34 17

User-defined Types - Distinct Types (2) 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!!!!! - 35 User-defined Types - Abstract Data Types (ADTs) named, user-defined data types με συμπεριφορά και ενθυλακωμένη (encapsulated) εσωτερική δομή η εσωτερική δομή ορίζεται σε SQL CREATE TYPE address (street char (30), city char (20), state char (2), zip integer); - 36 18

ADTs - Ενθυλάκωση (Encapsulation) Ενθυλάκωση η πρόσβαση στα attributes του ADT περιορίζεται σε functions, που ορίζουν το ορατό (visible) interface δεν υπάρχει διάκριση μεταξύ functions, stored, και virtual attributes του interface η φυσική αναπαράσταση μπορεί να αλλάξει χωρίς να επηρρεαστούν οι εφαρμογές OBSERVER και MUTATOR functions δημιουργούνται αυτόματα 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 - 37 ADTs - Δημιουργία Στιγμιοτύπων μέσω της constructor function default CONSTRUCTOR function δημιουργείται αυτόματα Η κλήση address () -> address επιστρέφει ένα νέο στιγμιότυπο του ADT με κάθε attribute αρχικοποιημένο στην default τιμή - 38 19

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 - 39 ADTs - Χρήση CREATE TYPE shape (refercing_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 x 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)) - 40 20

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)) table real_estate_info type p r ic e o w n e r p r o p e r ty tags < u s_ d o lla r> < p o in t> am ount: 100,000 M r. S. W hite < c d n _ d o lla r> < p o ly > a m o u n t:4 0 0,0 0 0 M r. W. G reen < sw iss_franc> < lin e > am o u n t: 1 5 0,0 0 0 M r. D. B la ck - 41 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, ) - 42 21

User Defined Types - Named Row Types Row type: user-defined data type με μη ενθυλακωμένη εσωτερική δομή CREATE ROW TYPE account_t (acctno INT, cust REF (customer_t), type CHAR (1), opened DATE, rate DOUBLE PRECISION, balance DOUBLE PRECISION); για να ορίζουν τον τύπο των rows σε ένα πίνακα CREATE TABLE account OF account_t (PRIMARY KEY acctno ); - 43 User Defined Types - Reference types (1) διευκολύνουν τη μοντελοποίηση συσχετίσεων μεταξύ row types CREATE ROW TYPE account_t (acctno INT, cust REF (customer_t), type CHAR (1), opened DATE, rate DOUBLE PRECISION, balance DOUBLE PRECISION); - 44 22

User Defined Types - Reference Types (2) τα references μπορούν να έχουν scope CREATE TABLE account OF account_t (PRIMARY KEY acctno, SCOPE FOR cust IS customer); μόνο top level rows σε πίνακες tables μπορούν να γίνουν referenced η reference value ποτέ δεν αλλάζει, όσο τα αντίστοιχα tuples ζουν οι reference values είναι μοναδικές μέσα στη βάση δεδομένων - 45 User Defined Types - Path Expressions Τα references μπορούν να χρησιμοποιηθούν σε path expressions SELECT a. acctno, a. cust-> name FROM account a WHERE a. cust-> address..city = Hollywood AND a. balance > 1000000; - 46 23

User Defined Types - Row Types: Subtyping Ένας row type μπορεί να είναι υποτύπος ενός ή περισσότερων row types, κληρονομώντας attributes και συμπεριφορά από αυτούς CREATE TYPE empoloyee (name CHAR (20), salary DECIMAL (10,2)) CREATE TYPE manager UNDER employee (bonus DEMICAL (10,2)) CREATE TYPE ssummer_stundent UNDER employee (school VARCHAR (30)) - 47 User Defined Types - Row Types: Τable Hierarchies για τη μοντελοποίηση ιεραρχιών πινάκων (super/sub collections) CREATE TABLE employees OF employee CREATE TABLE managers OF manager UNDER employees CREATE TABLE summer_stundents OF summer_stundents UNDER employees queries στις ιεραρχίες επιστρέφουν rows από τα subtables - 48 24

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: - 49 Type Predicate -Subtype Specification late binding SELECT price, owner, property FROM real_estate_info WHERE TYPE (price) IN (us_dollar) αλλαγή του τύπου μιας έκφρασης σε έναν από τους subtypes του SELECT TREAT (price AS us_dollar), owner, property FROM real_estate_info WHERE TYPE (price) IN (us_dollar) - 50 25

User Defined Functions -Methods user-defined functions ή/και stored procedures ορισμένες σε user-defined types (ADTs, row types, κλπ.) μπορούν να γραφούν σε SQL/PSM, 3GLs, ή 4GLs internal/external - 51 Collection Types (1) SETs, LISTs, BAGs, and ARRAYs CREATE ROW TYPE employee (id INTEGER, name VARCHAR(30), address address, manager REF (employee), projects SET (REF (project)), children LIST (REF (PERSON)), hobbies SET (VARCHAR (20))) - 52 26

Collection Types (2) στιγμιότυπα των SETs, MULTISETs, ARRAYs μπορούν να αντιμετωπισθούν σαν πίνακες στα queries SELECT e. name FROM employees e WHERE travel IN (SELECT * FROM TABLE (e. hobbies) c) AND 5 > (SELECT count (*) FROM TABLE (e. children) d) το τελικό αποτέλεσμα είναι πάντα πίνακας - 53 Collections - Παράδειγμα CREATE TABLE employees CREATE TABLE departments (id INTEGER PRIMARY KEY, (deptno INTEGER PRIMARY KEY, name VARCHAR (30), manager INTEGER REFERENCES employees, address ROW (street VARCHAR (40), projects TABLE (projno INTEGER, city CAHR (20), projname CHAR (30), state CHAR (2) budget DECIMAL (10,2)) zip INTEGER, country VARCHAR (30)), salary DECIMAL (10,2), deptno INTEGER REFERENCES departments, manager INTEGER RFEFERENCES employees, projects SET (INTEGERS), children LIST (person), hobbies SET (VARCHAR (20))) - 54 27

Μετασχηματισμός collections σε πίνακες find all employees that work on more than 5 projects SELECT name FROM employees e WHERE 5 < (SELECT count (*) FROM TABLE (e. projects) d) - 55 Μετασχηματισμός πινάκων σε collections find the set of employees that are not managers SET ( TABLE employees EXCEPT (SELECT * FROM employees e WHERE e.id IN (SELECT ee. manager FROM employees ee))) - 56 28

Queries σε collections BEGIN DECLARE hobbies_var SET (VARCHAR (20)); SELECT hobbies INTO hobbies_var FROM name = John Doe ; SELECT ITEM ROW h FROM h IN hobbies_var /* hobbies_var is a SET of VARCHARs */ WHERE h <= A ; SELECT ITEM ROW h FROM h IN hobbies_var /* quantifiers are allowed */ WHERE FOR SOME j IN (SELECT hobbies FROM employees e WHERE name = Mary Doe ) (h = j); END; - 57 Unnesting (1) find the children of employees making less than 50K SELECT child FROM employees e, TABLE (e. children) c (child) WHERE e. salary < 50000 return the name the children of employees living in CA SELECT c. name, c. birthday FROM employees e, TABLE (e. children) WITH ORDINALITY c (name, birthday, order) WHERE e. address..state = CA ORDER BY c. order - 58 29

Unnesting (2) return the number, budget, and average salary of every department SELECT d. deptno, d. budget, av. avg_sal FROM departments d, (SELECT avg (salary) AS avg_sal FROM e. deptno = d. deptno) AS av ή όμοια SELECT d. deptno, d. budget. AVG (e. salary) AS avg_sal FROM departments d, employees e WHERE d. deptno = e. deptno GROUP BY d. deptno, d. budget - 59 Flattening των αποτελεσμάτων return the set of hobbies of employee 12345 THE ( SELECT e. hobbies /* does not return ROW (SET (VARCHAR))) */ FROM employees e WHERE e. id. = 12345) - 60 30

Άλλα Παραδείγματα (1) Find employees whose manager lives at a given address: select e.id from employees as e where row (row (123, University Avenue, Palo Alto, CA, 94301)) = (select mgr. address from employees as mgr. where e. manager = mgr.id) Find the managers and project details for projects with budgets > 10000. select d.manager, multiset (select * from table (d.projects) as p where p.budget >100000) from departments as d - 61 Άλλα Παραδείγματα (2) Find which of the addresses addr.1_v, addr.2_v, addr.3_v is near to 123, University Avenue, Palo Alto, CA, 94301 (given a Booleam function near). select row addr from (values addr1_v, addr2_v, addr3_v) as addr where near (row addr, row (123 University Avenue, Palo Alto, CA 94301)) ή όμοια select row addr from (multiset ( addr1_v, addr2_v, addr3_v)) as addr where near (row addr, row (123 University Avenue, Palo Alto, CA 94301)) - 62 31

Άλλα Παραδείγματα (3) Find the employee number and the numbers of projects they work on that are primers, given a function prime. select e.id, multiset ( from employees as e select pno from table (e. projects) as p(pno) where prime (pno) ) Find all details of employees that work on project 19. select * from employees as e where 19 in (select * from table (e.projects)) - 63 Άλλα Παραδείγματα (4) Find the set of project numbers for employee 3456, excluding projects 7, 8, and 9. set the (select e.projects from employees as e where e.id = 3456) s_except set (7, 8, 9) Find the manager number and higest projecct number for each employee. select e. manager, (select max (p.pno) from table (e.projects) as p(pno)) from employees as e - 64 32