Υπολογιστικά Συστήματα Βάσεις Δεδομένων Διδάσκοντες: Δρ. Ευγενία Αδαμοπούλου, Δρ. Κώστας Δεμέστιχας ΔΠΜΣ «Τεχνο- Οικονομικά Συστήματα» Τεχνολογία Πληροφορίας και Τηλεπικοινωνιών
Ιστοσελίδα Μαθήματος 2 http://people.cn.ntua.gr/jenny/index.php/courses e-mail επικοινωνίας: eadam@cn.ntua.gr cdemest@cn.ntua.gr
Προτεινόμενη Βιβλιογραφία 3 A. Silberschatz, H. Korth και S. Sudarsham, Database System Concepts (Συστήματα Βάσεων Δεδομένων), 4 η έκδοση ή ανώτερη Για τη σύνταξη εντολών SQL μπορείτε να συμβουλεύεστε: http://www.w3schools.com/sql/default.asp
Σύστημα Διαχείρισης Βάσης Δεδομένων 4 Σύστημα Διαχείρισης Βάσης Δεδομένων (Database Management System DBMS) ένα σύστημα που επιτρέπει την αποτελεσματική και βολική αποθήκευση δεδομένων που σχετίζονται μεταξύ τους καθώς και την πρόσβαση σε αυτά Βάση Δεδομένων (ΒΔ) Database (DB): η συλλογή των δεδομένων που σχετίζονται μεταξύ τους Ευρεία χρήση σε Τράπεζες: πληροφορίες συναλλαγών Αεροπορικές εταιρείες: κρατήσεις θέσεων, πληροφορίες πτήσεων Πανεπιστήμια: εγγραφές και βαθμοί φοιτητών Πωλήσεις: πληροφορίες πελατών, προϊόντων, πωλήσεων Συναλλαγές πιστωτικών καρτών: πληροφορίες συναλλαγών, μηνιαίες κινήσεις Τηλεπικοινωνίες: αναλυτικές καταστάσεις κλήσεων, μηνιαίες χρεώσεις, πληροφορίες θέσης, πληροφορίες συνδρομητών Βιομηχανία: πληροφορίες προμηθειών, αποθήκης, παραγγελιών Ανθρώπινοι πόροι: πληροφορίες εργαζομένων, μισθών, φόρων μισθοδοσίας
Τα Μειονεκτήματα των Συστημάτων Αρχείων 5 Όπως είδαμε στο προηγούμενο μάθημα, ένας τρόπος για τη διατήρηση πληροφοριών σε έναν υπολογιστή είναι η αποθήκευσή τους σε αρχεία του Λειτουργικού Συστήματος Πριν την έλευση των DBMS, οι εφαρμογές βάσεων δεδομένων βασίζονταν απευθείας στα συστήματα αρχείων Μειονεκτήματα της απευθείας χρήσης συστημάτων αρχείων για την αποθήκευση και διαχείριση δεδομένων Πλεονασμός και ασυνέπεια των δεδομένων n Επανάληψη πληροφορίας σε διαφορετικά αρχεία, συνακόλουθη δυσκολία διατήρησης της συνέπειας των διαφόρων αντιγράφων των ίδιων δεδομένων Δυσχερής πρόσβαση στα δεδομένα n Κάθε φορά που εμφανίζεται μια νέα ανάγκη (π.χ. αναζήτηση με βάση διαφορετικά κριτήρια), πρέπει να γραφεί ένα καινούριο πρόγραμμα που να την καλύπτει Απομόνωση των δεδομένων n Δεδομένα κατανεμημένα σε πολλαπλά αρχεία διαφορετικών τύπων
Τα Μειονεκτήματα των Συστημάτων Αρχείων 6 Μειονεκτήματα συνέχεια Προβλήματα ακεραιότητας των δεδομένων n Δυνατότητα επιβολής περιορισμών στα δεδομένα (π.χ. υπόλοιπο λογαριασμού > 0) μόνο μέσα από τον κώδικα των προγραμμάτων, δυσχεραίνοντας την προσθήκη νέων Προβλήματα ατομικότητας των ενημερώσεων n Παράδειγμα: αν η μεταφορά ενός ποσού από ένα λογαριασμό σε έναν άλλο διακοπεί, τότε πρέπει ή να γίνουν και οι δύο ενέργειες (χρέωση του ενός λογαριασμού και ισόποση πίστωση του άλλου) ή να μην γίνει καμία από τις δύο ενέργειες Προβλήματα ταυτόχρονης πρόσβασης n Παράδειγμα: αν δύο πελάτες προσπαθήσουν ταυτόχρονα να κάνουν ανάληψη από ένα λογαριασμό Προβλήματα ασφάλειας n Δυσκολία παροχής πρόσβασης στους χρήστες σε κάποια αλλά όχι όλα τα δεδομένα à Στα προβλήματα αυτά δίνουν λύσεις τα DBMS
Αφαιρετικότητα Δεδομένων 7 Βασικός σκοπός ενός DBMS είναι να παρέχει στους χρήστες μια αφηρημένη προβολή των δεδομένων, αποκρύπτοντας λεπτομέρειες σχετικά με τον τρόπο αποθήκευσής τους Φυσικό Επίπεδο: περιγράφει πώς αποθηκεύονται τα δεδομένα, δηλ. πολύπλοκες δομές δεδομένων Λογικό Επίπεδο: περιγράφει τι δεδομένα αποθηκεύονται στη βάση και ποιες είναι οι σχέσεις μεταξύ τους Επίπεδο Προβολής: περιγράφει μέρος μόνο μιας ολόκληρης βάσης, ανάλογα με τις ανάγκες και απαιτήσεις του χρήστη (π.χ. μπορεί να υπάρχει μία προβολή που να περιλαμβάνει τους μισθούς των εργαζομένων και μία που να μην τους περιλαμβάνει) view level view 1 view 2 view n logical level physical level
Βασικές Έννοιες 8 Σχήμα ΒΔ (schema): Το γενικό σχέδιο της ΒΔ (μεταβάλλεται σπάνια) Καθορίζει το είδος των δεδομένων που θα διατηρεί η ΒΔ, καθώς και το είδος των σχέσεων μεταξύ τους n Παράδειγμα: η ΒΔ θα διατηρεί το σύνολο των πελατών μιας τράπεζας και το σύνολο των λογαριασμών της, καθώς και τον τρόπο αντιστοίχισης αυτών Στιγμιότυπο ΒΔ (instance): Η συλλογή των δεδομένων που είναι αποθηκευμένα στη ΒΔ κάποια συγκεκριμένη στιγμή Πρόκειται δηλ. για τα περιεχόμενα της ΒΔ μια χρονική στιγμή Μοντέλο δεδομένων (data model): Ένα σύνολο εργαλείων για την περιγραφή των δεδομένων, των σχέσεών τους, της σημασίας τους και των περιορισμών τους Δύο βασικοί τύποι μοντέλων δεδομένων n Σχεσιακό μοντέλο (Relational model) n Μοντέλο οντότητας- σχέσης (Entity-Relationship model E-R model)
Σχεσιακό Μοντέλο 9 Ένα σχεσιακό μοντέλο χρησιμοποιεί μια συλλογή από πίνακες για την αναπαράσταση των δεδομένων και των σχέσεών τους Κάθε πίνακας (ή αλλιώς σχέση relation) αποτελείται από στήλες (ή αλλιώς πεδία ή ιδιότητες attributes) και γραμμές (ή αλλιώς εγγραφές ή πλειάδες tuples) Η σειρά των εγγραφών δεν έχει σημασία Παράδειγμα: Βλ. επόμενη διαφάνεια Βλέπουμε ότι η αντιστοίχιση (συσχέτιση) πελατών με λογαριασμούς γίνεται αποτελεσματικότερα μέσω ενός τρίτου πίνακα (του πίνακα καταθετών)
10
Κλειδιά 11 Ένα υπερ- κλειδί (superkey) είναι ένα σύνολο από μία ή περισσότερες ιδιότητες που προσδιορίζουν μοναδικά κάθε εγγραφή ενός πίνακα Παράδειγμα: Τόσο το σύνολο {customer- id} όσο και το {customer- id, customer- name} αποτελούν υπερ- κλειδιά για τον πίνακα customer Ένα υπερ- κλειδί Κ λέγεται υποψήφιο κλειδί (candidate key) αν είναι το ελάχιστο δυνατό (δηλ. δεν υπάρχει υποσύνολό του που να αποτελεί υπερ- κλειδί) Παράδειγμα: Το σύνολο {customer- id} είναι υποψήφιο κλειδί για τον πίνακα customer Ο σχεδιαστής της ΒΔ διαλέγει ένα υποψήφιο κλειδί για να προσδιορίσει μοναδικά κάθε εγγραφή του πίνακα το υποψήφιο αυτό κλειδί ονομάζεται πρωτεύον κλειδί (primary key PK)
Κλειδιά 12 Το πρωτεύον κλειδί θα πρέπει να επιλέγεται με προσοχή Παραδείγματα: Μπορεί να χρησιμοποιηθεί ως μοναδικό αναγνωριστικό ενός ατόμου... n το ονοματεπώνυμό του? n η διεύθυνσή του? n ο αριθμός κοινωνικής ασφάλισής του? n ο αριθμός φορολογικού μητρώου του? Ξένο κλειδί (foreign key FK): Ένας πίνακας, έστω r f, ενδέχεται να περιλαμβάνει μεταξύ των ιδιοτήτων του και το πρωτεύον κλειδί ενός άλλου πίνακα, έστω r p η ιδιότητα αυτή αποτελεί ένα ξένο κλειδί για τον r f που κάνει αναφορά (δείχνει) στον r p Η σχέση r f καλείται και αναφέρουσα (referencing) σχέση, ενώ η r p καλείται αναφερόμενη (referenced) σχέση
Πεδίο Ορισμού και Σχήμα Σχέσης 13 Το σύνολο επιτρεπτών τιμών μιας ιδιότητας καλείται πεδίο ορισμού (domain) Η ειδική τιμή null θεωρείται μέλος κάθε πεδίου ορισμού και σημαίνει ότι η αντίστοιχη τιμή απουσιάζει ή είναι άγνωστη Ο χειρισμός τιμών null είναι συχνά δύσκολος Έστω ότι A 1, A 2,, A n είναι ιδιότητες Τότε το R = (A 1, A 2,, A n ) ονομάζεται σχήμα σχέσης (relation schema) Παράδειγμα: customer = (customer- id, customer- name, customer- street, customer- city) ή καλύτερα γράφουμε: customer (customer- id, customer- name, customer- street, customer- city)
Γλώσσες ΒΔ 14 Γλώσσα Ορισμού των Δεδομένων Data Definition Language (DDL): καθορίζει το σχήμα της ΒΔ Παράδειγμα: Ορισμός του πίνακα account create table account (account-number char(10), balance integer) n Η εκτέλεση της παραπάνω εντολής δημιουργεί τον πίνακα account, ενώ επίσης ενημερώνει ένα ειδικό σύνολο από πίνακες το οποίο ονομάζεται λεξικό ή κατάλογος δεδομένων και περιέχει μετα- δεδομένα. Γλώσσα Χειρισμού των Δεδομένων Data Manipulation Language DML): επιτρέπει στους χρήστες να ανακαλούν πληροφορίες, εισάγουν νέες, διαγράφουν ή τροποποιούν υπάρχουσες Παράδειγμα: select customer-name from customer where customer-id = 192-83-7465 n Η εκτέλεση της παραπάνω εντολής βρίσκει το όνομα του πελάτη του οποίου ο κωδικός είναι ο 192-83-7465. Τέτοιου είδους εντολές καλούνται και ερωτήματα. Η SQL (Structured Query Language) είναι η πιο διαδεδομένη γλώσσα για ΒΔ (τόσο DDL όσο και DML)
Παράδειγμα Βάσης Δεδομένων 15 STUDENTREGISTRY Name IdNumber Address Semester NumberofFail edexams Adamopoulou 03100121 Polytexneiou 35 7 0 Demestichas 03100100 Katexaki 24 8 1 Papadopoulos 03100203 Papagou 3 7 4 Papadakis 03101122 Kokkinopoulou 15 6 2 Raptis 03100209 Papagou 5 7 1
Παράδειγμα Βάσης Δεδομένων 16 GRADESREGISTRY IdNumber Diktya Arxitektoni ki Sxedio 03100121 1 2 10 03100100 4 5 9 03100203 6 6 03101122 8 3 03100209 7 9 *Στο παράδειγμα, όπου ο πίνακας έχει κενά θεωρούμε ότι υπάρχει η τιμή null
Παράδειγμα SQL Query Επιστροφή όλων των εγγραφών 17 select * from STUDENTREGISTRY; Τι κάνει το παραπάνω query? Απ.: Επιστρέφει όλες τις εγγραφές του πίνακα STUDENTREGISTRY Name IdNumber Address Semester NumberofFail edexams Adamopoulou 03100121 Polytexneiou 35 7 0 Demestichas 03100100 Katexaki 24 8 1 Papadopoulos 03100203 Papagou 3 7 4 Papadakis 03101122 Kokkinopoulou 15 6 2 Raptis 03100209 Papagou 5 7 1
Παράδειγμα SQL Query Επιστροφή εγγραφών με συγκεκριμένα κριτήρια 18 select * from STUDENTREGISTRY where Semester=7; Τι κάνει το παραπάνω query? Απ.: Επιστρέφει όλες τις εγγραφές του πίνακα STUDENTREGISTRY με τους φοιτητές που βρίσκονται στο 7 o εξάμηνο Name IdNumber Address Semester NumberofFail edexams Adamopoulou 03100121 Polytexneiou 35 7 0 Papadopoulos 03100203 Papagou 3 7 4 Raptis 03100209 Papagou 5 7 1
19 Παράδειγμα SQL Query Επιστροφή στήλης με συγκεκριμένα κριτήρια select IdNumber from STUDENTREGISTRY where Semester=7; Τι κάνει το παραπάνω query? Απ.: Επιστρέφει τους αριθμούς μητρώου όλων των φοιτητών που βρίσκονται στο 7 ο εξάμηνο Πώς παίρνουμε τους Α/Μ όλων των φοιτητών που βρίσκονται σε εξάμηνο μικρότερο του 7 ου ; IdNumber 03100121 03100203 03100209
20 Παράδειγμα SQL Query Μέτρηση εγγραφών και χρήση συναρτήσεων select count(*) from STUDENTREGISTRY; Τι κάνει το παραπάνω query? Απ. Επιστρέφει το πλήθος γραμμών του πίνακα STUDENTREGISTRY (δηλ.: 5) select count(*) from STUDENTREGISTRY where Semester > 6 AND Semester < 9; Τι κάνει το παραπάνω query? Απ. Επιστρέφει το πλήθος φοιτητών που βρίσκονται στο 7ο ή στο 8ο εξάμηνο (4) Ομοίως: select count(*) from STUDENTREGISTRY where Semester = 7 OR Semester = 8; Ομοίως: select count(*) from STUDENTREGISTRY where Semester in (7, 8); Άλλες σημαντικές συναρτήσεις (aggregate functions): max(), min(), avg(), sum() Επιστρέφουν μία τιμή που υπολογίζεται βάσει των τιμών μιας στήλης Ερ. Τι κάνει το παρακάτω query? select avg(sxedio) from GRADESREGISTRY;
21 Παράδειγμα SQL Query Ανάκτηση εγγραφών από δύο πίνακες select STUDENTREGISTRY.Name, GRADESREGISTRY.Diktya, GRADESREGISTRY.Sxedio from STUDENTREGISTRY, GRADESREGISTRY where STUDENTREGISTRY.IdNumber = GRADESREGISTRY.IdNumber; ή: select s.name, g.diktya, g.sxedio from STUDENTREGISTRY as s, GRADESREGISTRY as g where s.idnumber = g.idnumber; Τι κάνει το παραπάνω query? Απ. Επιστρέφει τα ονόματα των φοιτητών και τους αντίστοιχους βαθμούς τους στα μαθήματα Δίκτυα και Σχέδιο Εναλλακτικά με χρήση join: select STUDENTREGISTRY.Name, GRADESREGISTRY.Diktya, GRADESREGISTRY.Sxedio from STUDENTREGISTRY join GRADESREGISTRY on STUDENTREGISTRY.IdNumber = GRADESREGISTRY.IdNumber; Name Diktya Sxedio Adamopoulou 1 10 Demestichas 4 9 Papadopoulos 6 Papadakis 8 3 Raptis 7
22 Είδη συνδέσμων (join) Εποπτική παρουσίαση *join σκέτο και inner join είναι συνώνυμα *left/right/full join και left/right/full outer join είναι συνώνυμα, αντίστοιχα
Παράδειγμα SQL Query Οι δύο τρόποι να κάνουμε join 23 Με χρήση join: select table1.this, table2.that, table2.somethingelse from table1 inner join table2 on table1.foreignkey = table2.primarykey where (some other conditions) Με κατάλληλη συνθήκη εντός του where: select table1.this, table2.that, table2.somethingelse from table1, table2 where table1.foreignkey = table2.primarykey AND (some other conditions)
24 Παράδειγμα SQL Query Επιλογή εξ αποτελέσματος άλλου query select Name from (select s.name, g.diktya from STUDENTREGISTRY as s, GRADESREGISTRY as g where s.idnumber = g.idnumber) where Diktya < 5; Τι κάνει το παραπάνω query? Απ. Επιστρέφει τα ονόματα των φοιτητών που έχουν βαθμό μικρότερο του 5 στο μάθημα Δίκτυα Name Demestichas
25 Παράδειγμα SQL Query Επιστροφή ταξινομημένων αποτελεσμάτων select * from STUDENTREGISTRY order by IdNumber; Τι κάνει το παραπάνω query? Απ. Επιστρέφει όλες τις εγγραφές του πίνακα STUDENTREGISTRY ταξινομημένες κατά αύξουσα σειρά του Αριθμού Μητρώου Name IdNumber Address Semester NumberofFail edexams Demestichas 03100100 Katexaki 24 8 1 Adamopoulou 03100121 Polytexneiou 35 7 0 Papadopoulos 03100203 Papagou 3 7 4 Raptis 03100209 Papagou 5 7 1 Papadakis 03101122 Kokkinopoulou 15 6 2
Παράδειγμα SQL Query Χρήση συνάρτησης με ομαδοποίηση αποτελεσμάτων 26 select Semester, sum(numberoffailedexams) as SumOfFailedExams from STUDENTREGISTRY group by Semester; Τι κάνει το παραπάνω query? Απ. Επιστρέφει το άθροισμα των αποτυχημένων εξετάσεων ανά εξάμηνο Semester SumOfFailedEx ams 8 1 7 5 6 2
Παράδειγμα SQL Query Απαλοιφή διπλότυπων 27 select distinct Semester from STUDENTREGISTRY; Τι κάνει το παραπάνω query? Απ. Επιστρέφει τις τιμές των εξαμήνων χωρίς διπλότυπα Semester 8 7 6
28 Παράδειγμα SQL Query Αναζήτηση με μοτίβο χαρακτήρων select Name from STUDENTREGISTRY where Name LIKE Papa% ; Τι κάνει το παραπάνω query? Απ. Επιστρέφει τα ονόματα των φοιτητών που ξεκινούν με Papa (και ακολουθεί κανένας, ένας ή περισσότεροι χαρακτήρες) Χρησιμοποιήθηκε εδώ το wildcard % για να φτιαχτεί το μοτίβο (pattern) που θέλουμε να αναζητήσουμε Επίσης, συχνά χρησιμοποιείται και το wildcard _ για να υποδηλώσει έναν ακριβώς χαρακτήρα (π.χ. το Papadak_s θα επέστρεφε και το Papadakis αλλά και το Papadakos, αν υπήρχε) Τι αποτέλεσμα θα είχε η ακόλουθη εντολή; n select Name from STUDENTREGISTRY where Name LIKE %apad% ; Name Papadopoulos Papadakis
Παράδειγμα SQL Query Γενική σύνταξη 29 Παράδειγμα 1: select attr 1, attr 2,, attr j,, attr n into table_results from table1 where condition1 AND OR condition2 order by table1.attr j asc desc; Παράδειγμα 2: select attr 1, aggregate_function(attr 2 ) as myvalue into table_results from table1 where condition1 AND OR condition2 group by attr 1 order by myvalue asc desc;
30 Παράδειγμα SQL Query Τροποποίηση εγγραφών πίνακα update STUDENTREGISTRY set Address = Amarousiou 32 where Name = Raptis ; Τι κάνει το παραπάνω query? Απ. Αλλάζει τη διεύθυνση του φοιτητή Ράπτη Ερ. Τι θα γινόταν αν ξεχνούσαμε το where Name = Raptis ; Name IdNumber Address Semester NumberofFail edexams Adamopoulou 03100121 Polytexneiou 35 7 0 Demestichas 03100100 Katexaki 24 8 1 Papadopoulos 03100203 Papagou 3 7 4 Papadakis 03101122 Kokkinopoulou 15 6 2 Raptis 03100209 Amarousiou 32 7 1
31 Παράδειγμα SQL Query Διαγραφή εγγραφών πίνακα delete from STUDENTREGISTRY where Name = Raptis ; Τι κάνει το παραπάνω query? Απ. Διαγράφει το φοιτητή Ράπτη Ερ. Τι θα γινόταν αν ξεχνούσαμε το where Name = Raptis ; Name IdNumber Address Semester NumberofFail edexams Adamopoulou 03100121 Polytexneiou 35 7 0 Demestichas 03100100 Katexaki 24 8 1 Papadopoulos 03100203 Papagou 3 7 4 Papadakis 03101122 Kokkinopoulou 15 6 2
32 Παράδειγμα SQL Query Εισαγωγή νέων εγγραφών σε πίνακα insert into STUDENTREGISTRY values ( Raptis, 031000209, Amarousiou 32, 7, 1); Τι κάνει το παραπάνω query? Απ. Εισάγει το φοιτητή Ράπτη μαζί με τα στοιχεία του (θεωρούμε ότι ο Ράπτης είχε διαγραφεί μέσω του προηγούμενου query) Name IdNumber Address Semester NumberofFail edexams Adamopoulou 03100121 Polytexneiou 35 7 0 Demestichas 03100100 Katexaki 24 8 1 Papadopoulos 03100203 Papagou 3 7 4 Papadakis 03101122 Kokkinopoulou 15 6 2 Raptis 03100209 Amarousiou 32 7 1
Δομή ΒΔ 33 Δύο βασικά συστατικά Διαχειριστής αποθήκευσης (storage manager) Επεξεργαστής ερωτημάτων (query processor)
Διαχειριστής Αποθήκευσης 34 Υπεύθυνος για την αποτελεσματική αποθήκευση, ανάκληση και ενημέρωση δεδομένων Συστατικά του διαχειριστή αποθήκευσης Διαχειριστής ελέγχου ταυτότητας και ακεραιότητας Διαχειριστής συναλλαγών n συναλλαγή (transaction) είναι ένα σύνολο ενεργειών επί της ΒΔ οι οποίες πρέπει να εκτελεστούν σαν μια ενιαία λειτουργία Διαχειριστής αρχείων n υπεύθυνος για τη δέσμευση του χώρου στο δίσκο και τις δομές δεδομένων που χρησιμοποιούνται για την αποθήκευση πληροφοριών Διαχειριστής buffer n υπεύθυνος για την τροφοδοσία των δεδομένων από το δίσκο στην κύρια μνήμη Χειρίζεται τις εξής δομές δεδομένων Αρχεία δεδομένων Λεξικό δεδομένων Ευρετήρια
Επεξεργαστής Ερωτημάτων 35 Βασικά στάδια επεξεργασίας ερωτήματος 1. Επεξεργασία και μετάφραση (Parsing and translation) 2. Βελτιστοποίηση (Optimization) 3. Υπολογισμός (Evaluation) Βασικά συστατικά DDL interpreter (διερμηνευτής) DML compiler (μεταγλωττιστής) Query evaluation engine (Μηχανή υπολογισμού ερωτημάτων) query query output parser and translator evaluation engine relational-algebra expression optimizer execution plan data statistics about data
36 Γενική Δομή DBMS
Διαχείριση Συναλλαγών 37 Μια συναλλαγή (transaction) αποτελείται από μια σειρά από εντολές ερωτημάτων ή/και ενημερώσεων που πρέπει να εκτελεστεί αδιαίρετα Μια συναλλαγή τερματίζει με μία από τις δύο κάτωθι εντολές commit (ολοκλήρωση), μέσω της οποίας γίνονται μόνιμες οι ενημερώσεις που εκτελεί η συναλλαγή στη ΒΔ rollback (αναίρεση), μέσω της οποίας ακυρώνονται όλες οι ενημερώσεις που έγιναν από τις SQL εντολές της συναλλαγής Σε πολλές ΒΔ, κάθε SQL εντολή θεωρείται εξ ορισμού μία συναλλαγή από μόνη της και γίνεται commit μόλις εκτελεστεί Αυτό το αυτόματο commit το απενεργοποιεί ο προγραμματιστής εάν επιθυμεί να ορίσει μια συναλλαγή που αποτελείται από SQL εντολές
Διαχείριση Συναλλαγών 38 Οι συναλλαγές απαιτείται να έχουν ιδιότητες ACID (Atomicity, Consistency, Isolation, Durability) Ατομικότητα (Atomicity): διασφαλίζει ότι ή όλες οι επιπτώσεις μιας συναλλαγής θα εμφανιστούν στη ΒΔ ή καμία δε θα εμφανιστεί Συνέπεια (Consistency): διασφαλίζει ότι η εκτέλεση μιας συναλλαγής σε μια συνεπή ΒΔ αφήνει σε συνεπή κατάσταση τη ΒΔ Απομόνωση (Isolation): διασφαλίζει ότι η ταυτόχρονη εκτέλεση συναλλαγών απομονώνει τη μία συναλλαγή από την άλλη Αντοχή (Durability): διασφαλίζει ότι, αφού ολοκληρωθεί επιτυχώς μια συναλλαγή, οι ενημερώσεις αυτής δε χάνονται, ακόμα και αν το σύστημα χαλάσει
Τυπική Αρχιτεκτονική Εφαρμογών ΒΔ 39 user client user application application client network network database system server application server database system (a) Two-tier architecture (b) Three-tier architecture
40 Ευχαριστώ για την προσοχή σας!
41 Παράρτημα Α4
Μοντέλο E- R Απλό παράδειγμα 42 Το μοντέλο οντότητας- σχέσης (μοντέλο E-R) είναι ένα υψηλού επιπέδου μοντέλο δεδομένων το οποίο βασίζεται στην αντίληψη του πραγματικού κόσμου, και αποτελείται από μια συλλογή βασικών αντικειμένων, που ονομάζονται οντότητες, και από τις σχέσεις μεταξύ αυτών των αντικειμένων Τα σύνολα οντοτήτων αναπαριστώνται με ορθογώνια Τα σύνολα σχέσεων αναπαριστώνται με ρόμβους Γραμμές συνδέουν σύνολα οντοτήτων με σύνολα σχέσεων instructor student ID name salary 0..* advisor 1..1 ID name tot_cred
Μοντέλο E- R Πολύπλοκο παράδειγμα 43 time_slot course student ID name salary ID name tot_cred course_id title credits time_slot_id { day start_time end_time } course_id prereq_id advisor teaches takes sec_course sec_time_slot grade prereq inst_dept stud_dept instructor department dept_name building budget section sec_id semester year course_dept sec_class classroom building room_number capacity
Συμβολισμοί στα διαγράμματα E- R 44 E R R entity set relationship set identifying relationship set for weak entity set E A1 A2 A2.1 A2.2 {A3} A4() E A1 a ributes: simple (A1), composite (A2) and multivalued (A3) derived (A4) primary key R E total participation of entity set in relationship E A1 discriminating a ribute of weak entity set R many-to-many relationship R many-to-one relationship R one-to-one relationship R l..h E cardinality limits R rolename E role indicator E2 E1 E3 ISA: generalization or specialization E1 total total (disjoint) generalization E1 disjoint generalization E2 E3 E2 E3
Αντιστοιχία συμβολισμών μεταξύ διαγραμμάτων ER και UML διαγραμμάτων κλάσεων 45 ER Diagram Notation E entity with E a ributes (simple, A1 A1 composite, M1() multivalued, derived) +M1() Equivalent in UML class with simple a ributes and methods (a ribute prefixes: + = public, = private, # = protected) E1 role1 role2 R E2 binary relationship E1 role1 R role2 E2 E1 A1 role1 role2 R E2 relationship a ributes E1 R A1 role1 role2 E2 E1 0.. * 0..1 cardinality 0..1 R 0.. * R E2 E1 constraints E2 E1 R E2 E3 n-ary relationships E1 R E2 E3 E2 E1 E3 overlapping generalization E2 E1 E3 overlapping E2 E1 E3 disjoint generalization E2 E1 disjoint E3
Σχεσιακή Άλγεβρα 46 Also: Symbol (Name) Example of Use salary>=85000 (instructor) (Selection) Return rows of the input relation that satisfy the predicate. ID,salary (instructor) (Projection) Output specified attributes from all rows of the input relation. Remove duplicate tuples from the output. instructor department (Natural join) Output pairs of rows from the two input relations that have the same value on all attributes that have the same name. instructor department (Cartesian product) Output all pairs of rows from the two input relations (regardless of whether or not they have the same values on common attributes) name (instructor) name (student) (Union) Output the union of tuples from the two input relations. The expression ρ x (E) returns the result of E under the name x The expression ρ x(a1, A2,, An) (E) returns the result of E under the name x, and with the attributes renamed to A 1, A 2,, A n
Αντικειμενοστραφείς Βάσεις Δεδομένων 47 Όταν τα υπό διαχείριση δεδομένα είναι περίπλοκα και σύνθετα, το σχεσιακό (relational) μοντέλο μπορεί να αποδειχτεί ανεπαρκές Το αντικειμενοστραφές (object-oriented) μοντέλο δεδομένων, το οποίο βασίζεται στις αρχές του αντικειμενοστραφούς προγραμματισμού (όπως ενθυλάκωση, πολυμορφισμός, κληρονομικότητα, κλάσεις αντικειμένων), μπορεί να συνιστά κατάλληλη λύση σε τέτοιες περιπτώσεις Ένα αντικειμενοστραφές DBMS πρέπει να είναι σε θέση να αποθηκεύει αντικείμενα σαν αυτά που υποστηρίζονται από την επιλεγείσα αντικειμενοστραφή γλώσσα προγραμματισμού Τέτοιου είδους αντικείμενα καλούνται μόνιμα (persistent), δηλ. δεν εξαφανίζονται μόλις τερματιστεί το πρόγραμμα, και ανήκουν και αυτά σε κλάσεις Η καταλληλότητα ή μη των αντικειμενοστραφών ΒΔ αποτελεί αντικείμενο διενέξεων και πρέπει να κρίνεται κατά περίσταση Για μια αντιμετώπιση του θέματος, βλ. π.χ.: n http://www.25hoursaday.com/whyarentyouusinganoodbms.html