Πρόλογος Μέρος Ι Μια βόλτα στις βάσεις δεδομένων Μια βόλτα στις βάσεις δεδομένων...25

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Πρόλογος Μέρος Ι Μια βόλτα στις βάσεις δεδομένων Μια βόλτα στις βάσεις δεδομένων...25"

Transcript

1 1

2 Περιεχόμενα Πρόλογος Μέρος Ι Μια βόλτα στις βάσεις δεδομένων Μια βόλτα στις βάσεις δεδομένων Η πρώτη βάση δεδομένων Άλλοι τρόποι Απαιτήσεις της εφαρμογής Δημιουργία της βάσης MS Access Ένα βήμα μπροστά: κλειδιά και πρώτη κανονική μορφή Πρωτεύον κλειδί Σύνθετες ιδιότητες οντοτήτων Περισσότεροι τύποι δεδομένων Συμπεράσματα και προοπτικές Περίληψη Ασκήσεις Το σχεσιακό μοντέλο Εισαγωγή στο σχεσιακό μοντέλο Κεντρικές έννοιες του σχεσιακού μοντέλου Ιδιότητες των σχέσεων Μοναδικότητα πλειάδων Διάταξη πλειάδων Διάταξη γνωρισμάτων Ατομικότητα Είδη σχέσεων Η ερμηνεία και το κατηγόρημα μιας σχέσης

3 6 Περιεχόμενα 2.6 Σχέσεις και κλειδιά Υπερκλειδί Σχεσιακή άλγεβρα και βασικές πράξεις Κλειστότητα Ένωση Τομή Διαφορά Γινόμενο...69 Επιλογή Προβολή Σύζευξη...73 Διαίρεση Σύνοψη και συναρτήσεις συνάθροισης Ενημέρωση Σημασιολογική μοντελοποίηση με το μοντέλο Οντοτήτων/Συσχετίσεων Εισαγωγή Οντότητες και ιδιότητες οντοτήτων Κατηγορίες ιδιοτήτων Ακεραιότητα οντοτήτων Συσχετίσεις Περιορισμοί Λόγος πληθικότητας Περιορισμοί συμμετοχής Παραδείγματα περιορισμών Κλειδιά Πρωτεύον κλειδί συσχετίσεων Σχεδιασμός Ποιες οντότητες αναπαριστούν τις έννοιες της βάσης Οντότητες ή ιδιότητες Διαγράμματα Ο/Σ Ασθενείς Οντότητες Μετατροπή του μοντέλου Οντοτήτων/Συσχετίσεων σε σχεσιακό Γενικοί κανόνες μετασχηματισμού Ισχυρές οντότητες Ασθενείς οντότητες Συσχετίσεις

4 Περιεχόμενα Ένα προς ένα Ένα προς πολλά Πολλά προς πολλά Σύνθετες ιδιότητες Πλειότιμες ιδιότητες Κανονικοποίηση Πρώτη κανονική μορφή Συναρτησιακές εξαρτήσεις Γενικά γα τις συναρτησιακές εξαρτήσεις Τετριμμένες συναρτησιακές εξαρτήσεις Εγκλεισμός ή θήκη του συνόλου εξαρτήσεων Ισοδύναμα σύνολα εξαρτήσεων Μη αναγώγιμα (ελάχιστα) σύνολα εξαρτήσεων Δεύτερη κανονική μορφή Τρίτη κανονική μορφή Περιγραφή και ορισμός της τρίτης κανονικής μορφής Ενημέρωση της βάσης με εισαγωγή πλειάδων Ενημέρωση της βάσης με διαγραφή πλειάδων Ενημέρωση της βάσης με τροποποίηση πλειάδων Απόδοση στα ερωτήματα Περίληψη κεφαλαίου ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων Εισαγωγή Η αρχή Το πρότυπο Διάλεκτοι Για την πληρότητα Περιγραφή της βάσης δεδομένων για τα παραδείγματα Απλά ερωτήματα επιλογής Προβολή και περιορισμός, ερωτήματα σε έναν πίνακα Το πιο απλό ερώτημα Συστήματα διαχείρισης και περιβάλλοντα επεξεργασίας ερωτημάτων Επιλογή πεδίων από πίνακα

5 8 Περιεχόμενα 7.2 Μετονομασία πεδίων στο αποτέλεσμα Περιορισμός εγγραφών Συγκρίσεις κειμένου και αλφαριθμητικών Συγκρίσεις με ημερομηνίες Ασκήσεις Πεδία και αλγεβρικές παραστάσεις Παρατήρηση για τον υπολογισμό ποσοστού Ασκήσεις Ταξινόμηση δεδομένων Ασκήσεις Περίληψη κεφαλαίου Επαναληπτικές ασκήσεις Περισσότερα για τα ερωτήματα επιλογής Απαλοιφή διπλοεγγραφών Ασκήσεις Χειρισμός άγνωστων τιμών Ταίριασμα κειμένου και χαρακτήρων Ασκήσεις Οι λογικοί τελεστές Ασκήσεις Ο τελεστής συνόλου Ασκήσεις Ο τελεστής περιοχής τιμών Ασκήσεις Περίληψη κεφαλαίου Επαναληπτικές ασκήσεις Συναρτήσεις συνάθροισης και ερωτήματα ομαδοποίησης ν Συναρτήσεις συνάθροισης Γενικά για τις συναρτήσεις συνάθροισης Υπολογισμός του αθροίσματος Υπολογισμός του μέσου όρου Υπολογισμός της μικρότερης και της μεγαλύτερης τιμής Καταμέτρηση του πλήθους Ομαδοποίηση και συναρτήσεις συνάθροισης Ασκήσεις Περιορισμός εγγραφών σε ερωτήματα ομαδοποίησης με συναρτήσεις συνάθροισης

6 Περιεχόμενα Μια ολοκληρωμένη πρόταση Ασκήσεις Περίληψη κεφαλαίου Επαναληπτικές ασκήσεις Ερωτήματα επιλογής με σύζευξη πινάκων Καρτεσιανό γινόμενο και σύζευξη Ψευδώνυμα πινάκων Ερωτήματα σε πίνακες με συσχέτιση ένα προς πολλά Ασκήσεις Ερωτήματα σε πίνακες με συσχέτιση πολλά προς πολλά Ασκήσεις Εξωτερικές συζεύξεις Οι σχεσιακές πράξεις αφαίρεσης και τομής με τη χρήση εξωτερικών συζεύξεων Ασκήσεις Σύζευξη με περισσότερα από ένα πεδία Αυτοσύζευξη Άλλες (εξωτικές) συζεύξεις Περίληψη κεφαλαίου Επαναληπτικές ασκήσεις Ερωτήματα επιλογής με ομαδοποίηση σε πολλούς πίνακες Γενικά για ερωτήματα σύνοψης σε πολλούς πίνακες Ανάλυση ενός παραδείγματος Ασκήσεις με απαντήσεις Περίληψη κεφαλαίου Επαναληπτικές ασκήσεις Υποερωτήματα Υποερωτήματα Απλά υποερωτήματα Ασκήσεις Ένωση Εύρεση της τομής δύο συνόλων με υποερώτημα Περίληψη κεφαλαίου

7 10 Περιεχόμενα 13 Ενσωματωμένες συναρτήσεις Εισαγωγή Συναρτήσεις για αριθμούς Συναρτήσεις αλφαριθμητικών Συναρτήσεις ημερομηνίας και ώρας Ασκήσεις Ενημέρωση της βάσης δεδομένων Διαγραφή δεδομένων Διαγραφή όλων των δεδομένων Διαγραφή δεδομένων υπό όρους Διαγραφή δεδομένων με υποερωτήματα Ασκήσεις Τροποποίηση δεδομένων Απλές περιπτώσεις Ενημέρωση με βάση την τιμή ενός πεδίου Ενημέρωση σύνθετου κλειδιού: απόψεις και προβλήματα Τροποποίηση δεδομένων με υποερωτήματα Ασκήσεις Εισαγωγή δεδομένων Ένα πρόβλημα με διαδοχική εισαγωγή και διαγραφή Εισαγωγή δεδομένων με υποερώτημα Ασκήσεις Περίληψη κεφαλαίου Η γλώσσα ορισμού δεδομένων Δημιουργία βάσης δεδομένων Δημιουργία πινάκων Η λίστα πεδίων Τύποι δεδομένων Λίστα περιορισμών Ξένα κλειδιά Συσχέτιση πολλά προς πολλά Δείκτες και περιορισμοί μοναδικότητας Πυροδοτήσεις (εναύσματα) για τα ξένα κλειδιά...347

8 Περιεχόμενα Τροποποίηση δομής πίνακα Ασκήσεις με απαντήσεις Επαναληπτικές ασκήσεις Όψεις Εισαγωγικά Πλεονεκτήματα και μειονεκτήματα στη χρήση των όψεων Πλεονεκτήματα της χρήσης όψεων Μειονεκτήματα της χρήσης όψεων Παραδείγματα χρήσης των όψεων Όψεις και ερωτήματα σύζευξης Όψεις με ομαδοποίηση Ενημέρωση όψεων Διαγραφή όψεων Ασφάλεια βάσεων δεδομένων Εκχώρηση δικαιωμάτων σε χρήστες Ανάκληση δικαιωμάτων Κανόνες ασφαλείας στην πράξη Η πικρή χαρά μιας ιστοσελίδας Αποθηκευμένες διαδικασίες Απλό παράδειγμα χωρίς παραμέτρους Απλό παράδειγμα με παραμέτρους Διαδικασίες με πολλές εντολές Ολική συμμετοχή σε συσχέτιση ένα προς πολλά Ασκήσεις Εναύσματα Γενικά για τα εναύσματα Πλεονεκτήματα και μειονεκτήματα της χρήσης εναυσμάτων Πλεονεκτήματα Μειονεκτήματα Εφαρμογές των εναυσμάτων Αλλαγή τιμών Πυροδοτήσεις ακεραιότητας αναφορών

9 12 Περιεχόμενα ΜΕΡΟΣ ΙIΙ Παραδείγματα και εφαρμογές Καταγραφή γεννήσεων σε μια μαιευτική κλινική Το πρόβλημα: περιγραφή και ανάλυση απαιτήσεων Σχεδίαση μοντέλου Οντοτήτων/Συσχετίσων Γενικά Ιδιότητες των οντοτήτων Παιδιά, ιδιότητα ή οντότητα; Μετατροπή σε σχεσιακό μοντέλο Κανονικοποίηση Πίνακες, ερωτήματα, όψεις, και φόρμες Πίνακες MySQL MS Access Ερωτήματα στη βάση μαιευτηρίου Προγραμματισμός της εφαρμογής Γενικά Επεξεργασία πινάκων Ερωτήματα και όψεις Εκθέσεις Φόρμες Ο θρίαμβος του σχεσιακού μοντέλου Συμπεράσματα Βιβλιογραφία Ευρετήριο

10 Κατάλογος Πινάκων 06.1 Περιγραφή (λεξικό δεδομένων) του πίνακα τμημάτων (departments) Περιγραφή (λεξικό δεδομένων) του πίνακα εργαζομένων (employees) Περιγραφή (λεξικό δεδομένων) του πίνακα έργων (projects) Περιγραφή (λεξικό δεδομένων) του πίνακα απασχόλησης (workson) Τελεστές σύγκρισης Αληθείας για AND Αληθείας για OR Οι βασικές συναρτήσεις συνάθροισης Συναρτήσεις για αριθμούς Συναρτήσεις για αλφαριθμητικά Συναρτήσεις για ημερομηνίες και ώρες Βασικοί τύποι δεδομένων Βασικοί τύποι δεδομένων για αριθμούς Βασικοί τύποι δεδομένων για κείμενο και αλφαριθμητικά Βασικοί τύποι δεδομένων για ημερομηνίες και χρόνους Τα εναύσματα συνδέονται πάντα με κάποιον πίνακα της βάσης δεδομένων

11 Κατάλογος Σχημάτων 1.1 Δείγμα της βάσης δεδομένων των φίλων μας σε επεξεργαστή κειμένου Δείγμα της βάσης δεδομένων των φίλων μας σε λογιστικό φύλλο Εύρεση πληροφοριών από τη βάση δεδομένων των φίλων Σχηματική αναπαράσταση των φίλων μας Σύνδεση με το διακομιστή MySQL Δημιουργία πίνακα στο περιβάλλον MySQL Query Browser Δημιουργία πίνακα στο περιβάλλον MS Access Δημιουργία αυτόματης φόρμας Εισαγωγή δεδομένων με αυτόματη φόρμα της MS Access Τοποθέτηση αναγνωριστικού (id) και επικεφαλίδων στον πίνακα των φίλων. Εδώ τον βλέπουμε σε αναπαράσταση λογιστικού φύλλου Εφαρμογή φίλτρου με βάση την Αθήνα στο λογιστικό φύλλο Σχηματική αναπαράσταση των φίλων μας Δημιουργία του πίνακα friends στο περιβάλλον σχεδίασης της MS Access Εισαγωγή εγγραφής σε πίνακα αυτόματης αρίθμησης μέσω μιας φόρμας Διαγραμματική αναπαράσταση των φίλων μας με σύνθετες ιδιότητες ονόματος και διεύθυνσης

