Κεφάλαιο 5. Ορισµός Βάσεων εδοµένων µε SQL DDL - Άλλες Γλώσσες Σχεσιακών Βάσεων (QBE) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.

Σχετικά έγγραφα
Κεφάλαιο 5. Ορισµός Βάσεων εδοµένων µε SQL DDL - Άλλες Γλώσσες Σχεσιακών Βάσεων (QBE) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.

SQL Data Definition. REFERENCES (foreign key), CHECKκαι PRIMARY KEY (key)

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

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

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

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

Η Γλώσσα SQL. Μέρος β. Η Γλώσσα SQL Σελίδα 1

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

S Q Q L L -- SQL (Structured Query Language) select insert update delete 2.47

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

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

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

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

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

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

Query-by-Example (QBE)

Database System Concepts and Architecture (Αρχιτεκτονική, οµές, και Μοντέλα)

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

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

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

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

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

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

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

Κεφάλαιο 4. Η Γλώσσα SQL και Σχεσιακός Λογισµός. Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.46

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

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

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

Εισαγωγή Mια από τις βασικές λειτουργίες ενός σχεσιακού συστήµατος διαχείρισης βάσεων δεδοµένων είναι η διαχείριση του πληροφοριακού περιεχοµένου που

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

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

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

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

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

Κεφάλαιο 3 ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ. I.B. Το Σχεσιακό Μοντέλο Σελίδα 2.1

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


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

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

SQL: Αιτήματα. Κεφάλαιο 5. Database Management Systems, R. Ramakrishnan and J. Gehrke

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

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

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

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


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

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

Η αναλυτική περιγραφή της γλώσσας SQL αποτελεί αντικείµενο των σελίδων που ακολουθούν. Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ Ε ΟΜΕΝΩΝ

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

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

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

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)

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

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

Βάσεις Δεδομένων Σύνθετα SQL queries

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

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

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

Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL

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

Lecture 3: Introduction III

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

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

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

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

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

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

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

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

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

Ασκήσεις -Επανάληψη. Βάσεις Δεδομένων

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

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

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

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

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

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

Lecture 8: RM I + RA I

Περιεχόμενα. Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL. Συνένωση Σχέσεων στην SQL2 (3) Συνένωση Σχέσεων στην SQL2. (Join Relations Feature in SQL)

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

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

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

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

Διάλεξη 12: SQL Data Definition Language. Διδάσκων: Παναγιώτης Ανδρέου

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

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

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

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

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

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

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

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

Transcript:

Κεφάλαιο 5 Ορισµός Βάσεων εδοµένων µε SQL DDL - Άλλες Γλώσσες Σχεσιακών Βάσεων (QBE) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.90

SQL Data Definition H Γλώσσα Ορισµού (DDL) της SQL χρησιµοποιείται για CREATE, DROP και ALTER τις περιγραφές των Σχέσεων στη Βάση εδοµένων CREATE TABLE DEPARTMENT ( DNumber integer keymember 0 not null, DName varchar(12) keymember 1 not null, MgrSSN char(9) references EMPLOYEE.SSN, MgrSD char(9) ); Σε µερικά (παλαιότερα) SQL συστήµατα, δεν υπάρχει υποστήριξη για REFERENCES (foreign key) και KEYMEMBER (key) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.91

SQL DDL - συνέχεια Η εντολή: DROP TABLE DEPENDENT διαγράφει τον πλήρη πίνακα DEPENDENT και τον ορισµό του (δεν είναι δυνατή πλέον η χρήση του για ενηµερώσεις, κλπ.) Η εντολή: ALTER TABLE EMPLOYEE ADD JOB VARCHAR(15) προσθέτει ένα νέο γνώρισµα, µε όνοµα JOB, στη Σχέση EMPLOYEE Όλες οι τιµές για το JOB στην αρχή θα είναι NULL Αργότερα µπορεί να αλλάξουν µε την εντολή UPDATE. Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.92

