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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Indexing.
Advertisements

ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΜΑΘΗΜΑ 5.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Σχεσιακός Λογισμός.
Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Εισαγωγή στην SQL ΕΣΔ232 – Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
MySQL + Γλώσσα Προγραμματισμού
Βάσεις Δεδομένων.
Βάσεις Δεδομένων 1 T.Manavis– N.Kyritsis.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Ασφάλεια και Δικαιοδοσία σε Βάσεις Δεδομένων.
 Αυδίκου Χριστίνα  Γιουμούκης Παναγιώτης  Κιντσάκης Θάνος  Πάπιστας Γιάννης.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Μοντέλο Οντοτήτων-Συσχετισμών
PL/SQL.
Ορισμοί Σχεσιακού Μοντέλου και (απλές)Τροποποιήσεις Σχέσεων στην SQL
Βάσεις Δεδομένων (ΚΒΔ)
Αποθηκευμένες Διαδικασίες και Εναύσματα Δρ. Παναγιώτης Συμεωνίδης.
JAVA και SQL Δαμιανός Χατζηαντωνίου
Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων.
ORACLE PL/SQL Cursors Μέρος 1.
ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ ΜΑΘΗΜΑ 3.
Περιεχόμενα Λογικός Σχεδιασμός (Σχεσιακό Μοντέλο) Εισαγωγικά
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis SQL: Ερωτήματα, προγραμματισμός και εναύσματα ΕΣΔ232 – Οργάνωση Δεδομένων.
9 Η Γλώσσα SQL Ορισμός Δεδομένων (data definition)
1.1      Σκοπός των συστημάτων βάσεων δεδομένων
PHP/MYSQL ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΕΠΟΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ ΤΥΡΟΛΟΓΟΥ ΓΛΥΚΕΡΙΑ ΑΜ 875 ΡΙΖΟΥ ΔΕΣΠΟΙΝΑ ΑΜ 816.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Σχεσιακός Λογισμός.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων.
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων  Χειρισμός Δεδομένων.