12 16 Κατάλογος Σχημάτων 1.16 Σχεδίαση του πίνακα φίλων με σύνθετα γνωρίσματα ονόματος και διεύθυνσης Σχεδίαση ενός απλού ερωτήματος στο περιβάλλον της MS Access Εναλλαγή προβολής σχεδίασης και SQL Αριστερά η μη κανονικοποιημένη σχέση με πολλαπλές τιμές στο γνώρισμα «Παραγγελία». Δεξιά η κανονικοποιημένη σχέση με ατομικές τιμές στο γνώρισμα «Παραγγελία» Η ένωση δύο συνόλων έχει ως μέλη τα στοιχεία είτε του ενός είτε του άλλου συνόλου Η διαφορά δύο συνόλων έχει ως μέλη τα στοιχεία του πρώτου συνόλου που δεν ανήκουν στο δεύτερο σύνολο Ένα απλό παράδειγμα διαγράμματος οντοτήτων/συσχετίσεων υπάλληλοι που εργάζονται σε υποκαταστήματα μιας εταιρείας Ένα απλό παράδειγμα μοντέλου οντοτήτων συσχετίσεων Παράδειγμα συσχέτισης 1: Κάθε δήμος εκλέγει ένα δήμαρχο, και κάθε δήμαρχος διοικεί ένα δήμο. Παράδειγμα συσχέτισης 1: Παράδειγμα συσχέτισης 1: Μητέρες και παιδιά, ένα παράδειγμα συσχέτισης 1:Ν Παράδειγμα συσχέτισης Ν:Ν Το παράδειγμα μιας κάβας κρασιών Το παράδειγμα της κάβας κρασιών: ο παραγωγός ως οντότητα Η κάβα κρασιών: ένας παραγωγός παράγει κρασί που αποτελείται από ποικιλίες. Οι ιδιότητες έχουν παραλειφθεί Υπάλληλοι μιας εταιρείας με πλειότιμη ιδιότητα των ξένων γλωσσών που μιλούν. Οι υπόλοιπες ιδιότητες έχουν απαλειφθεί για λόγους απλότητας

13 Κατάλογος Σχημάτων Το της βάσης company Σύνδεση με το διακομιστή βάσεων δεδομένων (MySQL Database Server) Εκτέλεση ερωτημάτων στο περιβάλλον εργασίας του MySQL Query Browser Το ερώτημα και το αποτέλεσμά του με χρήση του τελεστή AND Το ερώτημα και το αποτέλεσμά του με χρήση του τελεστή OR Διάγραμμα σύνταξης των συναρτήσεων συνάθροισης Τροποποίηση σύνδεσης πινάκων στην MS ACCESS Μερική (χωρίς ιδιότητες) διαγραμματική απεικόνιση της συσχέτισης «μητέρα γεννά παιδί» Σχηματική αναπαράσταση της συσχέτισης μητέρα (M) γεννά (B) παιδί (C) ως συσχέτισης με λόγο πληθικότητας Ν: Μια πιο λεπτομερής έκδοση του διαγράμματος Ο/Σ Μια βελτιωμένη έκδοση του διαγράμματος Ο/Σ, σε σύγκριση με το 20.3: τοποθέτηση πρωτεύοντος και ξένου κλειδιού στο σύνολο οντοτήτων παιδί Η τελική έκδοση του διαγράμματος Ο/Σ, με το παιδί ως ασθενές σύνολο οντοτήτων Εσφαλμένη τοποθέτηση της ημερομηνίας γέννησης ως πλειότιμης ιδιότητας στο σύνολο οντοτήτων μητέρα Τα παιδιά ως πλειότιμη ιδιότητα της οντότητας μητέρα Σχεδίαση του πίνακα children με το εργαλείο MySQL Query Browser

14 18 Κατάλογος Σχημάτων 20.9 Ερώτημα δημιουργίας πίνακα στο περιβάλλον της MS Access Δημιουργία του πίνακα mothers με τη σχεδίαση πινάκων στο περιβάλλον της MS Access Σχεδίαση του πίνακα children στην MS Access. Προσέξτε τον ορισμό του πεδίου αυτόματης αρίθμησης Συσχέτιση πρωτεύοντος και ξένου κλειδιού για την επιβολή περιορισμού Ν: Το παράθυρο Σχέσεις με τη συσχέτιση πρωτεύοντος/ξένου κλειδιού για την επιβολή περιορισμού Ν: Εργασία με ερωτήματα στο περιβάλλον MySQL Query Browser, εδώ εκτέλεση του ερωτήματος «Να βρεθούν όλες οι λεπτομέρειες από τις μητέρες» Δόμηση επιλογών για το πεδίο gender του πίνακα children, στο περιβάλλον Σχεδίασης πινάκων της MS ACCESS Δήλωση περιορισμού για το πεδίο weight του πίνακα children, στο περιβάλλον σχεδίασης πινάκων της MS ACCESS Δήλωση προεπιλεγμένης (DEFAULT) τιμής για το πεδίο birthdate του πίνακα children, στο περιβάλλον σχεδίασης πινάκων της MS ACCESS Επιλογή συναρτήσεων από την εργαλειοθήκη δόμησης εκφράσεων της MS ACCESS Προγραμματισμός του πεδίου adt του πίνακα children ώστε οι τιμές του να αναζητούνται από τη λίστα τιμών του πεδίου adt του πίνακα mothers Προγραμματισμός αναζήτησης τιμών ξένου κλειδιού, στο παράδειγμά μας του αριθμού ταυτότητας της μητέρας, μέσα από μια δεδομένων για το ξένο κλειδί του πίνακα children Αποθήκευση ερωτήματος για τη δημιουργία μιας όψης Αποθήκευση ερωτήματος για τη δημιουργία μιας όψης, εδώ για τα παιδιά, με αύξουσα ταξινόμηση ως προς την ημερομηνία γέννησης Σχεδίαση παραμετρικού ερωτήματος στην MS ACCESS, εδώ ενός ερωτήματος για τα παιδιά μιας μητέρας με βάση τον αριθμό ταυτότητας που πληκτρολογεί ο χρήστης

15 Κατάλογος Σχημάτων Εκτέλεση ενός παραμετρικού ερωτήματος, εδώ για το παράδειγμα αναζήτησης παιδιών με βάση τον αριθμό ταυτότητας της μητέρας Αποτελέσματα της εκτέλεσης του ερωτήματος από το 20.25, με τιμή παραμέτρου ΕΤ Εσωτερική σύζευξη μητέρων και παιδιών, με σχεδίαση του ερωτήματος στο περιβάλλον της MS ACCESS Τα αποτελέσματα του ερωτήματος από το Σχεδίαση ερωτήματος εξωτερικής σύνδεσης στο περιβάλλον της MS ACCESS Αποτέλεσμα ενός ερωτήματος εξωτερικής σύζευξης. Παρατηρήστε ότι μια εγγραφή από τον πίνακα mothers δεν έχει αντίστοιχη εγγραφή στον πίνακα children. Η εγγραφή μπαίνει στο αποτέλεσμα και τα πεδία του πίνακα children συμπληρώνονται με τιμές NULL Πλήθος γεννήσεων ανά μητέρα Τοποθέτηση του αποτελέσματος του ερωτήματος από το σε έκθεση της MS ACCESS Οθόνη προβολής και επεξεργασίας δεδομένων του πίνακα children Διαχείριση όλων των δεδομένων της βάσης μέσα από τη φόρμα mothers Μετασχηματισμός του διαγράμματος από το Το διάγραμμα Ο/Σ μετά τις αλλαγές

16 ΚΕΦΑΛΑΙΟ 10 Ερωτήματα επιλογής με σύζευξη πινάκων Το κεφάλαιο αυτό σας εισάγει στον πραγματικό κόσμο των σχεσιακών βάσεων δεδομένων. Τα ερωτήματα που θα συναντήσετε έχουν πολλούς πίνακες στη φράση FROM, οι οποίοι μπορούν να συνδέονται με πολλούς διαφορετικούς τρόπους. Ο βασικότερος τρόπος, βέβαια, είναι η εσωτερική ή φυσική σύζευξη. Όλες οι γνώσεις που αποκτήσατε στα προηγούμενα κεφάλαια ισχύουν πλήρως, ανεξάρτητα από το γεγονός της χρησιμοποίησης ενός ή περισσότερων πινάκων στη φράση FROM. Αν κατανοήσετε αυτό το κεφάλαιο, θα μπορείτε: Να εκτελείτε ερωτήματα ανάσυρσης (επιλογής) δεδομένων από πολλούς πίνακες. Να εφαρμόζετε κατάλληλες συνδέσεις (JOIN) στους πίνακες. Να εκτελείτε ερωτήματα που αντιστοιχούν στις σχεσιακές πράξεις καρτεσιανού γινομένου, σύζευξης, τομής, διαφοράς, και διαίρεσης. Να γνωρίζετε τις διαφορές και τις ομοιότητες ανάμεσα στους διαφορετικούς τύπους συνδέσεων. Ανοίξτε λοιπόν την καρδιά και το μυαλό σας, και διαβάστε! 233

17 234 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων 10.1 Καρτεσιανό γινόμενο και σύζευξη Ήρθε λοιπόν η στιγμή να μιλήσουμε για τη χρήση πολλών πινάκων στα ερωτήματα επιλογής δεδομένων. Καταρχήν, ας ξεκαθαρίσουμε κάτι πολύ βασικό: ό,τι ισχύει για τα ερωτήματα με έναν πίνακα ισχύει και για τα ερωτήματα με περισσότερους πίνακες. Το μόνο που αλλάζει είναι το γεγονός ότι η φράση FROM ακολουθείται από περισσότερους πίνακες, έτσι υπάρχουν περισσότερα διαθέσιμα πεδία στις άλλες φράσεις, π.χ. στην φράση SELECT. Επομένως, η πιο απλή εντολή SQL που μπορούμε να γράψουμε είναι να τοποθετήσουμε απλώς δύο ονόματα πινάκων μετά τη φράση FROM, τα οποία (όπως και τα πεδία μετά τη φράση SELECT) χωρίζονται με κόμματα. Για παράδειγμα, για να βρούμε όλες τις λεπτομέρειες των τμημάτων(departments) και των υπάλληλων τους (employees) χρησιμοποιούμε την εντολή: departments employees 1 SELECT * 2 FROM departments, employees; 3 4 depid depname manager empid lastname depid Διοίκησης/Επίβλεψης Παπαδοπούλου Οικονομoλόγων/Λογιστών Παπαδοπούλου Επιστημόνων/Μηχανικών Παπαδοπούλου Εξωτερικών συνεργατών Παπαδοπούλου Γραμματείας Παπαδοπούλου Μάνατζμεντ/Πωλήσεων Παπαδοπούλου Διοίκησης/Επίβλεψης Θεοτοκάτου Οικονομoλόγων/Λογιστών Θεοτοκάτου Επιστημόνων/Μηχανικών Θεοτοκάτου Εξωτερικών συνεργατών Θεοτοκάτου Γραμματείας Θεοτοκάτου Μάνατζμεντ/Πωλήσεων Θεοτοκάτου Αυτό είναι ένα ερώτημα ανάκλησης δεδομένων από δύο πίνακες. Για οικονομία χώρου, δεν εμφανίζονται όλα τα πεδία από τον πίνακα employees. Επιστρέφονται όλες οι εγγραφές των δύο πινάκων, χωρίς να γίνει κανένας έλεγχος για το ταίριασμα εγγραφών. Το αποτέλεσμα είναι γνωστό ως καρτεσιανό γινόμενο των πινάκων

18 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων 235 employees και departments, και επιστρέφει στο αποτέλεσμα όλους τους πιθανούς συνδυασμούς εγγραφών μεταξύ των δύο πινάκων: κάθε εγγραφή του ενός πίνακα εμφανίζεται τόσες φορές όσες είναι και οι εγγραφές του άλλου πίνακα. Για παράδειγμα, παρατηρήστε ότι η κ. Παπαδοπούλου εμφανίζεται 6 φορές στο αποτέλεσμα, μία για κάθε ξεχωριστό τμήμα. Το ίδιο συμβαίνει και για την κ. Θεοτοκάτου, όπως και για όλους τους άλλους υπαλλήλους: φαίνονται να εργάζονται σε όλα τα τμήματα! Επίσης, αν το δει κανείς από τη σκοπιά του τμήματος, θα διαπιστώσει κάτι αντίστοιχο: σε κάθε τμήμα φαίνεται να απασχολούνται όλοι οι υπάλληλοι! Το καρτεσιανό γινόμενο παράγει όλους τους πιθανούς συνδυασμούς. Με άλλα λόγια, αν οι δύο πίνακες έχουν N και M εγγραφές αντίστοιχα, το αποτέλεσμα του ερωτήματος έχει N*M εγγραφές. Το αποτέλεσμα αυτό, ως τελικό αποτέλεσμα και όχι ως πιθανό ενδιάμεσο αποτέλεσμα, φυσιολογικά δεν θα πρέπει να σας ικανοποιεί. Το αποτέλεσμα περιέχει τόσο το πεδίο employees.depid, όσο και το departments.depid. Παρατηρήστε ότι δεν υπάρχει αντιστοιχία, παρά μόνο σε λίγες περιπτώσεις. Αυτό συμβαίνει επειδή υπάρχουν εγγραφές όπου ο κωδικός του τμήματος των υπαλλήλων από τον πίνακα employees δεν είναι ίσος με τον κωδικό του τμήματος από τον πίνακα departments. Είναι γνωστό όμως, από τη σχεδίαση της βάσης δεδομένων, ότι κάτι τέτοιο δεν ισχύει. Αυτό που συμβαίνει είναι ότι το κάθε τμήμα έχει πολλούς υπαλλήλους, αλλά ο κάθε υπάλληλος εργάζεται σε ένα μόνο τμήμα (συσχέτιση ένα προς πολλά). Όπως μάλλον έχετε ήδη καταλάβει, τα «πραγματικά» δεδομένα αντιστοιχούν σε εκείνες τις εγγραφές όπου ο κωδικός του τμήματος των υπαλλήλων από τον πίνακα employees ταυτίζεται με τον κωδικό του τμήματος από τον πίνακα departments. Πώς μπορούμε να ζητήσουμε να μη συμπεριληφθούν οι μη συσχετιζόμενες εγγραφές στο αποτέλεσμα; Η, για να το πούμε με διαφορετικά λόγια, πως είναι δυνατόν να συμπεριλάβουμε στο αποτέλεσμα μόνο τις συσχετιζόμενες εγγραφές και να αποκλείσουμε όλες τις άλλες; Με τη φράση WHERE. Για να απαντήσουμε λοιπόν στην ερώτηση εύρεσης όλων των λεπτομερειών από τους πίνακες employees και departments, θα πρέπει να γράψουμε: σ departments.depid = employees.depid (departments employees) 1 SELECT * 2 FROM departments, employees; 3 WHERE departments.depid = employees.depid;