ηµιουργία Ευρετηρίων στην SQL Στις περισσότερες περιπτώσεις µια Σχέση Βάσης αντιστοιχεί σε αποθηκευµένο αρχείο Η εντολή CREATE INDEX χρησιµοποιείται για τον προσδιορισµό ευρετηρίου (index) που έχει ονοµασία (index name) CREATE INDEX LN_INDEX on EMPLOYEE (Name); Για τον προσδιορισµό ενός περιορισµού ευρετηρίου κλειδιού στο γνώρισµα (γνωρίσµατα) κλειδιού χρησιµοποιείται το UNIQUE CREATE UNIQUE INDEX S_IND on EMPLOYEE (SSN); Για τον προσδιορισµό ενός ευρετηρίου συστάδων (clustering index) χρησιµοποιείται το CLUSTER CREATE INDEX D_IN on EMPLOYEE(DNumber) CLUSTER; Στα περισσότερα DBMS, κάποια παραλλαγή των B+-tree χρησιµοποιείται για την υλοποίηση ευρετηρίων Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.93

Σχεσιακές Όψεις και SQL Η αρχιτεκτονική 3-επιπέδων στα DBMS, έχει σαν αποτέλεσµα διαφορετικοί χρήστες να βλέπουν διαφορετικά εξωτερικά σχήµατα (όψεις) - αυτό επιτυγχάνεται στο σχεσιακό µοντέλο µε την έννοια του VIEW External Schema 1 External Schema 2... External Schema N RELATIONAL VIEWS Conceptual Schema RELATIONAL DATABASE SCHEMA (RELATIONS) Internal Schema Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.94

Σχεσιακές Όψεις Ορισµός (1) Μια ΟΨΗ (VIEW) είναι µια Σχέση που ΕΝ είναι στοιχείο του Εννοιολογικού Σχήµατος (οι Σχέσεις Βάσης)) αλλά είναι προσβάσιµηως µια ιδεατή (virtual) σχέση Ο χρήστης δεν µπορεί να ξεχωρίσει αν µια Σχέση είναι Σχέση Βάσης ή είναι Όψη Η Όψη ΕΝ αποθηκεύεται (materialized) στην Βάση εδοµένων Τα περιεχόµενα της Όψης προσδιορίζονται από τον (αποθηκευµένο) ορισµό της σαν µια συνάρτηση των περιεχοµένων της Μια Όψη ορίζεται σε Σχέσεις Βάσης ή σε άλλες Όψεις µε κάποιο query Πράξεις (queries, ενηµερώσεις) σε Όψεις µεταφράζονται σε Πράξεις στις ορίζουσες (την Όψη) Σχέσεις Βάσης ΕΝ υπάρχουν περιορισµοί στα Queries σε Όψεις Ελάχιστες ενηµερώσεις σε Όψεις επιτρέπονται Μια Όψη αλλάζει δυναµικά µε τη Βάση δεδοµένων Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.95

Σχεσιακές Όψεις Ορισµός (2) CREATE VIEW table_name [ ( view_column_list ) ] AS query_expression [ WITH CHECK OPTION ] V1: Εργαζόµενοι σε Έργα CREATE VIEW PROJWORKER(EName, Address, Project) AS select Name, Address, PName from EMPLOYEE, PROJECT, WORKS_ON where PROJECT.PNumber = WORKS_ON.PNumber and WORKS_ON.SSN=EMPLOYEE.SSN ; Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.96

Σχεσιακές Όψεις - Παραδείγµατα Όταν το view_column_list λείπει, τα γνωρίσµατα της ΟΨΗΣ κληρονοµούνται από τα Γνωρίσµατα της ορίζουσας Σχέσης V2: Υπάλληλοι µε υψηλούς µισθούς CREATE VIEW BIGSHARKS AS select * from EMPLOYEE where Salary > 50000 and BirthDate > 31.12.65; Ο χρήστης δύναται να κάνει ερωτήσεις άµεσα σε αυτή τη νέα Σχέση που λέγεται BIGSHARKS, και η οποία έχει ακριβώς τα ίδια Γνωρίσµατα µε τη Σχέση EMPLOYEE Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.97

Σχεσιακές Όψεις Παραδείγµατα (2) Μια Όψη είναι δυνατόν να έχει διαφορετικά γνωρίσµατα (νέα) από το Εννοιολογικό Σχήµα V3: Πληροφορίες για Τµήµατα (µέσος µισθός, κλπ.) CREATE VIEW DEPTINFO (Name, NoOfEmpl, AvgSalary) AS select DName, COUNT(*), AVG(Salary) from DEPARTMENT d, EMPLOYEE e where d.dnumber = e.dnumber group by DName ; Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.98