9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Η Γλώσσα SQL.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακός Λογισμός.
Βασικά στοιχεία της Java
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Σχεσιακός Λογισμός.
Κανονικοποίηση, συναρτησιακές εξαρτήσεις
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2012 Nicolas Tsapatsoulis Το σχεσιακό μοντέλο βάσεων δεδομένων ΕΣΔ232 – Οργάνωση Δεδομένων στη.
Βάσεις Δεδομένων Κεφ. 1 Πλεονεκτήματα Β.Δ. έναντι αρχείων Βασικές λειτουργίες Β.Δ. Εφαρμογές Β.Δ. στην καθημερινή ζωή.
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Βάσεις Δεδομένων Ι 4η διάλεξη
ΤΙΤΛΟΣ ΕΡΓΑΣΙΑΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ανδρέου Βασίλης.
Σχεσιακό Μοντέλο Δεδομένων
Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Αρχιτεκτονική Συστημάτων
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Βάσεις Δεδομένων Ι Εισαγωγή
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Έλεγχος λογισμικού Ποιότητα Λογισμικού Black Box testing
Βάσεις Δεδομένων Ι Επανάληψη
Java DataBase Connectivity
Βάσεις Δεδομένων Ενότητα 3: Σχεσιακή Άλγεβρα Βασίλης Βουτσινάς
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι να κατανοήσουμε την έννοια της όψης της γλώσσας SQL. Χ. Σκουρλάς.
Αρχιτεκτονική Συστημάτων
Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL
Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Βάσεις Δεδομένων και web-based Εφαρμογές
Αρχιτεκτονική Συστημάτων
Ερωτήματα Επιλογής σε ACCESS
Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Ενότητα # 5: Περιορισμοί ακεραιότητας
Μεταγράφημα παρουσίασης:

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

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL195 SQL Data Definition n H Γλώσσα Ορισμού (DDL) της SQL χρησιμοποιείται για CREATE, DROP και ALTER τις περιγραφές των Σχέσεων στη Βάση Δεδομένων CREATE TABLE DEPARTMENT ( DNumberinteger keymember 0not null, DNamevarchar(12) keymember 1not null, MgrSSNchar(9) references EMPLOYEE.SSN, MgrSDchar(9) ); n Σε μερικά (παλαιότερα) SQL συστήματα, δεν υπάρχει υποστήριξη για REFERENCES (foreign key) και KEYMEMBER (key)

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

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

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

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

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL200 Σχεσιακές Όψεις – Ορισμός (2) CREATE VIEW table_name [ ( view_column_list ) ] AS query_expression [ WITH CHECK OPTION ] n 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 ;

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL201 Σχεσιακές Όψεις - Παραδείγματα n Όταν το view_column_list λείπει, τα γνωρίσματα της ΟΨΗΣ κληρονομούνται από τα Γνωρίσματα της ορίζουσας Σχέσης n V2: Υπάλληλοι με υψηλούς μισθούς CREATE VIEW BIGSHARKS ASselect * fromEMPLOYEE whereSalary > and BirthDate > ; –Ο χρήστης δύναται να κάνει ερωτήσεις άμεσα σε αυτή τη νέα Σχέση που λέγεται BIGSHARKS, και η οποία έχει ακριβώς τα ίδια Γνωρίσματα με τη Σχέση EMPLOYEE

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL202 Σχεσιακές Όψεις – Παραδείγματα (2) n Μια Όψη είναι δυνατόν να έχει διαφορετικά γνωρίσματα (νέα) από το Εννοιολογικό Σχήμα n V3: Πληροφορίες για Τμήματα (μέσος μισθός, κλπ.) CREATE VIEW DEPTINFO (Name, NoOfEmpl, AvgSalary) ASselectDName, COUNT(*), AVG(Salary) fromDEPARTMENT d, EMPLOYEE e whered.DNumber = e.DNumber group by DName ;

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL203 Σχεσιακές Όψεις – Παραδείγματα (3) n V4: Βρες τον αριθμό των υπαλλήλων και τον μέσο μισθό (παρουσίασε και το όνομα τμήματος) select* fromDEPTINFO whereName = “research” n V5: Αύξησε κατά 1 τον αριθμό των Υπαλλήλων στο Τμήμα Έρευνας –Αυτή η ενημέρωση ΔΕΝ επιτρέπεται (Γιατί ?)

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

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL205 Σχεσιακές Όψεις – Παραδείγματα Εκτέλεσης n Για παράδειγμα, το query στην Όψη BIGSHARKS: selectName, Address fromBIGSHARKS whereDNumber = 5 Τροποποιείται ανάλογα και το παρακάτω query εκτελείται: selectName, Address fromEMPLOYEE whereSalary > and BirthDate > and DNumber = 5

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

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

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

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

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

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

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

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

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL214 Ο Cursor που παίρνει ονόματα ναυτικών που έχουν κρατήσει ένα κόκκινο σκάφος, σε αλφαβητική σειρά n 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; n Δεν επιτρέπεται να αντικατασταθεί S.sname από το, ας πούμε, S.sid στην ORDER BY πρόταση! (Γιατί ?)

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL215 Εμφύτευση της SQL σε C -- Παράδειγμα char SQLSTATE[6]; EXEC SQL BEGIN DECLARE SECTION char c_sname[20]; short c_minrating; float c_age; EXEC SQL END DECLARE SECTION c_minrating = random(); EXEC SQL DECLARE sinfo CURSOR FOR SELECT S.sname, S.ageFROM Sailors S WHERE S.rating > :c_minrating ORDER BY S.sname; do { EXEC SQL FETCH sinfo INTO :c_sname, :c_age; printf(“%s is %d years old\n”, c_sname, c_age); } while (SQLSTATE != ‘02000’); EXEC SQL CLOSE sinfo;

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

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL217 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 ()); }

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL218 Disadvantages of having Host Programming Languages n Mixing Procedural and Declarative languages (the famous language mismatch problem) n Different pre-processors are required for different languages n Relations are not treated as 1st class objects in the language (e.g., cannot pass a relation as a parameter to a procedure) n The host language may not support required constructs (e.g., FORTRAN does not support records) n The alternative, that is database programming languages are gaining ground, especially in object-oriented DBMSs

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

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL220 Query-by-Example (QBE) n Μια Γλώσσα για ερωταποκρίσεις που αναπτύχθηκε στην IBM (από τον Moshe Zloof) και παρουσιάζεται σε ένα προϊόν (QMF) (που είναι εναλλακτικός τρόπος διεπαφής για το DB2) n Ευκολότερη από την SQL για τον μέσο χρήστη (ΟΠΤΙΚΗ και ΔΙΣΔΙΑΣΤΑΤΗ) n ΚΕΝΤΡΙΚΗ ΙΔΕΑ: Το Σύστημα παρέχει στον χρήστη τη δυνατότητα να δει το περίγραμμα των Σχέσεων στη Βάση και ο Χρήστης συμπληρώνει τους πίνακες δίνοντας παραδείγματα για το πώς θέλει να είναι η απάντηση n QBE1: Βρες τα ονόματα των Υπαλλήλων στο Τμήμα 4 EMPLOYEE

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

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

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL223 QBE – Παραδείγματα (1) QBE2 : Βρες τα ονόματα των Υπαλλήλων που εργάζονται σε ένα Τμήμα που έχει μάνατζερ διαφορετικό από αυτόν με αριθμό 3334 EMPLOYEE DEPARTMENT

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL224 QBE – Παραδείγματα (2) n QBE3: Βρες τα ονόματα των Υπαλλήλων που έχουν μισθό μεγαλύτερο των 300,000 και εργάζονται στο Τμήμα 5 n QBE4: Βρες τα ονόματα των Υπαλλήλων που έχουν μισθό μεγαλύτερο των 300,000 ή εργάζονται στο Τμήμα 5

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL225 QBE – Παραδείγματα (3) n QBE5: Βρες ονόματα και διευθύνσεις Υπαλλήλων του Τμήματος 4 που κερδίζουν περισσότερα από κάποιον που εργάζεται στο Τμήμα 5 EMPLOYEE CONDITION BOX __10 > __20

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL226 QBE – Παραδείγματα (4) n QBE6: Βρες τα ονόματα των Υπαλλήλων που έχουν μισθό μεγαλύτερο από τον μισθό του μάνατζερ του Τμήματός των __10>__15 CONDITION BOX DEPARTMENT EMPLOYEE

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL227 QBE – Παραδείγματα (5) n QBE7: Βρες όλους τους Εξαρτώμενους για Υπαλλήλους που έχουν ένα Εξαρτώμενο γεννηθέντα το 1972 ενώ δεν έχουν κανένα Εξαρτώμενο που γεννήθηκε μετά το 1975 DEPENDENT P. 

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL228 QBE – Παραδείγματα (6) n QBE8: Βρες το άθροισμα των μισθών όλων τον Υπαλλήλων EMPLOYEE n QBE9: Εισαγωγή ενός νέου Υπαλλήλου EMPLOYEE I.

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL229 QBE – Παραδείγματα (7) n QBE10: Δώσε αύξηση μισθού 15% για όλους τους Υπαλλήλους του Τμήματος 5 EMPLOYEE U.

Ι.Β. – Σχεσιακές Γλώσσες – Εμφύτευση / DDL230 Μια ματιά στην MS Access

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