19 236 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων 4 depid depname manager empid lastname depid Οικονομoλόγων/Λογιστών Παπαδοπούλου Γραμματείας Θεοτοκάτου Επιστημόνων/Μηχανικών Περρής Διοίκησης/Επίβλεψης Αθανασίου Επιστημόνων/Μηχανικών Βίσκας Μάνατζμεντ/Πωλήσεων Αγγελίνας Επιστημόνων/Μηχανικών Βλάσσης Οικονομoλόγων/Λογιστών Αρβανιτάκης Επιστημόνων/Μηχανικών Παύλου Μάνατζμεντ/Πωλήσεων Πετράκης Το οποίο αντιστοιχεί στη σχεσιακή πράξη της φυσικής σύζευξης: departments employees Αυτό είναι το πρώτο σας ερώτημα που ανασύρει δεδομένα από δύο πίνακες κάνοντας χρήση της σύζευξης θ. Έτσι λοιπόν, η τοποθέτηση δύο πινάκων στη φράση FROM, σε συνδυασμό με τη φράση WHERE όπου τοποθετείται το κριτήριο συσχέτισης εγγραφών ανάμεσα στους δύο πίνακες, κάνει δυνατή την απαλοιφή των μη συσχετιζόμενων εγγραφών από το καρτεσιανό γινόμενο: το αποτέλεσμα είναι η σύζευξη των δύο πινάκων. Παρατηρήστε ότι οι τιμές στο πεδίο depid τόσο του πίνακα departments όσο και του πίνακα employees (1 η και 6 η στήλη, αντίστοιχα) ταυτίζονται. Κατά το πρότυπο SQL1, η σύζευξη ανάμεσα σε πίνακες γίνεται με τη χρήση της φράσης WHERE: εκεί δηλώνουμε την παράσταση με βάση των οποία θα γίνει η σύζευξη. Συνήθως αυτή περιλαμβάνει μια συνθήκη ισότητας (ταύτισης) ανάμεσα σε τιμές πεδίων, και έτσι αναφέρεται ως ισοσύζευξη (equi-join). Για παράδειγμα: 1 SELECT * 2 FROM departments, employees; 3 WHERE departments.depid = employees.depid; ενώ το πρότυπο SQL2 1 χρησιμοποιεί ένα νέο τρόπο σύνταξης και η σύζευξη γράφεται ολόκληρη στη φράση FROM: 1 Αυτό είναι που κατά κύριο λόγο χρησιμοποιείται σήμερα, η ANSI-SQL92 ή SQL2.

20 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων SELECT * 2 FROM departments INNER JOIN employees 3 ON departments.depid = employees.depid; Αυτός ο τρόπος σύνταξης είναι πιο ευκρινής από τη μέθοδο της SQL1. Δυστυχώς όμως, κάποια εμπορικά προϊόντα (π.χ. η Oracle) δεν τον υποστηρίζουν. Μπορείτε να γράφετε τις συζεύξεις όπως θέλετε, συνιστάται όμως να ακολουθείται το στυλ της SQL2. Στις περισσότερες περιπτώσεις, όπως και σε αυτή, η σύζευξη γίνεται με τη χρήση ενός πρωτεύοντος και ενός ξένου κλειδιού. Για παράδειγμα, στο προηγούμενο ε- ρώτημα το πεδίο departments.depid είναι το πρωτεύον κλειδί του πίνακα departments, και το πεδίο employees.depid είναι το ξένο κλειδί του πίνακα employees. Ωστόσο, από την πλευρά του συντακτικού της SQL, δεν υπάρχει κανένας τέτοιος περιορισμός. Μπορείτε να γράφετε παραστάσεις συζεύξεων με όποια πεδία θέλετε. Αν το ονόματα των πεδίων είναι ίδια, όπως π.χ. depid, μπορείτε να γράψετε τη σύζευξη και ως: 1 SELECT * 2 FROM departments INNER JOIN employees using(depid) η οποία μπορεί να διαβαστεί ως «σύζευξη του πίνακα employees με τον πίνακα departments με βάση το πεδίο depid». Δηλαδή, θέλουμε να γίνει σύνδεση εκείνων των εγγραφών του πίνακα employees με εκείνες τις εγγραφές του πίνακα departments στις οποίες ταυτίζεται η τιμή του κοινού, στους δύο πίνακες, πεδίου depid. Αυτό είναι γνωστό στη σχεσιακή άλγεβρα ως εσωτερική σύζευξη. Τονίζουμε ότι αυτός ο τρόπος γραφής απαιτεί να είναι κοινό (το ίδιο) και στους δύο πίνακες το όνομα του πεδίου με βάση το οποίο γίνεται η σύζευξη. Παρόλο που το αποτέλεσμα, όσον αφορά τις εγγραφές, είναι το ίδιο και με τους τρεις τρόπους: 1. 1 FROM employees, departments 2 WHERE employees.depid = departments.depid; 2. 1 FROM employees INNER JOIN departments 2 ON employees.depid = departments.depid;

21 238 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων 3. 1 FROM employees INNER JOIN departments using(depid) ο τρίτος τρόπος διαφέρει από τους δύο πρώτους όσον αφορά το σχήμα του αποτελέσματος, δηλαδή τα πεδία του αποτελέσματος. Στις δύο πρώτες περιπτώσεις το κοινό πεδίο (depid) θα υπάρχει δύο φορές στο αποτέλεσμα: μία από τον πίνακα departments και μία από τον πίνακα employees. Αντιθέτως, με τον τρίτο τρόπο το πεδίο depid θα υπάρχει στο αποτέλεσμα μόνο μία φορά Ψευδώνυμα πινάκων Όπως με τον τελεστή AS μπορούμε να αλλάξουμε το ονόματα πεδίων στη φράση SELECT, έτσι μπορούμε να κάνουμε το ίδιο και στη φράση FROM: 1 SELECT e.empid, e.lastname, d.depname 2 FROM employees AS e, departments AS d 3 WHERE e.depid = d.depid; 4 5 empid lastname depname Αθανασίου Διοίκησης/Επίβλεψης Μαροπούλου Διοίκησης/Επίβλεψης Ρούσσης Διοίκησης/Επίβλεψης Αλεβιζάτου Οικονομoλόγων/Λογιστών Παπαδοπούλου Οικονομoλόγων/Λογιστών Αρβανιτάκης Οικονομoλόγων/Λογιστών Κρέσπα Οικονομoλόγων/Λογιστών Βλάσσης Επιστημόνων/Μηχανικών Μακρής Επιστημόνων/Μηχανικών Περρής Επιστημόνων/Μηχανικών Στη φράση FROM το AS δεν είναι απαραίτητο και μπορούμε να το παραλείψουμε: 1 SELECT e.empid, e.lastname, d.depname 2 FROM employees e, departments d 3 WHERE e.depid = d.depid;

22 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων 239 Προσοχή, βέβαια, στα κόμματα! Ανάμεσα στο όνομα του πίνακα και στο ψευδώνυμό του δεν υπάρχει κόμμα. Ανάμεσα στους διαφορετικούς πίνακες υπάρχουν κόμματα. Εκτός βέβαια και αν γράψουμε τη φράση με το πρότυπο ANSI-SQL: 1 SELECT e.empid, e.lastname, d.depname 2 FROM employees e INNER JOIN departments d ON e.depid = d.depid; Δεν είναι υποχρεωτικό να ακολουθείται τον έναν ή τον άλλον τρόπο. Πειραματιστείτε με τις διάφορες παραλλαγές, βρείτε το στυλ που σας ταιριάζει, και ακολουθήστε το! 10.3 Ερωτήματα σε πίνακες με συσχέτιση ένα προς πολλά Στο σχεσιακό μοντέλο, δύο πίνακες συσχετίζονται με πληθικότητα ένα προς πολλά μέσω ενός ξένο κλειδιού: στο παράδειγμά μας, ο κωδικός τμήματος από τον πίνακα departments τοποθετείται στον πίνακα employees ως ξένο κλειδί. Έτσι ξέρουμε πως, όταν λέμε ότι ο υπάλληλος με κωδικό 780 εργάζεται στο τμήμα με κωδικό 5 ο οποίος αντιστοιχεί (μέσω του πίνακα departments) στο τμήμα με όνομα «Γραμματεία», εννοούμε ότι ο υπάλληλος αυτός εργάζεται στη Γραμματεία και όχι κάπου αλλού! Αυτό προκύπτει από τη δήλωση το πεδίο depid είναι ξένο κλειδί και προέρχεται από τον πίνακα departments. Επειδή ένα τμήμα μπορεί (σύμφωνα με τη σχεδίαση της βάσης δεδομένων) να έχει πολλούς υπαλλήλους αλλά ο κάθε υπάλληλος εργάζεται σε ένα τμήμα, το σχεσιακό μοντέλο υποδεικνύει ως λύση στην παραπάνω απαίτηση την τοποθέτηση ξένου κλειδιού στον πίνακα employees, το οποίο είναι το πρωτεύον κλειδί του πίνακα departments. Το ότι καμία εγγραφή στον πίνακα employees δεν μπορεί να έχει στο πεδίο depid τιμή που δεν υπάρχει στο πεδίο id του πίνακα departments είναι γνωστό ως κανόνας ακεραιότητας των αναφορών. Τα παραπάνω μας δείχνουν ότι στη σύζευξη ανάμεσα σε δύο πίνακες πρέπει, ε- κτός από να γράφουμε τους δύο πίνακες μετά τη φράση FROM, να συμπληρώνουμε σωστά τον τρόπο σύζευξης. Αυτό που έχουμε δει μέχρι στιγμής ονομάζεται εσωτερική σύζευξη ή ισοσύζευξη, επειδή χρησιμοποιεί τις ταυτιζόμενες τιμές α- νάμεσα σε δύο πεδία δύο διαφορετικών πινάκων για να σχηματίσει το αποτέλεσμα. Αυτή είναι και η πλέον συνηθισμένη περίπτωση, αλλά βέβαια δεν είναι και η

23 240 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων μοναδική. Αργότερα θα μάθουμε και άλλες συζεύξεις και υπάρχουν αρκετές τέτοιες!!! Όπως έχει ήδη ειπωθεί, όλα όσα ξέρετε για τα ερωτήματα ενός πίνακα ισχύουν και εδώ. Η μόνη προσοχή που πρέπει να δώσετε είναι στην περίπτωση πεδίων με ίδιο όνομα και στους δύο πίνακες, οπότε μπορεί να προκύψει σύγχυση. Για το λόγο αυτόν, καθώς και για άλλες παρόμοιες περιπτώσεις όπου μπορεί να προκληθεί σύγχυση ως προς τα ονόματα των πεδίων, η SQL υποστηρίζει τη σύνταξη πίνακας.πεδίο. Με τον τρόπο αυτόν είναι δυνατό να δηλώσουμε με ακρίβεια και σαφήνεια το κάθε συγκεκριμένο πεδίο, οπουδήποτε και αν ανήκει. Ο τρόπος αυτός μπορεί να ακολουθείται πάντα για λόγους ευκρίνειας, ακόμα και αν δεν υπάρχει κίνδυνος να προκληθεί σύγχυση. Έτσι, για να βρούμε τον κωδικό και το επώνυμο όλων των υπαλλήλων, καθώς και το όνομα του τμήματος στο οποίο εργάζονται, θα γράψουμε: Π empid, lastname, depname (departments employees) 1 SELECT employees.empid, employees.lastname, departments.depname 2 FROM employees INNER JOIN departments 3 ON employees.depid = departments.depid; 4 empid lastname depname Παπαδοπούλου Οικονομoλόγων/Λογιστών Θεοτοκάτου Γραμματείας Περρής Επιστημόνων/Μηχανικών Αθανασίου Διοίκησης/Επίβλεψης Βίσκας Επιστημόνων/Μηχανικών Αγγελίνας Μάνατζμεντ/Πωλήσεων Βλάσσης Επιστημόνων/Μηχανικών Αρβανιτάκης Οικονομoλόγων/Λογιστών Παύλου Επιστημόνων/Μηχανικών Πετράκης Μάνατζμεντ/Πωλήσεων ή ισοδύναμα: Π empid, lastname, depname (σ departments.depid = employees.depid (departments employees)) 1 SELECT employees.empid, employees.lastname, departments.depname 2 FROM employees, departments 3 WHERE employees.depid = departments.depid;

24 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων 241 Το κοινό πεδίο depid, με βάση το οποίο γίνεται η σύζευξη, δεν εμφανίζεται στο αποτέλεσμα. Μην ανησυχείτε, δεν είναι καθόλου απαραίτητο κάτι τέτοιο. Ο χρήστης έχει το δικαίωμα το τοποθετήσει όποια και όσα πεδία θέλει μετά τη φράση SELECT, αρκεί τα πεδία να είναι διαθέσιμα από τους πίνακες που υπάρχουν στη φράση FROM. Στο προηγούμενο ερώτημα, παρατηρήστε ότι το όνομα του τμήματος εμφανίζεται πολλές φορές. Το ίδιο θα συνέβαινε και με τον κωδικό του τμήματος, αν υπάρχει η ανάλογη φράση SELECT. Πολλοί ρωτούν στο σημείο αυτό γιατί συμβαίνει κάτι τέτοιο, γιατί δηλαδή πεδία που έχουν μοναδικές τιμές, όπως το depname ή ακόμα το depid του πίνακα departments, χάνουν αυτή την ιδιότητα και εμφανίζονται να παίρνουν πολλές φορές την ίδια τιμή, όπως π.χ. το πεδίο depid του πίνακα employees. Πρέπει να καταλάβετε, στο σημείο αυτό, ότι η σύζευξη του πίνακα departments (με πρωτεύον κλειδί departments.depid) με τον πίνακα employees (με ξένο κλειδί employees.depid) έχει ως αποτέλεσμα την απώλεια της ιδιότητας της μοναδικότητας για το πεδίο departments.depid. Το πεδίο αυτό έχει μοναδικές τιμές, όπως έχει σχεδιαστεί να έχει, σε όλα τα ερωτήματα όπου η φράση FROM περιέχει μόνο τον πίνακα departments. Για παράδειγμα, το ερώτημα: 1 SELECT * 2 FROM departments 3 WHERE depid = 3; 4 5 depid depname manager Επιστημόνων/Μηχανικών 431 θα επιστρέψει μόνο μία φορά το τμήμα με κωδικό 3, όπως βέβαια είναι το σωστό. Ωστόσο, το ερώτημα: 1 SELECT departments.* 2 FROM employees INNER JOIN departments 3 ON employees.depid = departments.depid 4 WHERE departments.depid = 3; 5 6 depid depname manager