Σχεσιακές Όψεις Παραδείγµατα (3) V4: Βρες τον αριθµό των υπαλλήλων και τον µέσο µισθό (παρουσίασε και το όνοµα τµήµατος) select * from where DEPTINFO Name = research V5: Αύξησε κατά 1 τον αριθµό των Υπαλλήλων στο Τµήµα Έρευνας Αυτή η ενηµέρωση ΕΝ επιτρέπεται (Γιατί?) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.99

Σχεσιακές Όψεις - Εκτέλεση Όπως ήδη ειπώθηκε, το σύστηµα µεταφράζει προσβάσεις (ενηµερώσεις) σε Όψεις ΣΕ προσβάσεις (ενηµερώσεις) σε Σχέσεις Βάσης. ΠΩΣ ΜΠΟΡΕΙ ΝΑ ΓΙΝΕΙ ΑΥΤΌ? ΧΑΖΗ Προσπάθεια 1: ηµιούργησε (Materialize) την Όψη (προσωρινός πίνακας) και εκτέλεσε το query σε αυτήν. ΧΑΖΗ Προσπάθεια 2: Κράτα συνεχώς ενήµερη την Όψη -- δηλαδή, κράτησέ την δηµιουργηµένη (ονοµάζεται, snapshot) και όποτε σχετικές ενηµερώσεις γίνονται στις Σχέσεις Βάσης, τότε πέρασε αυτές και στην Όψη. Εκτέλεσε το query στο snapshot. ΣΩΣΤΗ Προσπάθεια: Άλλαξε το query αντικαθιστώντας την Όψη µε το query σε Σχέσεις Βάσης που την ορίζει, και εκτέλεσε το query σε αυτές τις Σχέσεις Βάσης. Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.100

Σχεσιακές Όψεις Παραδείγµατα Εκτέλεσης Για παράδειγµα, το query στην Όψη BIGSHARKS: select Name, Address from BIGSHARKS where DNumber = 5 Τροποποιείται ανάλογα και το παρακάτω query εκτελείται: select Name, Address from EMPLOYEE where Salary > 50000 and BirthDate > 31.12.65 and DNumber = 5 Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.101

Σχεσιακές Όψεις - Ενηµερώσεις Γενικά, υπάρχουν σοβαροί περιορισµοί στις ενηµερώσεις Μια ενηµέρωση Όψης είναι αναµφίβολη αν µια µοναδική ενηµέρωση στις Σχέσεις Βάσης µπορεί να εκπληρώσει το ζητούµενο αποτέλεσµα στην Όψη ΠΑΡΑΤΗΡΗΣΕΙΣ: Μια όψη που ορίζεται σε µια (ακριβώς) Σχέση Βάσης είναι ενηµερώσιµη αν τα γνωρίσµατα της Όψης περιέχουν το Κύριο Κλειδί Όψεις που ορίζονται σε πολλαπλές Όψεις είναι γενικά µηενηµερώσιµες Όψεις που περιέχουν Συναθροιστικές Συναρτήσεις είναι σίγουρα µη-ενηµερώσιµες Οι Ενηµερώσεις των Όψεων παραµένουν ένα ενδιαφέρον ανοικτό ερευνητικό θέµα / πρόβληµα (π.χ., Data Warehouses) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.102

Σχεσιακές Όψεις - Σχόλια To WITH CHECK OPTION χρησιµοποιείται σε ενηµερώσιµες όψεις για να αντιµετωπίσει το πρόβληµα των γραµµών που εξαφανίζονται (vanishing rows) Για παράδειγµα, θεωρήστε την Όψη: CREATE VIEW V AS select * from R where A = X Έστω η ενηµέρωση: UPDATE V set A = Y Η ενηµέρωση θα προχωρήσει κανονικά, αλλά οι πλειάδες που ήταν πριν προσβάσιµες στην V θα εξαφανιστούν! (προφανώς, δεν θα ικανοποιούν πλέον την συνθήκη της WHERE-πρότασης) Οι Όψεις χρησιµοποιούνται (επίσης) ως µηχανισµοί ασφάλειας και δικαιοδοσίας Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.103

