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

Σχετικά έγγραφα
ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

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

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

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

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

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

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

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

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διαχείριση Πολιτισμικών Δεδομένων

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

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

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

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

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

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

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

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

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

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

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

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

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

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

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

Entity-Relationship Model (Chen) Οντολογικό Σχεσιακό Μοντέλο

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

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

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

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

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


ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

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

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

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

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

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)

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

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

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

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

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

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

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

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

Τεχνολογία Πολιτισμικού Λογισμικού

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

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

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

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

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

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

Αρχιτεκτονική Συστημάτων Βάσεων Δεδομένων. Κατηγορίες χρηστών ΣΔΒΔ Αρχιτεκτονική ANSI/SPARC Γλώσσες ερωτημάτων Μοντέλα δεδομένων Λειτουργίες ΣΔΒΔ

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

Τεχνολογία Πολιτισμικού Λογισμικού

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Βάσεις Δεδομένων

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

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

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

Το Σχεσιακό μοντέλο και η γλώσσα SQL

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

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012

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

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

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

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

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

Εισαγωγή στις Βάσεις Δεδομζνων II

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Έχουµε την βάση της σχολής που αποτελείται από τους παρακάτω πίνακες.

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

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

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

databases linux - terminal (linux / windows terminal)

SQL Data Manipulation Language

Transcript:

Τyped Πίνακες Α ΜΕΡΟΣ ΗΜΙΟΥΡΓΙΑ USER DEFINED DATATYPES ΣΤΗΝ IBM DB2 ιάφορα σχεσιακά Σ Β άρχισαν στα µέσα της δεκαετίας του '90 να παρέχουν αντικειµενοστρεφείς επεκτάσεις στη µηχανή τους. Ετσι στην SQL-3 υιοθετήθηκαν user defined datatypes,predicates,user functions... Tύπoι οριζόµενοι από το χρήστη UDTs, που διαιρούνται σε διάφορες κατηγορίες. Στην DB2 χωρίζονται σε δυο κατηγορίες : User-defined distinct types - ιακριτοί τύποι (απλοί) - Distinct Types User-defined structured types - οµηµένοι τύποι γραµµών http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.ud b.doc/ad/rjvjdata.htm 1. Απλοί (distinct types) σηµασιολογία δεδοµένων CREATE DISTINCT TYPE b_name_type AS VARCHAR(20) WITH COMPARISONS; CREATE DISTINCT TYPE p_name_type AS VARCHAR(20) WITH COMPARISONS; CREATE DISTINCT TYPE headcount_type AS INTEGER WITH COMPARISONS; Χρήση user defined distinct datatype: CREATE TABLE Business (name b_name_type, headcount headcount_type); --varchar(20) --int CREATE TABLE Person (name p_name_type,--varchar(20), age int); select b.*, p.* from Person p, Business b where p.name = b.name ; εν θα δουλέψει γιατί είναι διαφορετικοί τύποι παρόλο που και οι δυο είναι varchar(20), απαιτείται casting. Aν θέλουµε όµως να συγκρίνονται µε τιµές varchar(20) π.χ. where p.name= 'me' χρησιµοποιείται το WITH COMPARISONS (αλλιώς without comparisons). 1. Να δηµιουργηθούν (µε εντολές db2) οι κάτωθι απλοί τύποι : Τύπος ιπλώµατος, Βαθµός Συνοδού και Αριθµός Κυκλοφορίας TYPOS_DIPLOMATOS_TYPE VARCHAR(30) (π.χ. Επαγγελµατικό, επιβατικό, ) VATHMOS_SΥNODOU_TYPE VARCHAR(20) (π.χ. Ελεγκτής, Εισπράκτορας, ) ARITHMOS_KUKLOFORIAS_TYPE VARCHAR(8) (π.χ ΥΕΤ55018,..) 2. οµηµένοι τύποι (structured types) CREATE TYPE Person_t AS ( name VARCHAR(30), age int, address Αddress_t ) INSTANTIABLE --default/µπορώ να έχω αντικείµενα REF USING INT --για την ταυτότητά του χρησιµοποιεί ακέραιο Οι τύποι αυτοί έχουν µια δοµή και τα στοιχεία τους (αντίθετα από τους απλούς τύπους) µπορεί να µην είναι µόνο built-in DB2 τύποι (π.χ. το χαρακτηριστικό address Αddress_t). 1