25 242 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων 8 3 Επιστημόνων/Μηχανικών Επιστημόνων/Μηχανικών Επιστημόνων/Μηχανικών Επιστημόνων/Μηχανικών Επιστημόνων/Μηχανικών Επιστημόνων/Μηχανικών Επιστημόνων/Μηχανικών 431 θα επιστρέψει 7 εγγραφές. Αυτό συμβαίνει επειδή στον πίνακα employees υπάρχουν 7 εγγραφές με depid=3, οπότε το αποτέλεσμα μετά τη σύζευξη έχει 7 εγγραφές. Προφανώς η ιδιότητα της μοναδικότητας κάθε εγγραφής χάθηκε στο αποτέλεσμα όμως συνεχίζει βέβαια να υπάρχει στον πίνακα departments. Όμως το ερώτημα δεν ζητάει δεδομένα από τον πίνακα departments, αλλά από τον πίνακα που προκύπτει μετά τη σύζευξη του πίνακα departments με τον πίνακα employees. Αυτό είναι που κάνει τη διαφορά! Σε τέτοιες περιπτώσεις όπου ζητούνται δεδομένα στη φράση SELECT από έναν πίνακα ενώ στη φράση FROM υπάρχουν πολλοί πίνακες, τότε πιθανώς να χρειάζεται ο προσδιορισμός DISTINCT: 1 SELECT DISTINCT departments.* 2 FROM employees INNER JOIN departments 3 ON employees.depid = departments.depid 4 WHERE departments.depid = 3; 5 6 depid depname manager Επιστημόνων/Μηχανικών 431 Πότε χρειάζεται το DISTINCT; Όταν σε μια συσχέτιση ένα προς πολλά, όπως στο προηγούμενο παράδειγμα, η φράση SELECT ακολουθείται μόνο από πεδία του πίνακα που φέρει το πρωτεύον κλειδί της συσχέτισης (εδώ το πεδίο departments. depid είναι πρωτεύον κλειδί, ενώ το πεδίο employees.depid έχει το ξένο κλειδί της συσχέτισης), τότε η φράση SELECT πρέπει να συνοδεύεται από τον προσδιορισμό DISTINCT. Αν υπάρχει έστω και ένα πεδίο από τον πίνακα employees μετά τη φράση SELECT, τότε ο προσδιορισμός DISTINCT είναι περιττός. Για παράδειγμα, τα δύο επόμενα ερωτήματα έχουν ακριβώς το ίδιο αποτέλεσμα: Π lastname, depname, salary (σ salary > 1500 (departments employees))

26 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων SELECT DISTINCT e.lastname, d.depname, e.salary 2 FROM employees e INNER JOIN departments d ON e.depid = d.depid 3 WHERE e.salary > 1500; 4 5 lastname depname salary Παπαδοπούλου Οικονομoλόγων/Λογιστών Θεοτοκάτου Γραμματείας Αθανασίου Διοίκησης/Επίβλεψης Αγγελίνας Μάνατζμεντ/Πωλήσεων Μαροπούλου Διοίκησης/Επίβλεψης Ρούσσης Διοίκησης/Επίβλεψης Το ίδιο αποτέλεσμα θα ληφθεί και χωρίς τον προσδιορισμό DISTINCT: 1 SELECT e.lastname, d.depname, e.salary 2 FROM employees e INNER JOIN departments d ON e.depid = d.depid 3 WHERE e.salary > 1500; 4 5 lastname depname salary Παπαδοπούλου Οικονομoλόγων/Λογιστών Θεοτοκάτου Γραμματείας Αθανασίου Διοίκησης/Επίβλεψης Αγγελίνας Μάνατζμεντ/Πωλήσεων Μαροπούλου Διοίκησης/Επίβλεψης Ρούσσης Διοίκησης/Επίβλεψης Ασκήσεις Στις επόμενες ερωτήσεις, όταν λέμε «τμήμα» εννοούμε το όνομα του τμήματος από τον πίνακα departments. Με απαντήσεις 1. Να βρεθούν τα ονόματα, το τμήμα, και ο μισθός όλων των υπαλλήλων. Π firstname, lastname, depname, salary (departments employees)

27 244 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων 1 SELECT e.firstname, e.lastname, d.depname, e.salary 2 FROM employees e INNER JOIN departments d ON e.depid = d.depid; 3 4 firstname lastname depname salary Μαρία Αθανασίου Διοίκησης/Επίβλεψης Κρινιώ Μαροπούλου Διοίκησης/Επίβλεψης Κυριάκος Ρούσσης Διοίκησης/Επίβλεψης Μαρία Αλεβιζάτου Οικονομoλόγων/Λογιστών Δέσποινα Παπαδοπούλου Οικονομoλόγων/Λογιστών Πέτρος Αρβανιτάκης Οικονομoλόγων/Λογιστών Μαριλένα Κρέσπα Οικονομoλόγων/Λογιστών Χρήστος Βλάσσης Επιστημόνων/Μηχανικών Ηλίας Μακρής Επιστημόνων/Μηχανικών Αριστείδης Περρής Επιστημόνων/Μηχανικών Να βρεθούν τα ονόματα, το τμήμα, και ο μισθός όλων των υπαλλήλων με μισθό μεταξύ 1050 και Π firstname, lastname, depname, salary (σ salary 1050 salary 1300 (departments employees)) 1 SELECT e.firstname, e.lastname, d.depname, e.salary 2 FROM employees e INNER JOIN departments d ON e.depid = d.depid 3 WHERE e.salary BETWEEN 1050 AND 1300; 4 5 firstname lastname depname salary Χρήστος Βλάσσης Επιστημόνων/Μηχανικών Αντώνης Παύλου Επιστημόνων/Μηχανικών Μαριλένα Κρέσπα Οικονομoλόγων/Λογιστών Κώστας Παπαδόπουλος Επιστημόνων/Μηχανικών Νίκος Βλάχος Εξωτερικών συνεργατών Περικλής Κιτσάκης Μάνατζμεντ/Πωλήσεων Νικηφόρος Διαμαντίδης Μάνατζμεντ/Πωλήσεων Βασιλική Περδίκη Επιστημόνων/Μηχανικών Να βρεθεί ο κωδικός και το όνομα όλων των υπαλλήλων που απασχολούνται στο έργο με κωδικό 38, με αύξουσα ταξινόμηση ως προς το επώνυμο. Π empid, firstname, lastname (σ proid = 38 (employees workson))

28 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων SELECT e.empid, e.firstname, e.lastname 2 FROM employees e INNER JOIN workson w ON e.empid = w.empid 3 WHERE w.proid = 38 4 ORDER BY e.lastname ASC; 5 6 empid firstname lastname Μαρία Αλεβιζάτου Νικηφόρος Διαμαντίδης Αδαμαντία Θεοτοκάτου Μαριλένα Κρέσπα Κρινιώ Μαροπούλου Δέσποινα Παπαδοπούλου Αθανάσιος Πετράκης Κυριάκος Ρούσσης Βαγγέλης Χριστόπουλος 4. Να βρεθούν τα ονόματα, το όνομα του τμήματος, και ο μισθός όλων των υ- παλλήλων που εργάζονται στα τμήματα με κωδικό 2 ή 4 και έχουν μισθό μεγαλύτερο από Π firstname, lastname, depname, salary (σ( depid = 2 depid = 4) salary > 1200 (departments employees)) 1 SELECT e.firstname, e.lastname, d.depname, e.salary 2 FROM employees e INNER JOIN departments d ON e.depid = d.depid 3 WHERE e.depid IN (2,4) 4 AND e.salary > 1200; 5 6 firstname lastname depname salary Δέσποινα Παπαδοπούλου Οικονομoλόγων/Λογιστών Πέτρος Αρβανιτάκης Οικονομoλόγων/Λογιστών Μαρία Αλεβιζάτου Οικονομoλόγων/Λογιστών Νίκος Στεργιόπουλος Εξωτερικών συνεργατών Να βρεθούν τα ονόματα, το τμήμα, και ο μισθός όλων των υπαλλήλων που εργάζονται στα τμήματα με κωδικό 2 ή 5 και έχουν μισθό μεγαλύτερο από 1200, με φθίνουσα ταξινόμηση ως προς το μισθό. Π firstname, lastname, depname, salary (σ( depid = 2 depid = 5) salary > 1200 (departments employees))

29 246 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων 1 SELECT e.firstname, e.lastname, d.depname, e.salary 2 FROM employees e INNER JOIN departments d ON e.depid = d.depid 3 WHERE e.depid IN (2,5) 4 AND e.salary > ORDER BY e.salary DESC; 6 7 firstname lastname depname salary Δέσποινα Παπαδοπούλου Οικονομoλόγων/Λογιστών Αδαμαντία Θεοτοκάτου Γραμματείας Πέτρος Αρβανιτάκης Οικονομoλόγων/Λογιστών Μαρία Αλεβιζάτου Οικονομoλόγων/Λογιστών Να βρεθούν τα ονόματα των τμημάτων 2 στα οποία έγιναν προσλήψεις μέσα στο Π depname (σ hiredate ' ' hiredate ' ' (departments employees)) 1 SELECT DISTINCT d.depname 2 FROM employees e, departments d 3 WHERE e.depid=d.depid 4 AND e.hiredate BETWEEN ' ' AND ' '; 5 6 depname Μάνατζμεντ/Πωλήσεων 9 Επιστημόνων/Μηχανικών Ή, με τη συνάρτηση YEAR(): 1 SELECT d.name 2 FROM employees e, departments d 3 WHERE e.depid = d.depid 4 AND YEAR(d.hiredate) = 2003; 2 Προσοχή, χρειάζεται το DISTINCT. Γιατί όμως; Επειδή ο πίνακας departments συμμετέχει στη συσχέτιση ένα προς πολλά, υπάρχουν πολλοί υπάλληλοι που ενδεχομένως να έχουν προσληφθεί στο ίδιο τμήμα μέσα στο 2003.

30 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων Να βρεθεί το όνομα και ο μισθός όλων των υπαλλήλων του τμήματος με κωδικό 6 οι οποίοι απασχολούνται στο έργο με κωδικό 14, με φθίνουσα ταξινόμηση ως προς το μισθό. Π firstname, lastname, salary (σ proid = 5 (employees workson)) 1 SELECT e.firstname, e.lastname, e.salary 2 FROM employees e INNER JOIN workson w ON e.empid = w.empid 3 WHERE w.proid = 5 4 ORDER BY e.salary DESC; 5 6 firstname lastname salary Κυριάκος Ρούσσης Μανώλης Βίσκας Αριστείδης Περρής Χρήστος Βλάσσης Να βρεθεί ο κωδικός, η ημερομηνία έναρξης, και ο προϋπολογισμός όλων των έργων στα οποία συμμετέχουν οι υπάλληλοι με κωδικούς 419, 230, και 234, με αύξουσα ταξινόμηση ως προς την ημερομηνία έναρξης των έργων. Π proid, startdate, budget (σ empid =419 empid = 230 empid = 234 (projects workson)) 1 SELECT DISTINCT p.proid, p.startdate, p.budget 2 FROM projects p INNER JOIN workson w ON p.proid = w.proid 3 WHERE w.empid IN (419, 230, 234) 4 ORDER BY p.startdate ASC; 5 6 proid startdate budget

31 248 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων Χωρίς απαντήσεις 1. Να βρεθούν τα τμήματα (κωδικός, όνομα) στα οποία εργάζονται υπάλληλοι που το επώνυμό τους αρχίζει από Α Να βρεθούν το ονόματα και το τμήμα των υπαλλήλων που είτε δεν αμείβονται με περισσότερα από 1500, είτε εργάζονται στο τμήμα Να βρεθούν τα ονόματα και το τμήμα των υπαλλήλων που προσελήφθησαν μέσα στο πρώτο εξάμηνο του 2004 και ο μισθός τους είναι μεγαλύτερος ή ί- σος των Να βρεθούν τα τμήματα στα οποία εργάζονται υπάλληλοι με μισθό μικρότερο των 1100, χωρίς να συνυπολογιστούν οι υπάλληλοι του τμήματος Να βρεθούν τα τμήματα στα οποία εργάζονται υπάλληλοι με μισθό μεγαλύτερο ή ίσο των Ερωτήματα σε πίνακες με συσχέτιση πολλά προς πολλά Όπως είναι γνωστό, οι συσχετίσεις πολλά προς πολλά απαιτούν την παρουσία ενός τρίτου πίνακα, ο οποίος περιέχει (τουλάχιστον) τα κλειδιά των δύο πινάκων που συμμετέχουν στη συσχέτιση. Για ένα τέτοιο ερώτημα θα χρειαστούν (τουλάχιστον) 3 πίνακες, οπότε πρέπει να γραφτούν (τουλάχιστον) 2 συνδέσεις JOIN. Στα περισσότερα Συστήματα Διαχείρισης Βάσεων Δεδομένων, οι συζεύξεις πρέπει να περικλείονται σε παρενθέσεις. Για παράδειγμα, έστω ότι θέλουμε να βρούμε τα ονόματα των υπαλλήλων, καθώς και τον κωδικό και τον προϋπολογισμό των έργων στα οποία συμμετέχουν, για τους υπαλλήλους με μισθό μεγαλύτερο από 1600 : Π firstname, lastname, proid, title (σ salary > 1700 (employees workson projects)) 1 SELECT e.firstname, e.lastname, p.proid, p.title 2 FROM (employees e INNER JOIN workson w ON e.empid = w.empid) 3 INNER JOIN projects p ON p.proid = w.proid 4 WHERE e.salary > 1700; 5 3 Προσοχή στην πληκτρολόγηση, τα ονόματα είναι με ελληνικούς χαρακτήρες.