Περιορισµοί Ακεραιότητας Το Σχεσιακό Μοντέλο υποστηρίζει 6 είδη περιορισµών ακεραιότητας: ΚΛΕΙ Ι (KEY), ΑΚΕΡΑΙΟΤΗΤΑ ΟΝΤΟΤΗΤΑΣ (ENTITY INTEGRITY), ΑΝΑΦΟΡΙΚΗ ΑΚΕΡΑΙΟΤΗΤΑ (REFERENTIAL INTEGRITY.) ΠΕ ΙΟ ΤΙΜΩΝ (DOMAIN), ΣΤΗΛΩΝ (COLUMN) και ΟΡΙΖΟΜΕΝΩΝ ΑΠΟ ΤΟΝ ΧΡΗΣΤΗ (USER-DEFINED) Τα περισσότερα εµπορικά DBMS δεν υποστηρίζουν όλους τους περιορισµούς ακεραιότητας (υποστήριξη εδώ σηµαίνει ότι αν µια ενηµέρωση καταστρατηγεί έναν περιορισµό τότε το DBMS δεν επιτρέπει την εκτέλεσή του) Έχουµε ήδη µιλήσει για τον προσδιορισµό των έµφυτων στο µοντέλο περιορισµών, (κλειδί, ακεραιότητα οντότητας, αναφορική ακεραιότητα. Οι άλλοι 3 περιορισµοί προσδιορίζονται ρητά. Μοντέρνα DBMS επιβάλουν όλο και περισσότερους δοµικούς περιορισµούς, µε καλό παράδειγµα την: Access της Microsoft. Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.104

Περιορισµοί στο Σχεσιακό Μοντέλο Όταν υποστηρίζεται ένας περιορισµός ακεραιότητας, αρκετές ενέργειες πρέπει να γίνουν από το DBMS. Αυτές είναι, η διαδοχική τροποποίηση (cascade delete) και η διαδοχική ενηµέρωση (cascade update.) Μερικά DBMSs υποστηρίζουν άµεσα τα παραπάνω (Access) Άλλα DBMSs απαιτούν από τον χρήστη να γράψει triggers (διαδικασίες) για την υποστήριξη αυτών (SQL Server) Περιορισµοί Στηλών και Πεδίων υποστηρίζονται µερικώς (ενίοτε και από strong-typing ή άλλους ισχυρούς µηχανισµούς) Περιορισµοί που ορίζονται από τον Χρήστη έχουν περιληφθεί σε νεώτερες εκδόσεις της τυποποίησης της SQL (SQL-92) µε ASSERTIONS (ειδικοί κανόνες) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.105

Assertions -- --Παραδείγµατα Κάθε Υπάλληλος είναι είτε Άνδρας ή Γυναίκα ASSERT gender ON EMPLOYEE: Sex= m OR Sex= f Οι Μισθοί πρέπει να ξεπερνούν το 1,000,000 ASSERT salary_bound ON EMPLOYEE: Salary > 1000000 Αν κάποιος επιχειρήσει την παρακάτω εισαγωγή: insert into EMPLOYEE (select Name= tom,.., Salary=1200000, ) η εισαγωγή ΑΛΛΑΖΕΙ εµπεδώνοντας τον κανόνα assert σε: insert into EMPLOYEE (select Name= tom,.., Salary=12000.. where 1200000 > 1000000 ) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.106

Εµφύτευση της SQL σε Γλώσσα Προγραµµατισµού Εντολές DML συχνά εµφυτεύονται σε προγράµµατα γλώσσας προγραµµατισµού (host) Η εµφυτευµένη SQL εντολή διακρίνεται από εντολές της Γλώσσας Προγραµµατισµού µε ειδικό τρόπο, π.χ. µε πρόθεµα Υπάρχουν δυο τρόποι εµφύτευσης: 1.- Επέκταση της Γλώσσας Προγραµµατισµού (αλλαγή του Compiler) Ενδεικτικά, RIGEL, MODULA-R, Gemstone, Orion, κλπ.) Ονοµάζονται database programming languages 2.- Χρήση ενός προ-επεξεργαστή της Γλώσσας για τις εντολές DML Ο προ-επεξεργαστής αντικαθιστά τις εντολές DML µε κλήσεις στην host γλώσσα, οι οποίες eεκτελούνται Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.107