Τyped Πίνακες Α ΜΕΡΟΣ Ένα στιγµιότυπο ενός δοµηµένου τύπου µπορεί να αποθηκευτεί στην βάση µε δυο τρόπους: A. Σαν µια γραµµή σε έναν πίνακα, στην οποία κάθε στήλη/πεδίο του πίνακα αντιστοιχεί σε ένα χαρακτηριστικό του τύπου π.χ. Ο δοµηµένος τύπος αναφέρεται σε ολόκληρη την πλειάδα της σχέσης Ο πίνακας Person έχει τις στήλες name, age, address που αντλούν το όνοµά τους και τον τύπο τους από τα χαρακτηριστικά του δοµηµένου τύπου Person_t. Aυτοί οι πίνακες είναι γνωστοί σαν typed πίνακες. B. Σαν µια τιµή σε µια στήλη π.χ. CREATE TABLE Person OF Person_t CREATE TABLE Properties ( ParcelNum int, Address Address_t); Ο δοµηµένος τύπος αναφέρεται σε ένα πεδίο της σχέσης Ο πίνακας Properties έχει µια στήλη ParcelNum τύπου int αλλά και την στήλη Address, που είναι δοµηµένου τύπου Address_t (και πρέπει να έχει ήδη οριστεί κπκ.). Οι δοµηµένοι τύποι µπορούν να ορισθούν INSTANTIABLE (προεπιλογή) ή ΝΟΝ INSTANTIABLE. Με τους instantiable τύπους µπορούν να δηµιουργηθούν αντικείµενα αντιθέτως µε τους non instantiable, οι οποίοι χρησιµεύουν σαν µοντέλα στην ιεραρχία τύπου. π.χ. αν οριστεί Person_t µε το ΝΟΝ INSTANTIABLE, τότε δεν µπορείτε να αποθηκευτεί ένα Person στη βάση δεδοµένων. Αντ 'αυτού, µπορούν να αποθηκευτούν µόνο περιπτώσεις Employee_t ή άλλων υποτύπων του που έχουν ορίσει. Ενας δοµηµένος τύπος µπορεί να έχει υποκατηγορίες που χρησιµοποιούν όλα τα χαρακτηριστικά του και µπορούν να περιέχουν και πρόσθετα. Ο αρχικός τύπος είναι ο Υπερτύπος (supertype) π.χ. ο δοµηµένος τύπος Person_t µπορεί να περιέχει σαν χαρακτηριστικά όνοµα, ηλικία, και διεύθυνση κπκ. Ένας υπότυπος του Person_t (under Person_t) µπορεί να είναι ο Employee_t που έχει όλα τα γνωρίσµατα όνοµα, ηλικία, διεύθυνση και επιπλέον, έχει και τα δικά του χαρακτηριστικά SerialNum, Μισθός και BusinessUnit κπκ. CREATE TYPE Address_t AS ( --ΥΠΕΡΤΥΠΟΣ street VARCHAR(30), number CHAR(15), city VARCHAR(30), state VARCHAR(10) ) REF USING INT CREATE TYPE Germany_addr_t UNDER Address_t AS ( --ΥΠΟΤΥΠΟΣ family_name VARCHAR(30) ) CREATE TYPE US_addr_t UNDER Address_t AS (--ΥΠΟΤΥΠΟΣ zip CHAR(10) ) 2