32 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων firstname lastname proid title Μαρία Αθανασίου 14 Μελέτη και επίβλεψη κατασκευής... 9 θεόδωρος Αγγελίνας 14 Μελέτη και επίβλεψη κατασκευής θεόδωρος Αγγελίνας 21 Παροχή συμβουλευτικών υπηρεσιών θεόδωρος Αγγελίνας 43 Μελέτη οικονομικής βιωσιμότητας Κρινιώ Μαροπούλου 12 Επίβλεψη κατασκευής σταθμού Κρινιώ Μαροπούλου 21 Παροχή συμβουλευτικών υπηρεσιών Κρινιώ Μαροπούλου 38 Μελέτη εναλλακτικών λύσεων για Κυριάκος Ρούσσης 5 Επίβλεψη έρευνας για την αξιοποίηση Κυριάκος Ρούσσης 12 Επίβλεψη κατασκευής σταθμού Κυριάκος Ρούσσης 14 Μελέτη και επίβλεψη κατασκευής Κυριάκος Ρούσσης 21 Παροχή συμβουλευτικών υπηρεσιών Κυριάκος Ρούσσης 38 Μελέτη εναλλακτικών λύσεων για Κυριάκος Ρούσσης 43 Μελέτη οικονομικής βιωσιμότητας... Αυτό ακριβώς είναι το πολλά προς πολλά! Σε ένα έργο μπορούν να απασχολούνται πολλοί υπάλληλοι, αλλά και κάθε υπάλληλος μπορεί να απασχολείται σε πολλά έργα. Ο ενδιάμεσος πίνακας workson περιέχει αυτή την πληροφορία, δηλαδή ποιος υπάλληλος απασχολείται σε ποιο έργο, οπότε θα πρέπει να γίνει σύζευξή του και με τους δύο άλλους πίνακες, δηλαδή τους πίνακες employees και departments. Υπενθυμίζουμε ότι στη σύζευξη ισχύει η προσεταιριστική ιδιότητα, επομένως δεν έχει σημασία η σειρά με την οποία γράφουμε τις δύο συζεύξεις. Όπως και στη σύζευξη ένα προς πολλά, έτσι και τώρα το ερώτημα μπορεί ισοδύναμα να γραφεί και ως: Π firstname, lastname, proid, title (σ employees.empid = workson.empid projects.proid = workson.proid salary > 1700 (employees workson projects)) 1 SELECT e.firstname, e.lastname, p.proid, p.title 2 FROM employees e, workson w, projects p 3 WHERE e.empid = w.empid 4 AND p.proid = w.proid 5 AND e.salary > 1700; με ακριβώς το ίδιο αποτέλεσμα. Οι συζεύξεις μπορούν να περιλαμβάνουν και ακόμα περισσότερους πίνακες, ακολουθώντας την ίδια λογική. Για παράδειγμα, έστω ότι θέλουμε να βρούμε το όνομα των υπαλλήλων και του τμήματος των υπαλλήλων για όλους τους υπαλλήλους

33 250 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων που προσελήφθησαν μετά τις 1/1/2005 και απασχολούνται σε έργα με προϋπολογισμό πάνω από : Π firstname, lastname, depname (σ hiredate > ' ' budget > (departments employees workson projects)) 1 SELECT DISTINCT e.firstname, e.lastname, d.depname 2 FROM ((departments d INNER JOIN employees e ON d.depid = e.depid) 3 INNER JOIN workson w ON e.empid = w.empid) 4 INNER JOIN projects p ON p.proid = w.proid 5 WHERE e.hiredate > ' ' 6 AND p.budget > ; 7 8 firstname lastname depname Κυριάκος Ρούσσης Διοίκησης/Επίβλεψης 11 Πέτρος Αρβανιτάκης Οικονομoλόγων/Λογιστών 12 Αντώνης Παύλου Επιστημόνων/Μηχανικών 13 Βαγγέλης Χριστόπουλος Εξωτερικών συνεργατών 14 Παύλος Περίδης Εξωτερικών συνεργατών Ασκήσεις Με απαντήσεις 1. Να βρεθούν τα ονόματα των υπαλλήλων και ο τίτλος του έργου όπου συμμετέχουν για τους υπαλλήλους του τμήματος 5. Π firstname, lastname, title (σ depid = 5 (employees workson projects)) 1 SELECT e.firstname, e.lastname, p.title 2 FROM (employees e INNER JOIN workson w ON e.empid = w.empid) 3 INNER JOIN projects p ON p.proid = w.proid 4 WHERE e.depid = 5; 5 6 firstname lastname title Αδαμαντία Θεοτοκάτου Μελέτη και επίβλεψη κατασκευής... 9 Αδαμαντία Θεοτοκάτου Μελέτη εναλλακτικών λύσεων για...

34 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων Να βρεθούν οι ημερομηνίες λήξης των έργων στα οποία συμμετέχουν υπάλληλοι του τμήματος 3, κατά αύξουσα ταξινόμηση. Π enddate (σ depid = 3 (employees workson projects)) 1 SELECT DISTINCT p.enddate 2 FROM (employees e INNER JOIN workson w ON e.empid = w.empid) 3 INNER JOIN projects p ON p.proid = w.proid 4 WHERE e.depid = 3 5 ORDER BY p.enddate; 6 7 enddate Να βρεθεί ο μεγαλύτερος μισθός υπαλλήλου που απασχολείται στο έργο με κωδικό 21. G max(salary) (σ proid = 21 (employees workson)) 1 SELECT MAX(salary) 2 FROM employees e INNER JOIN workson w ON e.empid = w.empid 3 WHERE w.proid = 21; 4 5 MAX(salary) Να βρεθεί η πιο παλιά ημερομηνία έναρξης έργου στο οποίο συμμετέχει τουλάχιστον ένας υπάλληλος από το τμήμα 5. G min(startdate) (σ depid = 5 (employees workson projects)) 1 SELECT MIN(p.startdate) 2 FROM (employees e INNER JOIN workson w ON e.empid = w.empid) 3 INNER JOIN projects p ON p.proid = w.proid 4 WHERE e.depid = 5; 5

35 252 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων 6 MIN(p.startdate) Να βρεθεί ο τίτλος των έργων με προϋπολογισμό μεγαλύτερο των και το όνομα των υπαλλήλων του τμήματος 6 που απασχολούνται σε αυτά, με αύξουσα ταξινόμηση ως προς τον προϋπολογισμό του έργου και το μισθό του υπαλλήλου. 1 SELECT p.title, e.firstname, e.lastname 2 FROM (employees e INNER JOIN workson w ON e.empid = w.empid) 3 INNER JOIN projects p ON p.proid = w.proid 4 WHERE e.depid = 6 5 AND p.budget > ORDER BY p.budget, e.salary; 7 8 title firstname lastname Επίβλεψη κατασκευής σταθμού... Περικλής Κιτσάκης 11 Μελέτη οικονομικής βιωσιμότητας... θεόδωρος Αγγελίνας 12 Μελέτη και επίβλεψη κατασκευής... Αθανάσιος Πετράκης 13 Μελέτη και επίβλεψη κατασκευής... θεόδωρος Αγγελίνας 6. Να βρεθεί σε πόσα έργα συμμετέχει ο υπάλληλος με κωδικό 109, τα οποία να έχουν ποσοστό προόδου μεγαλύτερο από 50%. 1 SELECT COUNT(*) 2 FROM projects p INNER JOIN workson w ON p.proid = w.proid 3 WHERE w.empid = AND p.progress > 50; 5 6 COUNT(*) Να βρεθεί το όνομα των υπαλλήλων, η ημερομηνία έναρξης, και o τίτλος ό- λων των έργων όπου συμμετέχουν υπάλληλοι από τα τμήματα 3, 4, και 6 με μισθό μεταξύ 1000 και 1300 και οι οποίοι προσλήφθηκαν κατά τα έτη 2002 και 2003.

36 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων SELECT e.firstname, e.lastname, p.startdate, p.title 2 FROM (employees e INNER JOIN workson w ON e.empid = w.empid) 3 INNER JOIN projects p ON p.proid = w.proid 4 WHERE e.depid IN (3,4,6) 5 AND e.salary BETWEEN 1000 AND AND e.hiredate BETWEEN ' ' AND ' '; 7 8 firstname lastname startdate title Κώστας Παπαδόπουλος Μελέτη και επίβλεψη κατασκευής Κώστας Παπαδόπουλος Παροχή συμβουλευτικών υπηρεσιών Νίκος Βλάχος Επίβλεψη κατασκευής σταθμού Περικλής Κιτσάκης Επίβλεψη κατασκευής σταθμού Νικηφόρος Διαμαντίδης Μελέτη εναλλακτικών λύσεων για Να βρεθεί ο κωδικός και το όνομα όλων των υπαλλήλων που απασχολούνται σε έργα με ημερομηνία έναρξης μετά την ημερομηνία πρόσληψης του υπαλλήλου. 1 SELECT DISTINCT e.empid, e.firstname, e.lastname 2 FROM (employees e INNER JOIN workson w ON e.empid = w.empid) 3 INNER JOIN projects p ON p.proid = w.proid 4 WHERE e.hiredate > p.startdate; 5 6 empid firstname lastname Πέτρος Αρβανιτάκης Αντώνης Παύλου Κυριάκος Ρούσσης Βαγγέλης Χριστόπουλος Ηρακλής Μανωλάκης Παύλος Περίδης Χωρίς απαντήσεις 1. Να βρεθούν τα ονόματα των υπαλλήλων που απασχολούνται σε έργα τα ο- ποία έχουν ημερομηνία λήξης μέσα στο Να βρεθούν τα ονόματα και ο μισθός των υπαλλήλων που απασχολούνται σε έργα με προϋπολογισμό μεγαλύτερο των

37 254 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων 3. Να βρεθεί ο τίτλος και η ημερομηνία έναρξης όλων των έργων στα οποία α- πασχολούνται υπάλληλοι με μισθό μεγαλύτερο από Να βρεθεί ο τίτλος και η ημερομηνία έναρξης όλων των έργων στα οποία α- πασχολούνται υπάλληλοι οι οποίοι, αν πάρουν αύξηση 3.5%, ο μισθός του θα μεγαλώσει μεταξύ 40 και Να βρεθεί πόσοι υπάλληλοι συμμετέχουν στο έργο με κωδικό Να βρεθεί το όνομα και η ημερομηνία πρόσληψης όλων των υπαλλήλων που απασχολούνται σε έργα με προϋπολογισμό μεγαλύτερο από Δώστε το αποτέλεσμα με φθίνουσα ταξινόμηση ως προς την ημερομηνία πρόσληψης. 7. Να βρεθεί το όνομα και ο μισθός όλων των εργαζομένων που απασχολούνται στο έργο με κωδικό Εξωτερικές συζεύξεις Η σύζευξη που εξετάσαμε μέχρι τώρα ονομάζεται φυσική (NATURAL JOIN) ή εσωτερική (INNER JOIN): εμφανίζει στο αποτέλεσμα του ερωτήματος τις εγγραφές για τις οποίες οι τιμές στα πεδία δύο πινάκων ταυτίζονται. Η εξωτερική σύζευξη (OUTER JOIN), την οποία θα εξετάσουμε τώρα, έχει την εξής διαφορά: εμφανίζει στο αποτέλεσμα τις ίδιες εγγραφές που δίνει και η εσωτερική σύζευξη, καθώς και επιπλέον εκείνες τις εγγραφές που δεν έχουν ταιριαστές τιμές στο πεδίο με βάση το οποίο γίνεται η σύζευξη, είτε από τον ένα πίνακα LEFT, RIGHT, είτε και από τους δύο πίνακες (FULL OUTER JOIN). Για παράδειγμα, η εντολή: 1 SELECT e.firstname, e.lastname, w.proid 2 FROM employees e INNER JOIN workson w ON e.empid = w.empid 3 WHERE e.depid = 4 4 ORDER BY e.lastname; 5 6 firstname lastname proid Νίκος Βλάχος 12 9 Παύλος Περίδης Βαγγέλης Χριστόπουλος Βαγγέλης Χριστόπουλος Βαγγέλης Χριστόπουλος 38