Εµφύτευση της SQL SQL εντολές καλούνται µέσα από ένα πρόγραµµα µιας host γλώσσας (π.χ., C ή COBOL) Οι εντολές της SQL µπορούν να αναφέρονται σε host µεταβλητές Πρέπει να περιλαµβάνουν µια εντολή για σύνδεσµο µε την σωστή βάση. Οι SQL Σχέσεις είναι σύνολα εγγραφών, χωρίς προκαθορισµένο (a priori) όριο στον αριθµό των εγγραφών. εν υπάρχουν τέτοιες δοµές στην C! Για να αντιµετωπίσει αυτή την δυσκολία η SQL υποστηρίζει ένα µηχανισµό που λέγεται cursor Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.108

Cursors Οι δυνατότητες που προσφέρονται για τον CURSOR είναι ηλώνεται για µια σχέση ή ένα query που είναι γεννήτορας µιας σχέσης. Μπορεί να ανοίξει (open) έναν cursor, και διαδοχικά να φέρει (fetch) πλειάδες, µετά να µετακινήσει (move) τον cursor, µέχρις ότου όλες οι πλειάδες ανακληθούν Μπορεί µε τη χρήση του ORDER BY να ελέγχει τη σειρά ανάκλησης των πλειάδων» Πεδία στην ORDER BY πρόταση πρέπει να παρουσιάζονται και στην SELECT πρόταση. Μπορεί να διαγράφει / τροποποιεί πλειάδες που δείχνονται από τον cursor Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.109

Ο Cursor που παίρνει ονόµατα ναυτικών που έχουν κρατήσει ένα κόκκινο σκάφος, σε σε αλφαβητική σειρά DECLARE sinfo CURSOR FOR SELECT S.sname FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color= red ORDER BY S.sname; FETCH 5 IN sinfo; εν επιτρέπεται να αντικατασταθεί S.sname από το, ας πούµε, S.sid στην ORDER BY πρόταση! (Γιατί?) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.110

Εµφύτευση της SQL σε C -- --Παράδειγµα char SQLSTATE[6]; EXEC SQL BEGIN DECLARE SECTION char c_nονοµα[20]; short c_minrating; float c_age; EXEC SQL END DECLARE SECTION c_minrating = random(); EXEC SQL DECLARE sinfo CURSOR FOR SELECT S.NΟνοµα, S.age FROM ΝΑΥΤΙΚΟΣ S WHERE S.rating > :c_minrating ORDER BY S.NΟνοµα; do { EXEC SQL FETCH sinfo INTO :c_nονοµα, :c_age; printf( %s is %d years old\n, c_nονοµα, c_age); } while (SQLSTATE!= 02000 ); EXEC SQL CLOSE sinfo; Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.111

API Βάσης εδοµένων: Εναλλακτικός της Εµφύτευσης τρόπος πρόσβασης Αντί να αλλάζει ο compiler, προστίθεται µια βιβλιοθήκη µε Κλήσεις στη Βάση εδοµένων (API) Application Programming Interface Ειδικές ιαδικασίες / Αντικείµενα Περνά τις SQL εντολές σαν character strings από τη γλώσσα και παρουσιάζει τα αποτελέσµατα µε φιλικό (για τη γλώσσα) τρόπο Το ODBC της Microsoft έχει γίνει το C/C++ standard στα Windows Το JDBC της SUN είναι το ανάλογο για τη Java Ανεξάρτητα του DBMS» Ένας οδηγός παγιδεύει τις κλήσεις και τις µεταφράζει σε κώδικα για το DBMS» Η Βάση µπορεί να είναι στο ίκτυο Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.112

SQL API στη Java (JDBC) Connection con = // connect DriverManager.getConnection(url, login", pass"); Statement stmt = con.createstatement(); // set up stmt String query = "SELECT COF_NAME, PRICE FROM COFFEES"; ResultSet rs = stmt.executequery(query); try { // handle exceptions // loop through result tuples while (rs.next()) { String s = rs.getstring("cof_name"); Float n = rs.getfloat("price"); System.out.println(s + " " + n); } } catch(sqlexception ex) { System.out.println(ex.getMessage () + ex.getsqlstate () + ex.geterrorcode ()); } Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.113