Τyped Πίνακες Α ΜΕΡΟΣ REF USING τύπος: Μπορεί να καθοριστεί µόνο για τον ΥΠΕΡΤΥΠΟ (την ρίζα) µια δοµηµένης ιεραρχίας τύπου. Καθορίζει τον built-in τύπο δεδοµένων που χρησιµοποιείται για την εκπροσώπηση του δοµηµένου τύπου ( OID ***) αλλά για και όλες τις υποκατηγορίες του (δεν ξανα-ορίζεται στην υποτύπο) CREATE TYPE BusinessUnit_t AS ( Name b_name_type, Headcount INT ) REF USING INT -- ΟΙD ακέραιος Oι υπερτύποι µιας ιεραρχίας µε REF USING.. για να αναφερόµαστε στα αντικείµενά τους. DROP TYPE Person_t; --κατάργηση, πριν ορίστηκε µε REF USING INT CREATE TYPE Person_t AS ( --ΥΠΕΡΤΥΠΟΣ Name p_name_type, --απλός τύπος Age INT, Address Address_t ) --δοµηµένος τύπος --REF USING VARCHAR(16) FOR BIT DATA (*) Aν δεν οριστεί REF USING.. για τον ΥΠΕΡΤΥΠΟ µιας δοµηµένης ιεραρχίας τότε η προεπιλογή είναι REF USING VARCHAR(16) FOR BIT DATA (*) CREATE TYPE Employee_t UNDER Person_t AS (--ΥΠΟΤΥΠΟΣ του Person_t SerialNum INT, Salary INT, Dept REF (BusinessUnit_t) ) --κπκ -- αναφέρεται σε αντικείµενο τύπου BusinessUnit_t REF (BusinessUnit_t): για επιτευχθεί συσχέτιση µεταξύ Υπαλλήλου και Τµήµατος - ξένο κλειδί. Με την χρήση τύπου αναφοράς (reference type) ορίζεται ο συσχετισµός µεταξύ δύο πινάκων. Μία τιµή ενός τύπου αναφοράς µπορεί να αποθηκευθεί σε έναν πίνακα και να χρησιµοποιηθεί ως άµεση αναφορά σε µία συγκεκριµένη γραµµή ενός άλλου πίνακα. Έτσι µία γραµµή ενός πίνακα µπορεί να µοιρασθεί σε πολλούς πίνακες απλοποιώντας τη διατύπωση ερωτηµάτων που περιέχουν πράξεις σύνδεσης. 2. Να κατασκευαστούν οι κάτωθι επτά αφηρηµένοι τύποι : Yπάλληλος, Oδηγός,Συνοδηγός, Πλήρωµα, Πόλη, Λεωφορείο & ροµολόγιο YPALLILOS_T--ΥΠΕΡΤΥΠΟΣ όνοµα VARCHAR(20), επώνυµο VARCHAR(30), φύλο CHAR(1), ηλικία INT, διεύθυνση_κατοικίας VARCHAR(40), ηµεροµηνία_πρόσληψης DATE ODIGOS_T --υποτύπος υπαλλήλου τύπος_διπλώµατος TYPOS_DIPLOMATOS_TYPE, αριθµός_δροµολογίων INT SΥNODOS_T --υποτύπος υπαλλήλου Bαθµός Συνοδού VATHMOS_SΥNODOU_TYPE PLIROMA_T oδηγός ODIGOS_T, συνοδηγός SINODIGOS_T POLI_T όνοµα VARCHAR(30), χώρα VARCHAR(30) LEOFOREIO_T αριθµός_κυκλοφορίας ARITHMOS_KUKLOFORIAS_TYPE, έδρα POLI_T, ηµεροµηνία_κατασκευής DATE, πλήρωµα PLIROMA_T, αριθµός_χιλιοµέτρων INT DROMOLOGIO_T αφετηρία POLI_T, προορισµός POLI_T, ηµέρα VARCHAR(10), ώρα TIME, Λεωφορείο LEOFOREIO_T, τιµή_του_εισιτηρίου INT Σηµείωση: Όταν στα χαρακτηριστικά ενός τύπου υπάρχει άλλος δοµηµένος τύπος περάστε τον µε αναφορά (όπως το Dept στο Employee_t) π.χ. στο Pliroma_t να περαστεί µε αναφορά ο οδηγός. (***)INSERT INTO BusinessUnit (Oid, Name, Headcount) VALUES(BusinessUnit_t( GENERATE_UNIQUE() ), 'Toy' 15); (*)http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/rjvjdata.htm 3