38 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων 255 θα δώσει στο αποτέλεσμα τα ονόματα των υπαλλήλων του τμήματος 4 και τους κωδικούς των έργων που συμμετέχουν, με την προϋπόθεση ότι κάποιος υπάλληλος απασχολείται σε κάποιο έργο. Εξάλλου, αυτό ακριβώς σημαίνει «εσωτερική σύζευξη»: οι εγγραφές του ενός πίνακα πρέπει να ταιριάζουν με τις εγγραφές ενός άλλου πίνακα με βάση ταυτιζόμενες τιμές σε κάποια πεδία. Αν δεν υπάρχει ταίριασμα οι εγγραφές δεν εμφανίζονται στο αποτέλεσμα, ανεξάρτητα από το αν υ- πάρχουν στους πίνακες. Αν θέλουμε την εμφάνιση όλων των υπαλλήλων του τμήματος 4, ανεξάρτητα από το αν συμμετέχουν σε κάποιο έργο ή όχι, τότε πρέπει να αντικαταστήσουμε την εσωτερική σύζευξη με εξωτερική: 1 SELECT e.firstname, e.lastname, w.proid 2 FROM employees e LEFT JOIN workson w ON e.empid = w.empid 3 WHERE e.depid = 4 4 ORDER BY e.lastname; 5 6 firstname lastname proid Νίκος Βλάχος 12 9 Παύλος Περίδης Νίκος Στεργιόπουλος NULL 11 Βαγγέλης Χριστόπουλος Βαγγέλης Χριστόπουλος Βαγγέλης Χριστόπουλος 38 που σημαίνει: «εμφάνισε όλες οι εγγραφές του πίνακα employees, και εκείνες τις εγγραφές από τον πίνακα workson για τις οποίες οι τιμές στα πεδία id και empid ταυτίζονται». Το πεδίο empid στο αποτέλεσμα θα πάρει την τιμή NULL για εκείνους τους υπαλλήλους που δεν συμμετέχουν σε κανένα έργο. Η εξωτερική σύζευξη μπορεί να είναι αριστερή (LEFT ) ή δεξιά (RIGHT ), με μόνο στόχο να έχουμε ευελιξία στον καθορισμό του πίνακα εκείνου από τον οποίο επιθυμούμε να συμπεριληφθούν όλες οι εγγραφές στο αποτέλεσμα. Έτσι η προηγούμενη εντολή μπορεί να γραφτεί και ως: 1 SELECT e.firstname, e.lastname, w.proid 2 FROM workson w RIGHT JOIN employees e ON w.empid = e.empid;

39 256 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων με το ίδιο ακριβώς αποτέλεσμα. Δηλαδή «εμφάνισε όλες τις εγγραφές του δεξιού πίνακα (employees), και μόνο εκείνες του αριστερού πίνακα (workson) για τις ο- ποίες οι τιμές στα πεδία σύζευξης ταυτίζονται (w.empid = e.empid). Κατά παράδοση, οι προγραμματιστές SQL προτιμούν την αριστερή σύζευξη όταν έχουν να επιλέξουν ανάμεσα σε δύο ισοδύναμες εξωτερικές συζεύξεις. Κατά τη σχεδίαση συσχετίσεων σε περιβάλλον MS ACCESS, η δήλωση μιας εξωτερικής σύζευξης μπορεί να γίνει κατά τον καθορισμό του τύπου συνδέσμου, όπως δείχνει το σχήμα 10.1: Σχήμα 10.1 Τροποποίηση σύνδεσης πινάκων στην MS ACCESS. Ίσως εδώ είναι το κατάλληλο σημείο για να λυθεί μια παρεξήγηση που υπάρχει πολύ συχνά ανάμεσα στους αρχάριους χρήστες της MS ACCESS. Αυτό γίνεται επειδή υπάρχει η εξής σύγχυση: άλλο πράγμα είναι οι συσχετίσεις μεταξύ των πινάκων, και άλλο πράγμα είναι οι περιορισμοί ξένου κλειδιού. Ο τύπος σύνδεσης που επιλέχθηκε κατά τη φάση σχεδιασμού της βάσης δεδομένων σε MS ACCESS επηρεάζει τις πράξεις ενημέρωσης της βάσεις (εισαγωγή, διαγραφή, και τροποποίηση δεδομένων) ανάμεσα στους συσχετιζόμενους πίνακες. Καθορίζει δηλαδή τι θα συμβεί στα δεδομένα του πίνακα που φέρει το ξένο κλειδί όταν ενημερωθεί ο πίνακας που φέρει το πρωτεύον κλειδί της συσχέτισης. Αυτό δεν έχει καμία απολύτως σχέση με τον τρόπο με τον οποίο θα γραφεί ένα ερώτημα επιλογής δεδομένων από πολλούς πίνακες, είτε με εσωτερική είτε με εξωτερική σύζευξη. Τα ερωτήματα με τη φράση SELECT δεν επηρεάζουν τα δεδομένα που είναι αποθηκευμένα στους πίνακες της βάσης, και τα ερωτήματα αυτά, ό,τι και να περιέχουν στη φράση FROM, δεν επηρεάζουν το σχήμα της βάσης.

40 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων 257 Οποιοδήποτε είδος σύζευξης και να τοποθετηθεί σε ένα ερώτημα τύπου SELECT δεν έχει καμία απολύτως επίδραση στους περιορισμούς ξένου κλειδιού που εφαρμόστηκαν κατά τη σχεδίαση της βάσης και αφορούν την ενημέρωσή της. Ακόμα και να μην υπάρχουν καθόλου τέτοιοι περιορισμοί, τα ερωτήματα που περιέχουν συζεύξεις στη φράση FROM θα έχουν ακριβώς τα ίδια αποτελέσματα. Το πλέγμα σχεδίασης ερωτημάτων στην MS ACCESS παίρνει ως προεπιλεγμένο (DEFAULT) το είδος σύζευξης που καθορίστηκε κατά τη σχεδίαση των πινάκων και συσχετίσεων. Το πλέγμα σχεδίασης απλώς βοηθά το χρήστη στη γρήγορη σύνταξη ερωτημάτων. Ο χρήστης, όμως, μπορεί να κάνει οποιαδήποτε αλλαγή και τροποποίηση επιθυμεί, χωρίς καμία συνέπεια στη σχεδίαση και στα δεδομένα της βάσης. Μια τέτοια προσαρμογή του χρήστη μπορεί να είναι, για παράδειγμα, η αλλαγή από εσωτερική σε εξωτερική σύζευξη. Για παράδειγμα, οι υπάλληλοι που δεν α- πασχολούνται σε κανένα έργο μπορούν εύκολα να βρεθούν με το ερώτημα: 1 SELECT e.* 2 FROM employees e LEFT JOIN workson w ON e.empid = w.empid 3 WHERE w.proid IS NULL; empid firstname lastname depid salary hiredate Νίκος Στεργιόπουλος Αρετή Βασιλακάκη Βασιλική Περδίκη χωρίς να μας ενδιαφέρει καθόλου ο τρόπος με τον οποίο έχουν οριστεί οι περιορισμοί ξένων κλειδιών, ή/και ακεραιότητας αναφορών. Για να γραφεί το προηγούμενο ερώτημα στο πλέγμα σχεδίασης ερωτημάτων της MS ACCESS απαιτούνται τα επόμενα βήματα. 1. Ξεκινήστε τη σχεδίαση ενός ερωτήματος και τοποθετήστε τους δύο πίνακες employees και workson στο πλέγμα σχεδίασης. 2. Παρατηρήστε ότι η MS ACCESS τοποθετηθεί αυτόματα τη γραμμή σύνδεσης ως συσχέτιση 1:Ν.

41 258 ΜΕΡΟΣ ΙΙ Η δομημένη γλώσσα επερωτήσεων 3. Τοποθετήστε στο πλέγμα το πεδία που σας ενδιαφέρουν και γράψτε το κριτήριο IS NULL. 4. Διπλοπατήστε στη γραμμή σύνδεσης και επιλέξτε τον τύπο σύνδεσης 2, ο ο- ποίος στην SQL αντιστοιχεί στη σύνδεση LEFT JOIN.

42 Κεφάλαιο 10 Ερωτήματα επιλογής με σύζευξη πινάκων Παρατηρήστε την αλλαγή στη γραμμή σχεδίασης, και εκτελέστε το ερώτημα. Όλες αυτές οι αλλαγές αφορούν μόνο το συγκεκριμένο ερώτημα, και δεν επηρεάζουν καθόλου τα υπόλοιπα στοιχεία της βάσης δεδομένων. Η προηγούμενη συζήτηση αξίζει λίγη παραπάνω σκέψη: τι είναι καλύτερο να γνωρίζει κανείς τις απλές λογικές φράσεις της SQL, ή μια περίπλοκη διαδοχή από πατήματα με το ποντίκι;

Ερωτήματα επιλογής με σύζευξη πινάκων

Ερωτήματα επιλογής με σύζευξη πινάκων ΚΕΦΑΛΑΙΟ 13 Ερωτήματα επιλογής με σύζευξη πινάκων Το κεφάλαιο αυτό σας εισάγει στον πραγματικό κόσμο των σχεσιακών βάσεων δεδομένων. Τα ερωτήματα που θα συναντήσετε έχουν πολλούς πίνακες στον όρο FROM,

Διαβάστε περισσότερα

1 / 150

1 / 150 Ερωτήματα SQL με σύζευξη πινάκων Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 150 Περιεχόμενα 1 Γενικά για τη σύζευξη πινάκων 2 Καρτεσιανό γινόμενο και θ σύζευξη 3 Φυσική σύζευξη

Διαβάστε περισσότερα

1 / 105

1 / 105 Ερωτήματα SQL με σύζευξη πινάκων Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 105 Περιεχόμενα 1 Γενικά για τη σύζευξη πινάκων 2 Καρτεσιανό γινόμενο

Διαβάστε περισσότερα

Ερωτήματα SQL με σύζευξη πινάκων ΜΗ ΕΙΝΑΙ ΒΑΣΙΛΙΚΗΝ ΑΤΡΑΠΟΝ ΕΠΙ ΓΕΩΜΕΤΡΙΑΝ Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr 1 / 30 Σκοπός του μαθήματος Εκτελείτε ερωτήματα ανάσυρσης δεδομένων από

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Ερωτήματα SQL με σύζευξη πινάκων Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Υποερωτήματα SQL Παραδείγματα και εφαρμογές από τη βάση δεδομένων company Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 55 Περιεχόμενα 1 Απλά υποερωτήματα

Διαβάστε περισσότερα

1 / 97

1 / 97 Τα πρώτα ερωτήματα SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 97 Περιεχόμενα 1 Εισαγωγικά σχόλια και παρατηρήσεις 2 Απλά ερωτήματα προβολής, επιλέγοντας στήλες από ένα πίνακα

Διαβάστε περισσότερα

1 / 87

1 / 87 Τα πρώτα ερωτήματα SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2016 1 / 87 Δυο λόγια για την SQL Υλοποίηση του σχεσιακού μοντέλου δεδομένων του E.F. Codd, αρχικά ως DSl/Alpha, αργότερα

Διαβάστε περισσότερα

Πρόλογος Μέρος Ι Εισαγωγή στα συστήματα βάσεων δεδομένων Μια βόλτα στις βάσεις δεδομένων...25

Πρόλογος Μέρος Ι Εισαγωγή στα συστήματα βάσεων δεδομένων Μια βόλτα στις βάσεις δεδομένων...25 Περιεχόμενα Πρόλογος... 21 Μέρος Ι Εισαγωγή στα συστήματα βάσεων δεδομένων. 23 1 Μια βόλτα στις βάσεις δεδομένων...25 1.1 Η πρώτη βάση δεδομένων... 26 1.1.1 Άλλοι τρόποι...26 1.1.2 Απαιτήσεις της εφαρμογής...29

Διαβάστε περισσότερα

Υποερωτήματα στην SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr 1 / 31 Η ανάγκη για υποερώτημα Ποιος υπάλληλος παίρνει το μεγαλύτερο μισθό; Αν ξέραμε το μεγαλύτερο μισθό, πχ 2000, θα γράφαμε:

Διαβάστε περισσότερα

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

DISTINCT, LIKE, NULL, AND, OR, BETWEEN Περισσότερα για τα απλά ερωτήματα SQL DISTINCT, LIKE, NULL, AND, OR, BETWEEN Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 66 Σκοπός του μαθήματος Αποκλείσετε διπλοεγγραφές από

Διαβάστε περισσότερα

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) ΤΕΙ ΔυτικήςΜακεδονίας

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) ΤΕΙ ΔυτικήςΜακεδονίας Structured Query Language (SQL) Δρ. Καρβούνης Ευάγγελος ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) ΤΕΙ ΔυτικήςΜακεδονίας 1 / 97 Περιεχόμενα 1 Εισαγωγικά σχόλια και παρατηρήσεις 2 Απλά ερωτήματα

Διαβάστε περισσότερα

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP.

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP. SQL: Ερωτήματα ομαδοποίησης και συνάθροισης GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2016 1 / 56 Περιεχόμενα 1 Εισαγωγή, γενικές

Διαβάστε περισσότερα

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT. Ενημέρωση βάσης δεδομένων με SQL DELETE, UPDATE, INSERT Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 88 Περιεχόμενα 1 Γενικά για την αποθήκευση δεδομένων και την ενημέρωση της

Διαβάστε περισσότερα

DELETE, UPDATE, INSERT

DELETE, UPDATE, INSERT Ενημέρωση βάσης δεδομένων με SQL DELETE, UPDATE, INSERT Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 103 Περιεχόμενα 1 Γενικά για την αποθήκευση

Διαβάστε περισσότερα

1 / 106

1 / 106 Ενσωματωμένες συναρτήσεις στην SQL και επιπλέον στοιχεία προγραμματισμού Παραδείγματα και εφαρμογές από τη βάση δεδομένων company Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr

Διαβάστε περισσότερα

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

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY. Η γλώσσα ορισμού δεδομένων της SQL Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 Περιεχόμενα 1 Δημιουργία πινάκων με την

Διαβάστε περισσότερα

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

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY. Η γλώσσα ορισμού δεδομένων της SQL Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 85 Περιεχόμενα

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Ερωτήματα επιλογής SQL, σύζευξη, διάζευξη, NULL, ταίριασμα κειμένου Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Επιπλέον ενσωματωμένες συναρτήσεις SQL Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II SQL Ερωτήματα ομαδοποίησης και συνάθροισης Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Περιεχόμενα. Μέρος Ι Εισαγωγή στα συστήματα βάσεων δεδομένων Πρόλογος... 33