Μειονεκτήµατα των Host Programming Languages Ανάµιξη των ιαδικαστικών και ηλωτικών γλωσσών (το γνωστό language mismatch πρόβληµα) ιαφορετικοί προ-επεξεργαστές απαιτούνται για διαφορετικές γλώσσες Οι Σχέσεις δεν αποτελούν πολίτες Α κατηγορίας στην γλώσσα (π.χ., µια Σχέση δεν περνιέται σαν παράµετρος σε διαδικασία) Η HOST γλώσσα πιθανόν να µην υποστηρίζει χρήσιµες δοµές (π.χ., η FORTRAN δεν υποστηρίζει εγγραφές) Οι database programming languages κέρδισαν πολύ έδαφος, ειδικά σε object-oriented DBMSs Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.114

Μειονεκτήµατα της SQL Η SQL δεν υποστηρίζει strong typing, inheritance, etc. Οι SQL πίνακες ΕΝ ΕΙΝΑΙ ΣΧΕΣΕΙΣ (επιτρέπουν διπλές πλειάδες) Οι SQL πίνακες δεν εµφωλιάζονται (δεν αποτελούν τιµές για άλλους πίνακες) Η SQL δεν υποστηρίζει πολλές πράξεις, όπως: generalized restriction, division, forall Η SQL δεν υποστηρίζει 3-V logic (Λογική 3 τιµών αληθείας) Η SQL δεν υποστηρίζει µεταβατικούς περιορισµούς Η SQL δεν υποστηρίζει συναρτησιακές εξαρτήσεις (functional dependencies) Η SQL δεν υποστηρίζει περιορισµούς ακεραιότητας σε Όψεις ΠΑΡΟΛΑ ΑΥΤΑ, η SQL είναι η STANDARD ΓΛΩΣΣΑ Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.115

Query-by-Example (QBE) Μια Γλώσσα για ερωταποκρίσεις που αναπτύχθηκε στην IBM (από τον Moshe Zloof) και παρουσιάζεται σε ένα προϊόν (QMF) (που είναι εναλλακτικός τρόπος διεπαφής για το DB2) Ευκολότερη από την SQL για τον µέσο χρήστη (ΟΠΤΙΚΗ και ΙΣ ΙΑΣΤΑΤΗ) ΚΕΝΤΡΙΚΗ Ι ΕΑ: Το Σύστηµα παρέχει στον χρήστη τη δυνατότητα να δει το περίγραµµα των Σχέσεων στη Βάση και ο Χρήστης συµπληρώνει τους πίνακες δίνοντας παραδείγµατα για το πώς θέλει να είναι η απάντηση QBE1: Βρες τα ονόµατα των Υπαλλήλων στο Τµήµα 4 EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P. x 4 Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.116

QBE ΣΥΝΟΨΗ Οι Αρχές της Γλώσσας Ο χρήστης δεν απαιτείται να θυµάται τα ονόµατα των γνωρισµάτων και των σχέσεων Στην διατύπωση της ερωταπόκρισης, δεν απαιτείται να τηρούνται ανελαστικοί κανόνες Στηρίζεται στον σχεσιακό λογισµό πλειάδων (µεταβλητές είναι οι στήλες) Σχεσιακά πλήρης διατύπωση, και κάτι παραπάνω, µια και εκφράζεται και transitive closure Πως Λειτουργεί Σύµβολα µε _ να προηγείται, είναι ΜΕΤΑΒΛΗΤΕΣ Σύµβολα χωρίς _ να προηγείται είναι ΣΤΑΘΕΡΕΣ ΤΙΜΕΣ (υποδηλώνουν µια συνθήκη για επιλογή - equality selection-condition) Το πρόσηµο P. χρησιµοποιείται για να υποδειχθεί ποια γνωρίσµατα θα τυπωθούν (υποδηλώνει µια προβολή - projection) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.117

