Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
1
Βάσεις Δεδομένων Γιώργος Λαγογιάννης
2
ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ - ΣΥΣΧΕΤΙΣΕΩΝ
Ο κόσμος αποτελείται από οντότητες που συσχετίζονται μεταξύ τους...
3
ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ - ΣΥΣΧΕΤΙΣΕΩΝ
Ο κόσμος αποτελείται από σύνολα οντοτήτων... Υπάλληλοι Φοιτητές Καθητητές Μαθήματα Φορολογούμενοι Ασφαλισμένοι Συγγραφείς Μουσειακά εκθέματα Φάρμακα … ... Κάθε κομμάτι του πραγματικού κόσμου που μελετάμε έχει τα δικά του σύνολα οντοτήτων Βιβλία Φοιτητές Βιβλιοθήκη Συγγραφείς Πανεπιστήμιο Καθηγητές Εκδοτικοί οίκοι Μαθήματα
4
ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ - ΣΥΣΧΕΤΙΣΕΩΝ
Όλες οι οντότητες του ίδιου τύπου οντοτήτων έχουν τα ίδια γνωρίσματα. Οι τιμές των γνωρισμάτων αυτών είναι που διαφοροποιούν τις οντότητες του ίδιου τύπου οντοτήτων Επώνυμο Όνομα Φοιτητές ΑΜ
5
ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ - ΣΥΣΧΕΤΙΣΕΩΝ
Υπάρχουν γνωρίσματα που παίρνουν μόνο μία τιμή π.χ. ΑΜ και γνωρίσματα που μπορούν να πάρουν περισσότερες από μία τιμές. Τα τελευταία τα συμβολίζουμε διαφορετικά. Επώνυμο Όνομα Φοιτητές τηλέφωνα ΑΜ
6
ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ - ΣΥΣΧΕΤΙΣΕΩΝ
Υπερκλειδί (super-key): σύνολο από ένα η περισσότερα γνωρίσματα που διαχωρίζουν με μοναδικό τρόπο τις οντότητες ενός τύπου οντοτήτων Υποψήφιο κλειδί (candidate key): Είναι ένα υπερκλειδί που έχει την ιδιότητα του αμείωτου, δηλαδή αν αφαιρέσουμε οποοδήποτε από τα γνωρίσματα που το απαρτίζουν, δε θα είναι πια υπερκλειδί. Πρωτεύον κλειδί (primary key): το υποψήφιο κλειδί που τελικά επιλέγουμε για να παίξει το ρόλο του διαχωριστή Επώνυμο Όνομα Φοιτητές τηλέφωνα ΑΜ
7
Συσχέτιση ένα προς ένα Μαθήματα Καθηγητές Καθηγητές Μαθήματα ΑΜ
Επώνυμο Όνομα 1 Λαγογιάννης Γιώργος 2 Παπαδόπουλος Γιάννης 3 Μακρής Χρήστος 4 Τσάκας Βασίλης Κωδικός τίτλος 1 Προγραμματισμός 2 Πληροφορική 3 Μαθηματικά 4 Χημεία Καθηγητές Μαθήματα Κωδικός τίτλος 1 Προγραμματισμός 2 Πληροφορική 3 Μαθηματικά 4 Χημεία ΑΜ Επώνυμο Όνομα 1 Λαγογιάννης Γιώργος 2 Παπαδόπουλος Γιάννης 3 Μακρής Χρήστος 4 Τσάκας Βασίλης Μάθημα 2 1 4 3
8
Συσχέτιση ένα προς ένα Διδάσκει Διδάσκει 1 1 Μάθημα Μάθημα Καθηγητής
Κωδικός Κωδικός τίτλος τίτλος ΑΜ ΑΜ Επώνυμο Επώνυμο Όνομα Όνομα Καθηγητής Μάθημα ΑΜ Επώνυμο Όνομα Μάθημα Κωδιικός Τίτλος Χειρισμός συσχέτισης 1-1 Φτιάχνουμε ένα επιπλέον πεδίο (στήλη) σε οποιονδήποτε από τους δύο πίνακες, και σε κάθε κελί της νέας αυτής στήλης αποθηκεύουμε το άλλο άκρο της κόκκινης σύνδεσης (που “ακουμπάει” στη γραμμή στην οποία αντιστοιχεί το κελί αυτό). Συσχετίζουμε τη νέα στήλη με το πρωτεύον κλειδί του άλλου πίνακα (που ορίζει το άλλο άκρο της κόκκινης σύνδεσης)
9
Συσχέτιση ένα προς πολλά
Δημότες Δήμοι ΑΤ Επώνυμο Όνομα 1234 Αλφάδης Κώστας 2345 Βήτας Βασίλης 4567 Γαλάκης Μάκης 4587 Δελτάκης Σωτήρης 3456 Επσιλούζος Λευτέρης 4769 Ζητόπουλος Μανώλης 2349 Ητίδης Αλέξης 4519 Θηταράς Παναγιώτης ΑΜ Όνομα Περιφέρεια 1 Περιστέρι Αττικής 2 Αθήνα 3 Πειραιάς 4 Γλυφάδα 5 Χαλάνδρι
10
Συσχέτιση ένα προς πολλά
Δήμος ΑΤ Επώνυμο Όνομα 1234 Αλφάδης Κώστας 2345 Βήτας Βασίλης 4567 Γαλάκης Μάκης 4587 Δελτάκης Σωτήρης 3456 Επσιλούζος Λευτέρης 4769 Ζητόπουλος Μανώλης 2349 Ητίδης Αλέξης 4519 Θηταράς Παναγιώτης ΑΜ Όνομα Περιφέρεια 1 Περιστέρι Αττικής 2 Αθήνα 3 Πειραιάς 4 Γλυφάδα 5 Χαλάνδρι 1 2 3 4 5 1 1 5 Χειρισμός συσχέτισης ένα προς πολλά Φτιάχνουμε ένα επιπλέον πεδίο (στήλη) στον πίνακα από κάθε γραμμή του οποίου ξεκινάει μία μόνο κόκκινη σύνδεση. Σε κάθε κελί της νέας αυτής στήλης αποθηκεύουμε το άλλο άκρο αυτής της κόκκινης σύνδεσης. Συσχετίζουμε τη νέα στήλη με το πρωτεύον κλειδί του άλλου πίνακα (που ορίζει το άλλο άκρο της κόκκινης σύνδεσης). Παρατηρήστε ότι σε κάθε κελί της νέας στήλης αποθηκεύεται μία μόνο τιμή (αφού υπάρχει μία μόνο κόκκινη σύνδεση). Αν φτιάχναμε το επιπλέον πεδίο στον άλλο πίνακα, σε κάθε κελί θα έπρεπε να αποθηκευτούν πολλές τιμές. Θα δημιουργούσαμε έτσι ένα πλειότιμο πεδίο, και αυτό είναι που θέλουμε να αποφύγουμε.
11
Συσχέτιση ένα προς πολλά
Κατοικεί σε Ν 1 Δήμος Δημότης κωδικός Όνομα ΑΤ Επώνυμο Όνομα Δημότης Δήμος ΑΤ Επώνυμο Όνομα Δήμος Κωδικός Όνομα
12
Συσχέτιση πολλά προς πολλά
Φοιτητές Εξετάσεις Μαθήματα
13
Συσχέτιση πολλά προς πολλά
Φοιτητές Μαθήματα Εξετάσεις Χειρισμός συσχέτισης ένα προς πολλά Για να χειριστούμε μία συσχέτιση πολλά προς πολλά ανάμεσα σε δύο πίνακες Α και Β, δημιουργούμε ένα νέο πίνακα Γ κάθε γραμμή του οποίου αντιστοιχεί σε μία κόκκινη σύνδεση ανάμεσα στους Α και Β. Μία τέτοια κόκκινη σύνδεση ορίζεται από τα δύο άκρα της και κάθε άκρο ορίζεται από την τιμή που έχει το πρωτεύον κλειδί. Στο σχήμα που προκύπτει, η συσχέτιση πολλά προς πολλά ανάμεσα στους Α και Β έχει μετατραπεί σε δύο συσχετίσεις ένα προς πολλά ανάμεσα στος Α - Γ και Β - Γ αντίστοιχα
14
Συσχέτιση πολλά προς πολλά
Εξετάστηκε σε Μ Ν Μάθημα Φοιτητής κωδικός Τίτλος ΑΜ Επώνυμο Όνομα Ημερομηνία Βαθμός Φοιτητής ΑΜ Επώνυμο Όνομα Εξέταση ΑΜ Κωδικός Ημερομηνία Βαθμός Μάθημα Κωδικός Τίτλος
15
Παράδειγμα: Εμφιαλωτήριο
Κάθε βαθμός που πήρε το κρασί στο άρωμα αυξάνει την τιμή του κρασιού (ανά λίτρο) κατά 0,2 ευρώ Καταγράφεται επίσης για κάθε φορτίο, ο όγκος (σε λίτρα) του κρασιού που περιέχεται στο φορίο καθώς και το είδος του κρασιού (Λευκό, Ροζέ ή Κόκκινο) Για κάθε ετικέτα, αποθηκεύουμε το όνομα της ετικέτας, τη χωρητικότητα της φιάλης σε λίτρα και τον όγκο του κρασιού (σε λίτρα) που εμφιαλώθηκε στην ετικέτα αυτή
16
Παράδειγμα - Εμφιαλωτήριο
Διάγραμμα οντοτήτων συσχετίσεων Σχήμα ως προς το σχεσιακό μοντέλο ?
17
Παράδειγμα - Εμφιαλωτήριο
Παραγωγός Κωδικός Όνομα Πόλη Τηλέφωνο Φορτίο Κωδικός Γεύση Επίγευση Άρωμα Είδος Λίτρα Ετικέτα Όνομα Χωρητικότητα φιάλης Λίτρα
18
Παράδειγμα - Εμφιαλωτήριο
Παραγωγός Κωδικός Όνομα Πόλη Τηλέφωνο Φορτίο Κωδικός Γεύση Επίγευση Άρωμα Είδος Λίτρα Ετικέτα Όνομα Χωρητικότητα φιάλης Λίτρα
19
Παράδειγμα - Εμφιαλωτήριο
Παραγωγός Κωδικός Όνομα Πόλη Τηλέφωνο Φορτίο Κωδικός Γεύση Επίγευση Άρωμα Είδος Λίτρα Κωδ_παρ Ετικέτα Όνομα Χωρητικότητα φιάλης Λίτρα
20
Παράδειγμα - Εμφιαλωτήριο
Παραγωγός Κωδικός Όνομα Πόλη Τηλέφωνο Φορτίο Κωδικός Γεύση Επίγευση Άρωμα Είδος Λίτρα Κωδ_παρ Ετικέτα Όνομα Χωρητικότητα φιάλης Λίτρα
21
Παράδειγμα - Εμφιαλωτήριο
Παραγωγός Κωδικός Όνομα Πόλη Τηλέφωνο Φορτίο Κωδικός Γεύση Επίγευση Άρωμα Είδος Λίτρα Κωδ_παρ Ετικέτα Όνομα Χωρητικότητα φιάλης Λίτρα Κωδ_φορ
22
Παράδειγμα - Εμφιαλωτήριο
Παραγωγός Κωδικός Όνομα Πόλη Τηλέφωνο Φορτίο Κωδικός Γεύση Επίγευση Άρωμα Είδος Λίτρα Κωδ_παρ Ετικέτα Όνομα Χωρητικότητα φιάλης Λίτρα Κωδ_φορ
23
Παράδειγμα - Εμφιαλωτήριο
To ίδιο σχήμα στην ACCESS
26
Παράδειγμα - Εμφιαλωτήριο Ερωτήματα
Ας δούμε πρώτα ερωτήματα η απάντηση των οποίων προκύπτει μετά από επεξεργασία ενός μόνο πίνακα. Μπορούμε να τα απαντήσουμε και με τη βοήθεια του calc Φιλτράροντας γραμμές 1. Να απεικονιστούν οι παραγωγοί από την πόλη “Νεμέα”. 2. Να απεικονιστούν τα φορτία με όγκο μεγαλύτερο από 3000 λίτρα. 3. Να απεικονιστούν τα φορτία κόκκινου κρασιού με όγκο μεγαλύτερο από λίτρα
27
Παράδειγμα - Εμφιαλωτήριο
Να απεικονιστούν οι παραγωγοί από την πόλη “Νεμέα” Στο calc μπορούμε να χρησιμοποιήσουμε φίλτρο. Στην access, δημιουργούμε το ακόλουθο ερώτημα
28
Παράδειγμα - Εμφιαλωτήριο
Να απεικονιστούν τα φορτία με όγκο μεγαλύτερο από 3000 λίτρα.
29
Παράδειγμα - Εμφιαλωτήριο
Να απεικονιστούν τα φορτία κόκκινου κρασιού με όγκο μεγαλύτερο από 3000 λίτρα Λύση 1
30
Παράδειγμα - Εμφιαλωτήριο
Να απεικονιστούν τα φορτία κόκκινου κρασιού με όγκο μεγαλύτερο από 3000 λίτρα Λύση 2
31
Παράδειγμα - Εμφιαλωτήριο
Φιλτράροντας στήλες Για κάθε φορτίο κόκκινου κρασιού με όγκο > 3000 λίτρα, να εμφανιστεί ο κωδικός του φορτίου καθώς και ο κωδικός του παραγωγού στον οποίο ανήκει το φορτίο Χρησιμοποιούμε το προηγούμενο ερώτημα, στο οποίο απεικονίζονται όλα τα φορτία κόκκινου κρασιού με όγκο > Επιλέγουμε όμως να εμφανιστούν μόνο οι “στήλες” που μας ενδιαφέρουν
32
Παράδειγμα - Εμφιαλωτήριο
Να απεικονιστεί για κάθε φορτίο κρασιού, η τιμή λίτρου του φορτίου (μαζί με όλα τα πεδία που ήδη υπάρχουν)
33
Παράδειγμα - Εμφιαλωτήριο
Αθροιστικά ερωτήματα Να απεικονιστεί ο συνολικός όγκος κρασιού ανά είδος κρασιού
34
Επί της ευκαιρίας, λίγη θεωρία
Σε μία σχεσιακή βάση δεδομένων, τα δεδομένα εμφανίζονται στο χρήστη με τη μορφή πινάκων. Αυτό ισχύει και για τα αποτελέσματα των ερωτημάτων. Η διαφορά ανάμεσα σε ένα πίνακα της βάσης δεδομένων και στην απάντηση ενός ερωτήματος, είναι ότι στην πρώτη περίπτωση ο πίνακας υπάρχει (σε κάποια μορφή) στη δευτερεύουσα μνήμη ενώ στη δεύτερη δεν υπάρχει. Για να τονίσουμε τη διαφορά αυτή θα ονομάσουμε (στα πλαίσια της παρουσίασης αυτής) τα αποτελέσματα των ερωτημάτων “πίνακες” (με εισαγωγικά) για να τους ξεχωρίσουμε από τους πίνακες που υπάρχουν αποθηκευμένοι στο δίσκο. Οι “πίνακες” μπορούν να χρησιμοποιηθούν σαν είσοδοι ερωτημάτων όπως ακριβώς και οι πίνακες. Ένα ερώτημα είναι ένα πρόγραμμα που δέχεται σαν είσοδο ένα πίνακα ή “πίνακα” και παράγει στην έξοδο ένα “πίνακα”. Η γλώσσα προγραμματισμού με την οποία φτιάχνονται τα ερωτήματα αυτά ονομάζεται SQL (Structured Query Language). Είναι μία γλώσσα προγραμματισμού 4ης γενιάς.
35
Παράδειγμα - Εμφιαλωτήριο
Πράξη INNER JOIN Παραγωγοί Φορτία Κωδικός Όνομα Πόλη Κωδικός Γεύση Λίτρα Κωδ_παρ 1 Λαγογιάννης Αθήνα 1 7 1 1 2 6 2 1 2 Μαλιάππης Νεμέα 3 8 3 2 3 Γιαλούρης Νεμέα 4 9 4 3 1 Λαγογιάννης Αθήνα 1 7 1 1 1 Λαγογιάννης Αθήνα 2 6 2 1 2 Μαλιάππης Νεμέα 3 8 3 2 3 Γιαλούρης Νεμέα 4 9 4 3 Συσχετίζοντας τις στήλες Παραγωγοί(κωδικός) και Φορτία(κωδ_παρ),και κάνοντας την πράξη INNER JOIN υπό αυτή τη συσχέτιση, ο “πίνακας” που προκύπτει από την INNER JOIN περιέχει μία γραμμή για κάθε κόκκινο σύνδεσμο
36
Παράδειγμα πράξης inner join
Εμφανίστε για κάθε φορτίο όλες τις πληροφορίες του φορτίου καθώς και όλες τις πληροφορίες του παραγωγού στον οποίο ανήκει το φορτίο Ερώτημα 1
37
Παράδειγμα - Εμφιαλωτήριο
Αποτέλεσμα ερωτήματος 1 Αυτός ο “πίνακας” μπορεί τώρα να χρησιμοποιηθεί σαν βάση για ερωτήματα φιλτραρίσματος γραμμών ή στηλών
38
Επί της ευκαιρίας, λίγη θεωρία
Μπαίνει κανείς στον πειρασμό να ρωτήσει, γιατί δεν συμπεριλάβαμε στην αρχική σχεδίαση της βάσης δεδομένων τον “πίνακα” – αποτέλεσμα της πράξης inner join ανάμεσα στους παραγωγούς και στα φορτία (αφού όπως θα δούμε θα τον χρησιμοποιήσουμε ως είσοδο σε ερωτήματα) Η απάντηση στο ερώτημα αυτό δίνεται αν ρίξουμε μία προκεκτική ματιά στα περιεχόμενα του “πίνακα” – απάντηση - του ερωτήματος 1. Προκύπτει ότι τα στοιχεία ενός παραγωγού μπορεί να υπάρχουν σε περισσότερες από μία γραμμές του “πίνακα” αυτού. Πιο συγκεκριμένα, τα στοιχεία του κάθε παραγωγού αποθηκεύονται μία φορά για κάθε φορτίο του παραγωγού. Υπάρχει έτσι πλεονασμός δεδομένων (πολλάπλές καταχωρήσεις της ίδιας πληροφορίας), και η αποφυγή του πλεονασμού είναι ένας βασικός στόχος της σχεδίασης βάσεων δεδομένων
39
Πράξη INNER JOIN Εμφάνισε για κάθε φορτίο τον κωδικό του και το όνομα του παραγωγού από τον οποίο προέρχεται το φορτίο Ερώτημα 1 Ερώτημα 2
40
Πράξη INNER JOIN Αποτέλεσμα ερωτήματος 2
41
Πράξη INNER JOIN Εμφανίστε όλα τα φορτία του παραγωγού με κωδικό 1. Για κάθε φορτίο να εμφανίζεται το όνομα του παραγωγού (που όπως είπαμε έχει κωδικό 1) καθώς και ο κωδικός του φορτίου Ερώτημα 3
42
Πράξη INNER JOIN Αποτέλεσμα ερωτήματος 3
43
Πράξη INNER JOIN Εμφανίστε για κάθε ετικέτα το όνομά της, τον κωδικό του φορτίου από το οποίο προέρχεται καθώς και το όνομα του παραγωγού στον οποίο ανήκει το φορτίο Ερώτημα 4
44
Πράξη INNER JOIN Αποτέλεσμα ερωτήματος 4
45
Αθροιστικά ερωτήματα Εμφανίστε τη συνολική ποσότητα κρασιού (σε λίτρα) που έφτασε στο εμφιαλωτήριο Αποτέλεσμα ερωτήματος 5 Ερώτημα 5
46
Αθροιστικά ερωτήματα Εμφανίστε για κάθε είδος κρασιού, τη συνολική ποσότητα κρασιού που έφτασε στο εμφιαλωτήριο Αποτέλεσμα ερωτήματος 6 Ερώτημα 6
47
Αθροιστικά ερωτήματα Εμφανίστε για κάθε πόλη, τη συνολική ποσότητα κρασιού που προήλθε από την πόλη αυτή Αποτέλεσμα ερωτήματος 7 Ερώτημα 7
48
Αθροιστικά ερωτήματα Εμφανίστε για κάθε παραγωγό, το όνομά του και το πλήθος των φορτίων που έφερε προς εμφιάλωση Ερώτημα 8
49
Αθροιστικά ερωτήματα Αποτέλεσμα ερωτήματος 8
50
Αθροιστικά ερωτήματα Για κάθε παραγωγό να εμφανιστεί το όνομά του και το ποσό που εισέπραξε από το κρασί του Θα υλοποιήσουμε το ερώτημα αυτό σε 3 βήματα (ερώτημα 9, ερώτημα 10 και ερώτημα 11).
51
Αθροιστικά ερωτήματα Το ερώτημα 9 (μάλλον περιττό) δημιουργεί τον πίνακα που περιέχει όσα χρειαζόμαστε για να παράξουμε τον αρχικό πίνακα από τον οποίο θα παραχθεί ο τελικός. Ο αρχικός πίνακας περιέχει για κάθε φορτίο, το όνομα του παραγωγού στον οποίο ανήκει το φορτίο, καθώς και τις πληροφορίες του φορτίου που θα χρειαστούμε για να παράξουμε την τιμή ανά λίτρο Ερώτημα 9
52
Αθροιστικά ερωτήματα Αποτέλεσμα ερωτήματος 9
53
Αθροιστικά ερωτήματα Το ερώτημα 10 προσθέτει στον πίνακα – αποτέλεσμα – του ερωτήματος 9 μία νέα στήλη, στην οποία περιέχεται το ποσό που αποκόμισε ο παραγωγός από το φορτίο. Το ποσό αυτό είναι ίσο με την τιμή ανά λίτρο για το κρασί του φορτίου, επί τον όγκο (σε λίτρα) του φορτίου. Ονομάζουμε την καινούργια στήλη “Είσπραξη φορτίου”
54
Αθροιστικά ερωτήματα Ερώτημα 10
55
Αθροιστικά ερωτήματα Αποτέλεσμα ερωτήματος 10
56
Αθροιστικά ερωτήματα Το μόνο που απομένει τώρα είναι (στον πίνακα – αποτέλεσμα – του ερωτήματος 10) να ομαδοποιήσουμε ως προς όνομα, και να υπολογίσουμε το άθροισμα της στήλης “Είσπραξη φορτίου”. Αυτό το κάνουμε με το ερώτημα 11. Ερώτημα 11
57
Αθροιστικά ερωτήματα Αποτέλεσμα ερωτήματος 11
58
Λίγη θεωρία ακόμη – Αρχιτεκτονική βάσεων δεδομένων
ΕΞΩΤΕΡΙΚΟ ΕΠΙΠΕΔΟ Αλληλεπιδρά με τους χρήστες Εξωτερικό επίπεδο ΕΝΝΟΙΟΛΟΓΙΚΟ (ΙΔΕΑΤΟ) ΕΠΙΠΕΔΟ Περιγραφή του λογικού σχήματος της ΒΔ Ενοιολογικό επίπεδο ΕΣΩΤΕΡΙΚΟ ΕΠΙΠΕΔΟ Αλληλεπιδρά απευθείας με το υλικό. Εσωτερικό επίπεδο Υλικό
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.