Περιεχόμενα. Μέρος Ι Εισαγωγή στα συστήματα βάσεων δεδομένων Πρόλογος... 33 Περιεχόμενα Πρόλογος... 33 Μέρος Ι Εισαγωγή στα συστήματα βάσεων δεδομένων... 39 1 Μια βόλτα στις βάσεις δεδομένων... 41 1.1 Η πρώτη βάση δεδομένων... 42 1.1.1 Άλλοι τρόποι... 42 1.1.2 Απαιτήσεις της εφαρμογής...

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Ενημέρωση βάσης δεδομένων με τις εντολές INSERT, DELETE, UPDATE Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες

Διαβάστε περισσότερα

Οψεις (VIEWS) στην SQL Η εντολή CREATE VIEW Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 55 Περιεχόμενα 1 Εισαγωγικά για τις όψεις 2 Οψεις και συζεύξεις 3 Επιπλέον χρήση των όψεων

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Εντολές ορισμού δεδομένων (DDL) στην SQL Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Όψεις (views) στην SQL Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Σχεσιακή Άλγεβρα Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 15 Επισκόπηση 1 Οι βασικές πράξεις προβολής και επιλογής Η σχεσιακή πράξη της προβολής Η σχεσιακή πράξη της επιλογής

Διαβάστε περισσότερα

Εννοιολογικός σχεδιασμός βάσεων δεδομένων Το μοντέλο Οντοτήτων/Συσχετίσεων Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 Περιεχόμενα 1 Γενικά για οντότητες και συσχετίσεις 2 Διαγράμματα

Διαβάστε περισσότερα

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης Περιεχόμενα 1 Γενική περιγραφή του προβλήματος 2 Μοντελοποίηση Ο/Σ 3 Σχεσιακό μοντέλο, SQL 4 Ερωτήματα

Διαβάστε περισσότερα

1 / 106

1 / 106 Σχεσιακή Άλγεβρα Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=154 Άνοιξη 2016 1 / 106 Σχεσιακή άλγεβρα Η σχεσιακή άλγεβρα είναι μια διαδικαστική (procedural) γλώσσα. Διαθέτει

Διαβάστε περισσότερα

Σχεδίαση Βάσεων Δεδομένων

Σχεδίαση Βάσεων Δεδομένων Οδηγίες Μέρος 1: Απαντήστε κάθε ερώτηση. 1. Ποια είναι τα πλεονεκτήματα που παρέχει το Περιβάλλον Βάσεων Δεδομένων της Oracle για τις επιχειρήσεις; Το σύστημα διαχείρισης βάσεων δεδομένων της Oracle δίνει

Διαβάστε περισσότερα

Σχεσιακή Άλγεβρα Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=154 Άνοιξη 2014 1 / 88 Σχεσιακή άλγεβρα Η σχεσιακή άλγεβρα είναι μια διαδικαστική (procedural) γλώσσα. Διαθέτει

Διαβάστε περισσότερα

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ Η συνθήκη WHERE βάζει περιορισμούς στις εγγραφές που επιστρέφονται. Ο όρος ORDER BY ταξινομεί τις εγγραφές που επιστρέφονται. Παράδειγμα: SELECT * FROM table_name ORDER

Διαβάστε περισσότερα

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους ΘΕΜΑΤΑ A Οι παρακάτω πίνακες αποτελούνται από τα εξής πεδία : ΕΡΓΑΖΟΜΕΝΟΣ : ΑΦΜ, ΕΠΙΘΕΤΟ, ΟΝΟΜΑ, ΤΗΛ, ΟΔΟΣ, ΠΟΛΗ,ΜΙΣΘΟΣ, ΚΤ ΤΜΗΜΑ : ΚΤ, ΑΦΜ, ΤΙΤΛΟΣ_ΤΜΗΜΑΤΟΣ, ΤΗΛ ΕΡΓΑ : ΚΕΡ, ΠΕΡΙΓΡΑΦΗ, ΤΟΠΟΘΕΣΙΑ, ΠΡΟΫΠΟΛΟΓΙΣΜΟΣ

Διαβάστε περισσότερα

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός 7 Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα H Σχεσιακή Άλγεβρα (relational algebra) ορίζει ένα σύνολο πράξεων που εφαρμόζονται σε μία ή περισσότερες σχέσεις

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Σχεσιακή άλγεβρα Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής ΑΠΘ Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 2 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: Η μελέτη ερωτημάτων σε μία μόνο σχέση. Εξετάζουμε τους τελεστές επιλογής

Διαβάστε περισσότερα

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα) Η SQL ως γλώσσα ερωτημάτων Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα) Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data Definition Language)

Διαβάστε περισσότερα

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής. ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Χειμερινό Εξάμηνο 2012 SQL Structured Query Language Δρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ 1 Πράξεις της σχεσιακής άλγεβρας ΠΡΑΞΗ ΣΚΟΠΟΣ

Διαβάστε περισσότερα

Τίτλος Πακέτου Certified Computer Expert-ACTA

Τίτλος Πακέτου Certified Computer Expert-ACTA Κωδικός Πακέτου ACTA - CCE - 002 Τίτλος Πακέτου Certified Computer Expert-ACTA Εκπαιδευτικές Ενότητες Επεξεργασία Κειμένου - Word Δημιουργία Εγγράφου Προχωρημένες τεχνικές επεξεργασίας κειμένου & αρχείων

Διαβάστε περισσότερα

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα 2 Βήματα Επεξεργασίας Τα βασικά βήματα στην επεξεργασία

Διαβάστε περισσότερα

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Απλά ερωτήματα Επιλογής Ερωτήματα με Ενώσεις πινάκων Ερωτήματα με Παραμετρικά Κριτήρια Ερωτήματα με Υπολογιζόμενα πεδία Απλά ερωτήματα Επιλογής Τα Ερωτήματα μας επιτρέπουν

Διαβάστε περισσότερα

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ 1 Βάση Δεδομένων: Με το όρο Βάση Δεδομένων εννοούμε ένα σύνολο δεδομένων που είναι οργανωμένο

Διαβάστε περισσότερα

Ηλεκτρονικοί Υπολογιστές ΙI. Βάσεις Δεδομένων. Ακαδημαϊκό Έτος Εργαστήριο 2. Διαφάνεια 1. Κάπαρης Αναστάσιος

Ηλεκτρονικοί Υπολογιστές ΙI. Βάσεις Δεδομένων. Ακαδημαϊκό Έτος Εργαστήριο 2. Διαφάνεια 1. Κάπαρης Αναστάσιος Βάσεις Δεδομένων Εργαστήριο 2 Διαφάνεια 1 Πώς να δημιουργήσω μια συσχέτιση ένα προς πολλά στην ACCESS; Η απάντηση στο παραπάνω θέμα, θα δοθεί μέσα από ένα παράδειγμα μιας μικρής βάσης δεδομένων. Το μοντέλο

Διαβάστε περισσότερα

Μετατροπή Σχήματος Ο/Σ σεσχεσιακό

Μετατροπή Σχήματος Ο/Σ σεσχεσιακό Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό Προσοχή είτε αυτά που ακολουθούν ως παράδειγμα Μην τα ακολουθείτε τυφλά ως «μαγική συνταγή» 1 2 Οντότητες Για κάθε τύπο οντοτήτων και για κάθε τύπο συσχετίσεων δημιουργούμε

Διαβάστε περισσότερα

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS Ακαδημαϊκό Έτος 2016-2017, Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS A. Εισαγωγή στις βάσεις δεδομένων - Γνωριμία με την ACCESS B. Δημιουργία Πινάκων 1. Εξήγηση των

Διαβάστε περισσότερα

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

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 2 ο Σύνολο Ασκήσεων Οι βαθμοί θα ανακοινωθούν αύριο μαζί με τους βαθμούς της προγραμματιστικής άσκησης Τα αστεράκια δείχνουν τον εκτιμώμενο βαθμό δυσκολίας (*) εύκολο (**) μέτριο (***) δύσκολο Βάσεις Δεδομένων

Διαβάστε περισσότερα

Σχεσιακό Μοντέλο Δεδομένων

Σχεσιακό Μοντέλο Δεδομένων Σχεσιακό Μοντέλο Δεδομένων Παύλος Εφραιμίδης Βάσεις Δεδομένων Σχεσιακό Μοντέλο Δεδομένων 1 Μοντέλα Δεδομένων Μοντέλα Δεδομένων Σχεσιακό Ιεραρχικό Δικτυακό Tο κυρίαρχο μοντέλο δεδομένων στις σύγχρονες βάσεις

Διαβάστε περισσότερα

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27 Περιεχόμενα Κεφάλαιο 1 Εισαγωγή στην Access... 9 Γνωριμία με την Access... 12 Δημιουργία βάσης δεδομένων... 22 Άνοιγμα και κλείσιμο βάσης δεδομένων... 24 Ερωτήσεις ανακεφαλαίωσης... 25 Πρακτική εξάσκηση...

Διαβάστε περισσότερα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων Ενότητα 3 Σχεδίαση Βάσεων Δεδομένων 17 18 3.1 Εισαγωγή Μία βάση δεδομένων αποτελείται από δεδομένα για διάφορα θέματα τα οποία όμως σχετίζονται μεταξύ τους και είναι καταχωρημένα με συγκεκριμένο τρόπο.

Διαβάστε περισσότερα

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα Εισαγωγή Σχεσιακό Μοντέλο Σχεδιασμός μιας Β : Βήματα Ανάλυση Απαιτήσεων Τι δεδομένα θα αποθηκευτούν, ποιες εφαρμογές θα κτιστούν πάνω στα δεδομένα, ποιες λειτουργίες είναι συχνές Εννοιολογικός Σχεδιασμός

Διαβάστε περισσότερα

Βάσεις Δεδομένων. Εισαγωγή Ανάλυση Απαιτήσεων. Φροντιστήριο 1 ο

Βάσεις Δεδομένων. Εισαγωγή Ανάλυση Απαιτήσεων. Φροντιστήριο 1 ο Βάσεις Δεδομένων Εισαγωγή Ανάλυση Απαιτήσεων Φροντιστήριο 1 ο 16-10-2008 Εισαγωγή - Ορισμοί Βάση Δεδομένων είναι μία συλλογή από σχετιζόμενα αντικείμενα Ένα σύστημα διαχείρισης βάσεων δεδομένων (ΣΔΒΔ)

Διαβάστε περισσότερα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων Σ Β Βάση εδομένων Η ομή ενός ΣΒ Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 1 Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 2 Εισαγωγή Εισαγωγή ΜΕΡΟΣ 1 (Χρήση Σ Β ) Γενική

Διαβάστε περισσότερα

Εργαστήριο 8o. Ερωτήματα επιλογής Παραμετρικά ερωτήματα Ερωτήματα δημιουργίας πεδίων. Ευάγγελος Γ. Καραπιδάκης

Εργαστήριο 8o. Ερωτήματα επιλογής Παραμετρικά ερωτήματα Ερωτήματα δημιουργίας πεδίων. Ευάγγελος Γ. Καραπιδάκης Εργαστήριο 8o Ερωτήματα επιλογής Παραμετρικά ερωτήματα Ερωτήματα δημιουργίας πεδίων Ερωτήματα Τα Ερωτήματα μας επιτρέπουν να βλέπουμε τα δεδομένα που επιθυμούμε, με τη σειρά που επιθυμούμε. Μας δίνουν

Διαβάστε περισσότερα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων Ενότητα 4 Επεξεργασία πινάκων 36 37 4.1 Προσθήκη πεδίων Για να εισάγετε ένα πεδίο σε ένα πίνακα που υπάρχει ήδη στη βάση δεδομένων σας, βάζετε τον κέρσορα του ποντικιού στο πεδίο πάνω από το οποίο θέλετε

Διαβάστε περισσότερα

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

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005 ΛΥΣΕΙΣ Ι. Βασιλείου -----------------------------------------------------------------------------------------------------

Διαβάστε περισσότερα

Σχεσιακό Μοντέλο Περιορισμοί Μετατροπή ER σε Σχεσιακό Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Relational Model

Σχεσιακό Μοντέλο Περιορισμοί Μετατροπή ER σε Σχεσιακό Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Relational Model .. Εργαστήριο Βάσεων Δεδομένων Relational Model . Σχεσιακό Μοντέλο (Relational Model) Το σχεσιακό μοντέλο παρουσιάζει μια βάση ως συλλογή από σχέσεις Μια σχέση είναι ένας πίνακας με διακριτό όνομα Κάθε

Διαβάστε περισσότερα

Κανονικοποίηση βάσεων δεδομένων 1 η, 2 η και 3 η κανονική μορφή Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 Περιεχόμενα 1 Πρώτη κανονική μορφή 2 Συναρτησιακές εξαρτήσεις 3 Δεύτερη

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Β. Μεγαλοοικονόμου, Δ. Χριστοδουλάκης Query by Example QBE Ακ.Έτος 2008-09 (μεβάσητιςσημειώσειςτωνsilberchatz, Korth και Sudarshan και του C. Faloutsos CMU)

Διαβάστε περισσότερα

Μετατροπή Σχήματος Ο/Σ σεσχεσιακό

Μετατροπή Σχήματος Ο/Σ σεσχεσιακό Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό Προσοχή είτε αυτά που ακολουθούν ως παράδειγμα Μην τα ακολουθείτε τυφλά ως «μαγική συνταγή» 1 2 Οντότητες Για κάθε τύπο οντοτήτων και για κάθε τύπο συσχετίσεων δημιουργούμε

Διαβάστε περισσότερα

Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό

Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό 1 Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό Προσοχή είτε αυτά που ακολουθούν ως παράδειγμα Μην τα ακολουθείτε τυφλά ως «μαγική συνταγή» 2 : Μετατροπή Μοντέλου ΟΣ σε Σχεσιακό

Διαβάστε περισσότερα

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα Εισαγωγή Σχεσιακό Μοντέλο Σχεδιασμός μιας Β : Βήματα Ανάλυση Απαιτήσεων Τι δεδομένα θα αποθηκευτούν, ποιες εφαρμογές θα κτιστούν πάνω στα δεδομένα, ποιες λειτουργίες είναι συχνές Εννοιολογικός Σχεδιασμός