QBE Σύνοψη Η διαδικασία ιαδικασία ερωταπόκρισης Πρώτα, ο χρήστης διαλέγει τις σχέσεις (πίνακες) που χρειάζεται για το query Παρουσιάζονται τα περιγράµµατα των πινάκων που διαλέχτηκαν Ο χρήστης «πηγαίνει» στις κατάλληλες στήλες (µε ειδικά πλήκτρα) Τιµές-παραδείγµατα (µεταβλητές), σταθερές, κλπ., δακτυλογραφούνται Άλλοι συγκριτικοί τελεστές (πέραν της ισότητας που είναι αυτόµατη για σταθερές τιµές) πρέπει να δακτυλογραφηθούν (όπως, >, <, κλπ.) πιο πολύπλοκες συνθήκες µπαίνουν σε ένα κουτί-συνθηκών (condition box) Συνθήκες στην ίδια σειρά υποδηλώνουν το Boolean AND Συνθήκες σε διαφορετικές σειρές υποδηλώνουν το Boolean OR Η άρνηση (negation - Boolean NOT) προσδιορίζεται µε το σύµβολο Οι Συνενώσεις (JOINS) εκφράζονται µε τη χρήση κοινών παραδειγµατικών τιµών σε πολλαπλούς πίνακες Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.118

QBE Παραδείγµατα (1) QBE2: Βρες τα ονόµατα των Υπαλλήλων που εργάζονται σε ένα Τµήµα που έχει µάνατζερ διαφορετικό από αυτόν µε αριθµό 3334 EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P. x no DEPARTMENT DNumber DName MgrSSN MgrSD no 3334 Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.119

QBE Παραδείγµατα (2) QBE3: Βρες τα ονόµατα των Υπαλλήλων που έχουν µισθό µεγαλύτερο των 300,000 και εργάζονται στο Τµήµα 5 SSN Name BDate Address Sex Salary SupSSN DNumber P. x >300000 5 QBE4: Βρες τα ονόµατα των Υπαλλήλων που έχουν µισθό µεγαλύτερο των 300,000 ή εργάζονται στο Τµήµα 5 SSN Name BDate Address Sex Salary SupSSN DNumber P. x 5 P. y >300000 Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.120

QBE Παραδείγµατα (3) QBE5: Βρες ονόµατα και διευθύνσεις Υπαλλήλων του Τµήµατος 4 που κερδίζουν περισσότερα από κάποιον που εργάζεται στο Τµήµα 5 EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P. tom P. kifis 10 4 20 5 CONDITION BOX 10 > 20 Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.121

QBE Παραδείγµατα (4) QBE6: Βρες τα ονόµατα των Υπαλλήλων που έχουν µισθό µεγαλύτερο από τον µισθό του µάνατζερ του Τµήµατός των EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P. tom 10 6 4444 15 DEPARTMENT DNumber DName MgrSSN MgrSD CONDITION BOX 6 4444 10> 15 Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.122

QBE Παραδείγµατα (5) QBE7: Βρες όλους τους Εξαρτώµενους για Υπαλλήλους που έχουν ένα Εξαρτώµενο γεννηθέντα το 1972 ενώ δεν έχουν κανένα Εξαρτώµενο που γεννήθηκε µετά το 1975 DEPENDENT ESSN Name Sex BDate Relation P. 44 44 1972 44 <1975 Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.123

QBE Παραδείγµατα (6) QBE8: Βρες το άθροισµα των µισθών όλων τον Υπαλλήλων EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P.SUM.ALL. x QBE9: Εισαγωγή ενός νέου Υπαλλήλου EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber I. 6669 thomas 8.2.65 ekali m 60000 9876 4 Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.124

QBE Παραδείγµατα (7) QBE10: ώσε αύξηση µισθού 15% για όλους τους Υπαλλήλους του Τµήµατος 5 EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber 44 s 5 U. 44 s*1.15 Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.125

Μια µατιά στην MS Access Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.126

Κλείνοντας Η QBE είναι µια κοµψή και φιλική προς το χρήστη γλώσσα που βασίζεται στο σχεσιακό λογισµό πεδίου Είναι ιδιαίτερα εκφραστική (σχεσιακά πλήρης, αν και οι ενηµερώσεις ληφθούν υπόψη). Απλές ερωταποκρίσεις είναι εξαιρετικά εύκολο να εκφραστούν στην QBE, µε ένα ελάχιστο συντακτικό που πρέπει κανείς να θυµάται Η QBE Έχει επηρεάσει σε µεγάλο βαθµό τις γραφικές διευκολύνσεις για queries που σήµερα προσφέρονται σε πολλά προϊόντα, περιλαµβανοµένης και της Microsoft Access. Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.127