Τyped Πίνακες Β ΜΕΡΟΣ ΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΩΝ User defined structured datatypes and typed πίνακες Τyped Tables: είναι οι πίνακες που ορίζονται µε έναν user-defined structured type. Μπορεί έτσι να δηµιουργειθεί µια ιεραρχική δοµή µε καθορισµένη σχέση µεταξύ των πινάκων. Η ιεραρχία αποτελείται από έναν ΜΟΝΑ ΙΚΟ πίνακα ρίζα, supertables, και subtables. Κάθε χαρακτηριστικό του user-defined structured τύπου είναι µια στήλη του πίνακα. CREATE TYPE BusinessUnit_t AS (Name b_name_type,headcount int ) REF USING INT CREATE TABLE BusinessUnit OF BusinessUnit_t (REF IS Oid USER GENERATED); -- Oid: Οbject IDentity Κάθε typed table έχει µια στήλη object identifier (ΟΙD) column σαν πρώτη στήλη, επειδή στα αντικείµενα των typed tables γίνεται αναφορά από άλλα αντικείµενα. Ο τύπος του ΟΙD καθορίζεται στο δοµηµένο ΥΠΕΡτύπο µε το REF (π.χ. ref using int) δεν ξανακαθορίζεται στον υποτύπο Στον ΥΠΕΡπίνακα καθορίζεται ο τρόπος που δηµιουργείται το OID ( ref is oid user generated) δεν ξανακαθορίζεται στον υποτύπο Οι τιµές του ΟID που µπορεί να δώσει ο χρήστης δεν αλλάζουν (για να δηµιουργήσει η DB2 τιµές για OID, χρησιµοποιούνται οι συναρτήσεις SEQUENCE or the GENERATE_UNIQUE() ***) INSERT INTO BusinessUnit (Oid, Name, Headcount) VALUES (BusinessUnit_t(1), 'Toy', 15); --Το OID είναι ακέραιος --SELECT * FROM BusinessUnit; CREATE TABLE Person OF Person_t --ΥΠΕΡΤΥΠΟΣ (REF IS Oid USER GENERATED);--το OID VARCHAR(16) εξ'ορισµού INSERT INTO Person (Oid, Name, Age, Address) - address UDTs VALUES (Person_t ('t'), 'Tasos', 20,Address_t( ).. street('bakelyavenue').. number('555').. city('san Jose').. state('ca') ); CREATE TABLE Employee OF Employee_t UNDER Person --ΥΠΟΤΥΠΟΣ INHERIT SELECT PRIVILEGES --η υποτάξη κληρονοµεί την υπερτάξη (SerialNum WITH OPTIONS NOT NULL, --δεν µπορεί να πάρει κενές τιµές Dept WITH OPTIONS SCOPE BusinessUnit ); --H στήλη Dept (στήλη τύπου REF (BusinessUnit)) αναφέρεται σε --αντικείµενα ΜΟΝΟ του πίνακα BusinessUnit INSERT INTO Employee (Oid, Name, Age, SerialNum, Salary, Dept) VALUES (Employee_t('d'), 'Dennis', 26, 105, 30000, BusinessUnit_t(1)); 3. Να κατασκευαστούν οι επτά πίνακες : YPALLILOS --ΥΠΕΡΤΥΠΟΣ ODIGOS --υποτύπος υπαλλήλου SΥNODOS --υποτύπος υπαλλήλου PLIROMA POLI LEOFOREIO DROMOLOGIO 4