Διαβάστε περισσότερα

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Μοντελοποίηση Σχήμα (database schema): η περιγραφή της δομής της πληροφορίας που είναι αποθηκευμένη στη βδ με τη χρήση ενός μοντέλου δεδομένων

Διαβάστε περισσότερα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήματος 1. Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασμός) 2. Προγραμματισμός (Σχεσιακή Άλγεβρα, SQL) ημιουργία/κατασκευή Εισαγωγή εδομένων

Διαβάστε περισσότερα

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα Database System Concepts, 6 th Ed. Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use Παράδειγμα Σχέσης attributes

Διαβάστε περισσότερα

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα Βάσεις

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων Σύνθετα SQL queries Βάσεις Δεδομένων Σύνθετα SQL queries Παύλος Εφραιμίδης Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 1 Ασάφεια και Πλήρη Ονόματα Ονόματα Πεδίων: Στην SQL, τα ονόματα των πεδίων (γνωρισμάτων) σε κάθε σχέση είναι

Διαβάστε περισσότερα

Βάσεις Δεδομένων : Σχεσιακό Μοντέλο 1. Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση.

Βάσεις Δεδομένων : Σχεσιακό Μοντέλο 1. Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση. Εισαγωγή Σχεσιακό Μοντέλο Ανάλυση Απαιτήσεων Σχεδιασμός μιας Β : Βήματα Τι δεδομένα θα αποθηκευτούν, ποιες εφαρμογές θα κτιστούν πάνω στα δεδομένα, ποιες λειτουργίες είναι συχνές Εννοιολογικός Σχεδιασμός

Διαβάστε περισσότερα

Σχεδίαση Βάσεων Δεδομένων

Σχεδίαση Βάσεων Δεδομένων Σχεδίαση Βάσεων Δεδομένων Εισαγωγή στις Έννοιες των Σχεσιακών Βάσεων Δεδομένων Introduction to Relational Database Concepts 1 Copyright 2013, Oracle and/or its affiliates. All rights reserved. Στόχοι Το

Διαβάστε περισσότερα

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

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML. Κεφάλαιο 5 Η γλώσσα SQL 5.1 Εισαγωγή Η γλώσσα SQL (Structured Query Language) είναι η πιο διαδεδομένη διαλογική γλώσσα ερωταπαντήσεων που χρησιμοποιείται για την επικοινωνία του χρήστη με σχεσιακές ΒΔ.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Σχεσιακή Άλγεβρα Βάσεις Δεδομένων 2009-2010 Ευαγγελία Πιτουρά 1 Εισαγωγή Στα προηγούμενα μαθήματα: Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός Σχεδιασμός

Διαβάστε περισσότερα

#1.1 Τι είναι η Βάση Δεδομένων

#1.1 Τι είναι η Βάση Δεδομένων 1 2 #1.1 Τι είναι η Βάση Δεδομένων Βάση δεδομένων είναι ένα πλήθος στοιχείων συναφών μεταξύ τους, τοποθετημένα και ταξινομημένα με συγκεκριμένο τρόπο. Με τη χρήση μιας Βάσης Δεδομένων μπορούμε: να καταχωρούμε

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ Εισαγωγή στη MySQL Νικόλαος Ζ. Ζάχαρης Τι είναι η MySql Είναι ένα Σχεσιακό Σύστημα Διαχείρισης

Διαβάστε περισσότερα

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Παραδοτέα 1. Το αρχείο.mdb της βάσης δεδομένων σας σε ACCESS 2. Ένα CD που θα αναγράφει το ονοματεπώνυμο του σπουδαστή και το ΑΕΜ και θα περιέχει το αρχείο.mdb της βάσης δεδομένων καθώς και το εγχειρίδιο

Διαβάστε περισσότερα

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

Τμήμα Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων «Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα» «Σημειώσεις για την SQL» ΕΞΑΜΗΝΟ: ΣΤ Δρ. Κωνσταντίνος Χ. Γιωτόπουλος Πάτρα, Νοέμβριος 2010 SQL Create Table Η CREATE TABLE

Διαβάστε περισσότερα

Εργαστηριακός Οδηγός. Βάσεις Δεδομένων της Γ' Τάξης ΕΠΑΛ

Εργαστηριακός Οδηγός. Βάσεις Δεδομένων της Γ' Τάξης ΕΠΑΛ Άδεια Χρήσης Creative Commons, Αναφορά Προέλευσης 3.0 Ελλάδα 2009-200, Βουρλάκος Μιχαήλ Εργαστηριακός Οδηγός για το μάθημα Βάσεις Δεδομένων της Γ' Τάξης ΕΠΑΛ σε περιβάλλον Microsoft Access Υπεύθυνος Καθηγητής:

Διαβάστε περισσότερα

Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων

Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων ΕΣΔ516 Τεχνολογίες Διαδικτύου Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων Περιεχόμενα - Βιβλιογραφία Ενότητας Περιεχόμενα Ορισμοί Συστατικά στοιχεία εννοιολογικής σχεδίασης Συστατικά

Διαβάστε περισσότερα

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων : Σχεσιακή Άλγεβρα 1

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων : Σχεσιακή Άλγεβρα 1 Εισαγωγή Στα προηγούμενα μαθήματα: Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Σχεσιακού Μοντέλου) Αντιστοιχία

Διαβάστε περισσότερα

Σύβακας Σταύρος ΠΕ19,MSc. IT ΣΥΒΑΚΑΣ ΣΤΑΥΡΟΣ ΕΡΩΤΗΜΑΤΑ

Σύβακας Σταύρος ΠΕ19,MSc. IT ΣΥΒΑΚΑΣ ΣΤΑΥΡΟΣ ΕΡΩΤΗΜΑΤΑ Σύβακας Σταύρος ΠΕ19,MSc. IT Εισαγωγή Τα ερωτήματα (queries) είναι μία από τις πιο σημαντικές δυνατότητες που προφέρει ένα Σ%Β% αφού επιτρέπουν: Ανάκτηση και ανάλυση των δεδομένων στην επιθυμητή μορφή

Διαβάστε περισσότερα

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

Βάσεις δεδομένων. (2 ο μάθημα) Ηρακλής Βαρλάμης Βάσεις δεδομένων (2 ο μάθημα) Ηρακλής Βαρλάμης varlamis@hua.gr Περιεχόμενα Μοντελοποίηση δεδομένων Μοντέλο Οντοτήτων Συσχετίσεων Παραδείγματα Διαγραμματικές τεχνικές Συμβολισμοί Τριαδικές συσχετίσεις 2

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Εργαστήριο ΙV. Τμήμα Πληροφορικής ΑΠΘ 2014-2015 Βάσεις Δεδομένων Εργαστήριο ΙV Τμήμα Πληροφορικής ΑΠΘ 2014-2015 2 Σκοπός του 4 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: η μελέτη ερωτημάτων σύνδεσης η μελέτη ερωτημάτων συνάθροισης 3 Εκφράσεις

Διαβάστε περισσότερα

Μοντέλο Οντοτήτων-Συσχετίσεων

Μοντέλο Οντοτήτων-Συσχετίσεων Μοντέλο Οντοτήτων-Συσχετίσεων 1 Εισαγωγή Σχεδιασμός μιας εφαρμογής ΒΔ: Βήματα 1. Συλλογή και Ανάλυση Απαιτήσεων (requirement analysis) Τι δεδομένα θα αποθηκευτούν, ποιες εφαρμογές θα κτιστούν πάνω στα

Διαβάστε περισσότερα

. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων .. Εργαστήριο Βάσεων Δεδομένων Εισαγωγικό Μάθημα Βασικές Έννοιες - . Ύλη Εργαστηρίου ΒΔ Ύλη - 4 Ενότητες.1 - Σχεδιασμός Βάσης Δεδομένων.2 Δημιουργία Βάσης Δεδομένων Δημιουργία Πινάκων Εισαγωγή/Ανανέωση/Διαγραφή

Διαβάστε περισσότερα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Επεξεργασία Ερωτήσεων Αρχεία ευρετηρίου Κατάλογος συστήματος Αρχεία δεδομένων ΒΑΣΗ Ε ΟΜΕΝΩΝ Σύστημα Βάσεων εδομένων (ΣΒ ) Βάσεις Δεδομένων 2007-2008

Διαβάστε περισσότερα

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub Σύνοψη Σ αυτό το κεφάλαιο θα περιγράψουμε τη δημιουργία φορμών, προκειμένου να εισάγουμε δεδομένα και να εμφανίζουμε στοιχεία από τους πίνακες

Διαβάστε περισσότερα

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

Βάσεις δεδομένων. (3 ο μάθημα) Ηρακλής Βαρλάμης Βάσεις δεδομένων (3 ο μάθημα) Ηρακλής Βαρλάμης varlamis@hua.gr Περιεχόμενα Σχεσιακό μοντέλο δεδομένων Σχέσεις, γνωρίσματα, πλειάδες, πεδία ορισμού Πράξεις ενημέρωσης σε σχέσεις Απεικόνιση μοντέλου οντοτήτωνσυσχετίσεων

Διαβάστε περισσότερα

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές.

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές. Σχολή Διοίκησης και Οικονομίας (ΣΔΟ) Τμήμα Λογιστικής και Χρηματοοικονομικής Διδάσκων: Δρ. Γκόγκος Χρήστος Μάθημα: Πληροφορική ΙI (εργαστήριο) Ακαδημαϊκό έτος 2013-2014 εαρινό εξάμηνο ΟΝΟΜΑΤΕΠΩΝΥΜΟ : ΑΡΙΘΜΟΣ

Διαβάστε περισσότερα

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) MASTER IN OFFICE microsoft access ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) MASTER IN OFFICE microsoft access ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) MASTER IN OFFICE microsoft access ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ MASTER IN OFFICE Το Master in Office είναι κατάλληλο για άτομα που έχουν κάποια εμπειρία στο Office (πχ. κάτοχοι πτυχίου

Διαβάστε περισσότερα

Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων ..?????? Εργαστήριο ΒΑΣΕΙΣ????????? ΔΕΔΟΜΕΝΩΝ Βάσεων Δεδομένων?? ΙΙ Εισαγωγικό Μάθημα Βασικές Έννοιες - . Γενικά Τρόπος Διεξαγωγής Ορισμός: Βάση Δεδομένων (ΒΔ) είναι μια συλλογή από σχετιζόμενα αντικείμενα

Διαβάστε περισσότερα

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων 2014-2015. Ευαγγελία Πιτουρά 1

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων 2014-2015. Ευαγγελία Πιτουρά 1 Το Σχεσιακό Μοντέλο Ευαγγελία Πιτουρά 1 Μοντελοποίηση Σχήμα (database schema): η περιγραφή της δομής της πληροφορίας που είναι αποθηκευμένη στη βδ με τη χρήση ενός μοντέλου δεδομένων Μοντέλο Δεδομένων:

Διαβάστε περισσότερα

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων Εργαστήριο Βάσεων Δεδομένων Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων Τρόπος Διεξαγωγής #1 Ύλη (4 Ενότητες) 1. Ανάλυση Απαιτήσεων -Σχεδιασμός Βάσης Δεδομένων 2. Δημιουργία βάσης a) Create

Διαβάστε περισσότερα

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

Βάσεις δεδομένων. (9 ο μάθημα) Ηρακλής Βαρλάμης Βάσεις δεδομένων (9 ο μάθημα) Ηρακλής Βαρλάμης varlamis@hua.gr Περιεχόμενα Βελτίωση σχεδιασμού Αποσύνθεση σχέσης Συναρτησιακές εξαρτήσεις Θεωρία κανονικών μορφών 1 η NF 2 η NF 3 η NF 2 Βελτίωση σχεδιασμού

Διαβάστε περισσότερα

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

Βάσεις δεδομένων. (7 ο μάθημα) Ηρακλής Βαρλάμης Βάσεις δεδομένων (7 ο μάθημα) Ηρακλής Βαρλάμης varlamis@hua.gr Περιεχόμενα SQL Βασικές πράξεις Πράξεις συνόλων Συνενώσεις Συναθροιστικές συναρτήσεις Ομαδοποιήσεις 10/4/2014 Βάσεις Δεδομένων 2 Η γλώσσα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Ενότητα. Σχεδίαση Βάσεων Δεδομένων Ενότητα 3 Σχεδίαση Βάσεων Δεδομένων 2 3 3.1 Εισαγωγή Μία βάση δεδομένων αποτελείται από δεδομένα για διάφορα θέματα τα οποία όμως σχετίζονται μεταξύ τους και είναι καταχωρημένα με συγκεκριμένο τρόπο. Όλα

Διαβάστε περισσότερα

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

Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό Σχήμα. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό Σχήμα Ευαγγελία Πιτουρά 1 Τι θα δούμε σήμερα: 1. Ο/Σ -> σχεσιακό 2. Ορισμός σχεσιακής βάσης σε SQL Αρχικά ας σχεδιάσουμε μια σχεσιακή βάση δεδομένων χωρίς να σχεδιάσουμε

Διαβάστε περισσότερα

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Αρχεία ευρετηρίου Κατάλογος ΒΑΣΗ Ε ΟΜΕΝΩΝ Αρχεία δεδομένων συστήματος Σύστημα Βάσεων εδομένων (ΣΒ ) 2 :

Διαβάστε περισσότερα

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων Μαρία Χαλκίδη Εισαγωγή Εννοιολογικός Σχεδιασμός Βάσεων Δεδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός Σχεδιασμός Βάσεων Δεδομένων (με χρήση

Διαβάστε περισσότερα

Σχεσιακή Άλγεβρα. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1

Σχεσιακή Άλγεβρα. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1 Σχεσιακή Άλγεβρα Παύλος Εφραιμίδης Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1 Θεμελίωση της Σχεσιακού Μοντέλου Δεδομένων Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός Στο μάθημα θα πούμε για Σχεσιακή Άλγεβρα Βάσεις Δεδομένων

Διαβάστε περισσότερα