Τyped Πίνακες Β ΜΕΡΟΣ BusinessUnit typed table: CREATE TABLE BusinessUnit OF BusinessUnit_t (REF IS Oid USER GENERATED); Person table hierarchy: CREATE TABLE Person OF Person_t (REF IS Oid USER GENERATED); CREATE TABLE Employee OF Employee_t UNDER Person INHERIT SELECT PRIVILEGES (SerialNum WITH OPTIONS NOT NULL, Dept WITH OPTIONS SCOPE BusinessUnit ); --το Dept µε scoped reference CREATE TABLE Student OF Student_t UNDER Person INHERIT SELECT PRIVILEGES; CREATE TABLE Manager OF Manager_t UNDER Employee INHERIT SELECT PRIVILEGES; CREATE TABLE Architect OF Architect_t UNDER Employee INHERIT SELECT PRIVILEGES; IΕΡΑΡΧΙΑ του Person typed table που είναι τύπου Person_t. Subtables of the Person table: Employee and Student. Subtables of the Employee: Manager and Architect. Ενας υποπίνακας πρέπει να βρίσκεται στο ίδιο σχήµα µε τον υπερπίνακά του. Όπως ένας υποτύπος κληρονοµεί από ένα υπερτύπο έτσι και ένας υποπίνακας κληρονοµεί από ένα υπερπίνακα τις κολόνες του αλλά και το ΟΙD του. Οι στήλες του υποπίνακα Employee είναι 7: Oid, Name, Age, Address, SerialNum, Salary, and Dept. Ενα SELECT, UPDATE, or DELETE εντολή σε ένα ΥΠΕΡπίνακα εξ ορισµού επηρεάζει όλους τους ΥΠΟπίνακες π.χ., µια εντολή UPDATE στον Employee επηρεάζει τους Υποπίνακες Manager, and Architect - µια UPDATE στον πίνακα Manager επηρεάζει γραµµές µόνο στον Manager. Αν θέλετε να περιορίσετε τις ενέργειες των εντολών SELECT, INSERT, ή DELETE σε ένα συγκεκριµένο πίνακα χρησιµοποιείται η επιλογή ONLY option (Γ ΜΕΡΟΣ). 5

Τyped Πίνακες Β ΜΕΡΟΣ INHERIT SELECT PRIVILEGES Ο υποχρεωτικός όρος ΙNHERIT SELECT PRIVILEGES στην εντολή CREATE TABLE ορίζει ότι αυτός ο ΥΠΟΠΙΝΑΚΑΣ π.χ.employee, είναι αρχικά προσπελάσιµος από τους ίδιους τους χρήστες και οµάδες όπως και ο supertable, δηλ.όπως ο Person. WITH OPTIONS Ο όρος αυτός επιτρέπει να καθοριστούν επιλογές ΣΕ ΜΙΑ ΜΕΜΟΝΩΜΕΝΗ ΣΤΗΛΗ του typed table π.χ. SerialNum WITH OPTIONS NOT NULL WITH OPTIONS SCOPE ορισµός του scope µιας στήλης Reference Ο όρος SCOPE εφαρµόζεται ΜΟΝΟ ΣΕ ΣΤΗΛΕΣ ΤΥΠΟΥ REF. Μια επί πλέον χρήση του WITH OPTIONS είναι ο καθορισµός του πεδίου δράσης (scope) µιας στήλης π.χ. στον πίνακα Employee - που έχει και την στήλη Dept REF (BusinessUnit_t) το Dept WITH OPTIONS SCOPE BusinessUnit δηλώνει ότι η στήλη Dept του πίνακα αλλά και των υποπινάκων του έχει πεδίο δράσης/θέα µέσα στο Πίνακα BusinessUnit, δηλαδή οι τιµές αναφοράς σε αυτήν τη στήλη του Employee table αναφέρονται µόνο σε αντικείµενα του πίνακα BusinessUnit. EIΣΑΓΩΓΗ ΕΓΓΡΑΦΩΝ Για την εισαγωγή µιας εγγραφής Person, βάζουµε: INSERT INTO Person (Oid, Name, Age) VALUES(Person_t('a'), 'Andrew', 29); --Το OID είναι varchar INSERT INTO Employee (Oid, Name, Age, SerialNum, Salary) VALUES (Employee_t('s'), 'Susan', 39, 24001, 37000.48) Ο πίνακας Person περιέχει και Person και Employee instances Oid Name Age Address a Andrew 30 NULL s Susan 39 NULL Αλλά και INSERT INTO BusinessUnit (Oid, Name, Headcount) VALUES (BusinessUnit_t (1), 'Toy', 15); --Το OID είναι ακέραιος INSERT INTO Employee (Oid, Name, Age, SerialNum, Salary, Dept) VALUES (Employee_t('d'), 'Dennis', 26, 105, 30000, BusinessUnit_t(1) ); --Το πεδίο Dept είναι µε scoped reference 6