[email protected] Δείγμα σημειώσεων για τις Βάσεις Δεδομένων για τις εξετάσεις του ΑΣΕΠ Εκπαιδευτικών ΠΕ19-ΠΕ20 Σύνθετοι τύποι δεδομένων: Είναι προφανές, πως τα όσα έχουν αναφερθεί μέχρι τώρα, αφορούν στοιχειώδεις μορφές δεδομένων. Τα δεδομένα αυτά συσχετίζονται με μία και μοναδική τιμή, και δεν μπορούν να αναλυθούν σε μικρότερες μονάδες με κανένα τρόπο. Στις πιο συνηθισμένες όμως περιπτώσεις, τα δεδομένα υφίστανται ευκολότερη και αποτελεσματικότερη διαχείριση εάν ομαδοποιηθούν σε μεγαλύτερες οντότητες, τις οποίες διαπραγματευόμαστε όπως ακριβώς και τα απλά δεδομένα. Ας πάρουμε για παράδειγμα την περίπτωση ενός νοσοκομείου. Εάν θελήσουμε να δημιουργήσουμε ένα πρόγραμμα στο οποίο θα καταχωρούμε τα στοιχεία των ασθενών, τότε τα στοιχεία εκείνα που θα κρατάμε για κάθε ασθενή, θα είναι το όνομά του, το επώνυμό του, η ηλικία του, και ο κωδικός του. Στην περίπτωση αυτή, ο προγραμματιστής έχει δυο επιλογές: είτε να δημιουργήσει τέσσερα διαφορετικά πεδία στα οποία θα καταχωρεί τα στοιχεία του ασθενούς, είτε να δημιουργήσει ένα σύνθετο τύπο δεδομένων – τον οποίο ας ονομάσουμε Patient – που θα περιέχει τα τέσσερα πεδία που περιγράψαμε παραπάνω. Στις συμβατικές γλώσσες προγραμματισμού, αυτοί οι σύνθετοι τύποι δεδομένων ονομάζονται δομές δεδομένων (data structures). Στην τεχνολογία των βάσεων δεδομένων, οι δομές αυτές ονομάζονται εγγραφές (records). Ερώτηση Σύνθετοι τύποι δεδομένων είναι εκείνοι οι οποίοι: a) Μπορούν να δηλωθούν με παραπάνω από έναν τύπο δεδομένων b) Συσχετίζονται με μία και μοναδική τιμή c) Οντότητες που αποτελούνται από πολλά δεδομένα d) Όλα τα παραπάνω Ερώτηση Σε ένα σωστά σχεδιασμένο σύστημα Βάσεων Δεδομένων ενός νοσοκομείου, μία οντότητα θα μπορούσε να είναι: a) Ένας γιατρός b) Το όνομα ενός ασθενή c) Το γεγονός συνταγολόγησης ενός ασθενούς από έναν γιατρό d) Τίποτα από τα παραπάνω Ερώτηση (ΑΣΕΠ 2005) [email protected] [email protected] Με τον όρο «βάση δεδομένων» εννοούμε: a) Ένα σύστημα λογισμικού που διαχειρίζεται δεδομένα b) Μια συλλογή από δεδομένα, οργανωμένα και με γνωστό το σχήμα οργάνωσής τους (πεδία, τύπους πεδίων κ.λπ.) c) Ένα σύστημα λογισμικού που επιτρέπει ερωτήσεις πάνω σε δεδομένα d) Μια συλλογή από αρχεία και τις σχέσεις μεταξύ τους ….. Χαρακτηριστικά της βάσης δεδομένων Μία βάση δεδομένων για να θεωρηθεί σωστά σχεδιασμένη και να μπορεί να λειτουργήσει με αποτελεσματικό τρόπο, θα πρέπει να διαθέτει ένα πλήθος χαρακτηριστικών τα πιο σημαντικά εκ των οποίων είναι τα ακόλουθα: 1. Δεν θα πρέπει να περιλαμβάνει περιττά δεδομένα (reduntant data). Αυτό σημαίνει ότι τα ίδια δεδομένα δεν θα πρέπει να καταχωρούνται στη βάση δύο φορές. Εάν συμβαίνει κάτι τέτοιο, τότε ανακύπτουν δυο σοβαρά προβλήματα. Το πρώτο και προφανές πρόβλημα, είναι ότι σπαταλούμε άσκοπα αποθηκευτικό χώρο στο σκληρό δίσκο, αφού την ίδια πληροφορία την αποθηκεύουμε δύο φορές. Το δεύτερο και σοβαρότερο πρόβλημα, είναι ότι υπάρχει ο κίνδυνος δημιουργίας ασυνεπών δεδομένων (inconsistent data). Πράγματι, εάν κρατάμε δύο φορές την ίδια πληροφορία και η πληροφορία αυτή σε κάποια χρονική στιγμή υποστεί κάποιο είδος επεξεργασίας – για παράδειγμα την τροποποιήσουμε ή τη διαγράψουμε – τότε η επεξεργασία αυτή θα πρέπει να εφαρμοσθεί και στις δύο καταχωρήσεις που αφορούν το ίδιο δεδομένο, διότι διαφορετικά, η βάση θα περιέχει δεδομένα που δεν είναι συνεπή. Για το λόγο αυτό, ένας από τους πρώτους ελέγχους που πραγματοποιούμε στη βάση αμέσως μετά το σχεδιασμό της, είναι ο έλεγχος παρουσίας επαναλαμβανόμενων πεδίων, και η απομάκρυνσή τους, εφόσον υπάρχουν. 2. Η βάση θα πρέπει να είναι σχεδιασμένη έτσι ώστε τα δεδομένα που περιλαμβάνει να ανακτώνται εύκολα και γρήγορα. Μια κακή σχεδίαση της δομής της βάσης, οδηγεί στη δημιουργία μιας βάσης η οποία είναι εξαιρετικά δυσκίνητη και αναποτελεσματική. Η σωστή σχεδίαση μιας βάσης δεδομένων, επιτυγχάνεται με εφαρμογή επί της δομής της βάσης, μιας τεχνικής, η οποία ονομάζεται κανονικοποίηση (normalization). Η περιγραφή αυτής της τεχνικής παρουσιάζεται διεξοδικά σε επόμενη ενότητα. 3. Η βάση θα πρέπει να χαρακτηρίζεται από σύστημα ασφάλειας (security system) που να απαγορεύει την πρόσβαση στα δεδομένα μη [email protected] [email protected] εξουσιοδοτημένων ατόμων. Αυτό ισχύει κυρίως όπως θα δούμε, σε μεγάλες βάσεις δεδομένων με πολλούς χρήστες, και η τεχνική που συνήθως εφαρμόζεται, συνίσταται στον καθορισμό ομάδων χρηστών (user groups) με διαφορετικά δικαιώματα πρόσβασης στον καθένα από αυτούς. Ο κάθε χρήστης λαμβάνει ένα κωδικό πρόσβασης (password) και τα καθήκοντα που μπορεί να επιτελέσει είναι εντελώς συγκεκριμένα και καθορισμένα εκ των προτέρων. 4. Η βάση θα πρέπει να μπορεί να διαχειρίζεται ταυτόχρονες προσπελάσεις πάνω στα ίδια δεδομένα (concurrency control). Ένα σύστημα κράτησης αεροπορικών εισιτηρίων που δέχεται ταυτόχρονες κλήσεις για κρατήσεις θέσεων, θα πρέπει να έχει τη δυνατότητα να αποτρέψει την καταχώρηση της ίδιας θέσης σε δύο άτομα που την έχουν ζητήσει ταυτόχρονα. 5. Η βάση θα πρέπει να διαθέτει σύστημα δημιουργίας αντιγράφων ασφαλείας των δεδομένων που είναι καταχωρημένα σε αυτή (backups). Η ταυτόχρονη αποθήκευση των δεδομένων σε περισσότερους από ένα δίσκους, είναι μια εργασία επιβεβλημένη, προκειμένου να είναι δυνατή η ανάκτησή τους σε περιπτώσεις κατάρρευσης της βάσης για οποιοδήποτε λόγο. Ερώτηση Σε μία Βάση Δεδομένων: a) Δεν υπάρχει δυνατότητα ταυτόχρονης προσπέλασης πάνω στα ίδια δεδομένα b) Για την αποφυγή ασυνεπών δεδομένων πρέπει να σχεδιάζεται ώστε να μη διαθέτει αντίγραφα ασφαλείας (backups) c) Περιττά δεδομένα και ασυνεπή δεδομένα είναι δύο έννοιες ταυτόσημες d) Τίποτα από τα παραπάνω ….. Στάδιο 1: Σχεδίαση και υλοποίηση της βάσης Η σχεδίαση μιας βάσης δεδομένων περιλαμβάνει τον καθορισμό της δομής της βάσης, των τύπων δεδομένων που θα καταχωρούνται στη βάση, και του πλήθους και του είδους των διαδικασιών που θα εφαρμόζονται στα δεδομένα της βάσης. Στο σημείο αυτό θα πρέπει να αναφέρουμε ότι πριν το σχεδιασμό της βάσης, προηγείται πλήρης ανάλυση της συμπεριφοράς και των απαιτήσεων του συστήματος που πρόκειται να υλοποιήσουμε. [email protected] [email protected] Μιλώντας γενικά, η σχεδίαση μιας βάσης δεδομένων, μπορεί να ορισθεί ως μια διεργασία τριών επιπέδων. Τα επίπεδα αυτά είναι, το φυσικό επίπεδο (physical level), το λογικό επίπεδο (logical level), και το επίπεδο όψης (view level). • Στο φυσικό επίπεδο, η κύρια μέριμνά μας είναι ο καθορισμός του τρόπου με τον οποίο τα δεδομένα της βάσης θα αποθηκεύονται στο σύστημα. Βρίσκεται πλησιέστερα στον πραγματικό τρόπο με τον οποίο είναι καταχωρημένα τα δεδομένα στην περιφερειακή μνήμη. Στο επίπεδο αυτό, καθορίζουμε τους τύπους των δεδομένων της βάσης, τους αλγόριθμους διαχείρισης των δεδομένων, και γενικά, ασχολούμαστε με διαδικασίες οι οποίες χαρακτηρίζονται από μεγάλο βαθμό πολυπλοκότητας. • Στο λογικό επίπεδο, τα πράγματα είναι πιο απλά. Εδώ ξεφεύγουμε από τις λεπτομέρειες και την πολυπλοκότητα του φυσικού επιπέδου, και το μόνο που κάνουμε, είναι να καθορίζουμε ποια δεδομένα θα αποθηκευτούν στη βάση του συστήματος, και ποιες είναι οι σχέσεις που υφίστανται ανάμεσά τους. Είναι λοιπόν εύκολα αντιληπτό, πως η διαφορά ανάμεσα στο φυσικό και στο λογικό επίπεδο, έχει να κάνει με τον τύπο διαχείρισης των δεδομένων: στο φυσικό επίπεδο καθορίζουμε πώς τα δεδομένα θα αποθηκευτούν στη βάση του συστήματος, ενώ στο λογικό επίπεδο, καθορίζουμε ποια είναι αυτά τα δεδομένα. • Τέλος, στο επίπεδο όψης (ή και εξωτερικό), καθορίζουμε εκείνο το τμήμα της βάσης που θα είναι ορατό σε κάθε χρήστη. Αυτό κυρίως βρίσκει εφαρμογή σε μεγάλες βάσεις δεδομένων με πολύπλοκη σχεδίαση και μεγάλο αριθμό χρηστών. Ας πάρουμε ξανά για παράδειγμα τη βάση δεδομένων του νοσοκομείου. Τα δεδομένα που καταχωρούνται στη βάση αυτή, είναι κάθε είδους, και γενικά μη συσχετιζόμενα μεταξύ τους. Για παράδειγμα, για κάθε ασθενή, καταχωρούμε τα προσωπικά και οικονομικά του στοιχεία, το ιατρικό ιστορικό του, και την εξέλιξη της υγείας του. Τα στοιχεία αυτά, τα χειρίζονται εν γένει, διαφορετικοί χρήστες: τα οικονομικά στοιχεία τα επεξεργάζεται η γραμματεία του νοσοκομείου, ενώ τα ιατρικά στοιχεία, οι θεράποντες ιατροί του ασθενούς. Αυτό σημαίνει ότι το πρόγραμμα που θα χρησιμοποιείται στη γραμματεία του νοσοκομείου, θα εμφανίζει μόνο τα οικονομικά στοιχεία, ενώ τα προγράμματα που χρησιμοποιούν οι ιατροί, θα εμφανίζουν μόνο τα ιατρικά στοιχεία. Τα δεδομένα λοιπόν που θα διαχειρίζονται οι δυο αυτές κατηγορίες χρηστών, θα είναι εντελώς ξένα μεταξύ τους, και μάλιστα σε τέτοιο σημείο, ώστε να δημιουργείται η ψευδαίσθηση ότι πρόκειται για δυο διαφορετικές βάσεις, ενώ στην πραγματικότητα, η βάση είναι μια και μοναδική. Ένας άλλος λόγος για τον οποίο συμβαίνει αυτός ο διαχωρισμός, είναι ζητήματα ασφαλείας. Για παράδειγμα, ένας υπάλληλος της γραμματείας, δεν θα πρέπει να μπορεί να διαβάζει τον ιατρικό φάκελλο του ασθενούς, διότι παραβιάζει το ιατρικό απόρρητο. Όπως δε, θα δούμε στη συνέχεια, είναι κοινή πρακτική, κυρίως στις περιπτώσεις των μεγάλων βάσεων δεδομένων, να ορίζονται ομάδες χρηστών στους [email protected] [email protected] οποίους να καταχωρούνται διαφορετικά δικαιώματα πρόσβασης, και διαφορετικά δεδομένα προς διαχείριση. Ερώτηση Σε ποιο επίπεδο σχεδίασης της βάσης δεδομένων καθορίζεται με ποιο τρόπο θα αποθηκεύονται τα δεδομένα της βάσης στο σύστημα; a) Στο φυσικό επίπεδο b) Στο λογικό επίπεδο c) Στο επίπεδο όψης d) Εξαρτάται από το Λειτουργικό Σύστημα Ερώτηση Τι σημαίνουν τα αρχικά DDL; a) Dynamic Data tabLe b) Dynamic Double List c) Dynamic Definitive Language d) Data Definition Language ….. Οι οντότητες και τα χαρακτηριστικά τους … Στις πιο πολλές περιπτώσεις, τα πεδία που συσχετίζονται με μια οντότητα, παίρνουν απλές τιμές οι οποίες δεν μπορούν να διαχωριστούν σε μικρότερες μονάδες. Χαρακτηριστικό παράδειγμα ενός τέτοιου πεδίου είναι η ηλικία του εργαζόμενου (AGE) η οποία μπορεί να πάρει μια μόνο απλή τιμή (π.χ. 34). Τέτοιου είδους πεδία, ονομάζονται απλά πεδία (simple attributes) ή ατομικά πεδία (atomic attributes). Σε άλλες όμως περιπτώσεις, ένα πεδίο είναι δυνατό να διασπαστεί σε ένα πλήθος απλών πεδίων. Στην περίπτωση αυτή, το πεδίο λέγεται σύνθετο (complex attribute). Χαρακτηριστικό παράδειγμα ενός σύνθετου πεδίου, είναι η διεύθυνση ενός υπαλλήλου, η οποία μπορεί να διαχωριστεί στην διεύθυνση κατοικίας (street address), στον τόπο διαμονής (city και state) και στον ταχυδρομικό κώδικα (zip code). Εάν ένα από τα πεδία κάποιας οντότητας είναι σύνθετο πεδίο, τότε η τιμή που αποδίδεται σε αυτό προκύπτει από τη συνένωση (concatenation) των τιμών των απλών πεδίων που περιέχει. Ένας άλλος διαχωρισμός που μπορούμε να εφαρμόσουμε στα πεδία μιας οντότητας, έχει να κάνει με το πλήθος των τιμών που καταχωρούνται σε αυτά. [email protected] [email protected] Για παράδειγμα, κάθε υπάλληλος έχει μόνο μια ηλικία, αλλά μπορεί να χρησιμοποιεί πολλούς αριθμούς τηλεφώνου (π.χ. τηλέφωνο οικίας, τηλέφωνο εργασίας, και κινητό τηλέφωνο). Στην περίπτωση αυτή λέμε πως η ηλικία είναι ένα πεδίο απλής τιμής (single-valued attribute) ενώ ο αριθμός τηλεφώνου είναι ένα πεδίο πολλαπλής τιμής (multivalued attribute). … Ερώτηση Σε μία Βάση Δεδομένων ενός πανεπιστημίου καταχωρούμε μεταξύ των άλλων την ημερομηνία γέννησης των φοιτητών. Η ηλικία του είναι: a) Πεδίο πολλαπλής τιμής (multivalued attribute) b) Παραγόμενο πεδίο (derived attribute) c) Σύνθετο πεδίο (complex attribute) d) Πεδίο NULL (null attribute) Χαρακτηριστικά τύπων συσχέτισης Ο κάθε τύπος συσχέτισης που ορίζεται ανάμεσα σε δύο τύπους οντότητας κατά τη λογική σχεδίαση μίας βάσης δεδομένων, χαρακτηρίζεται από δύο ιδιότητες που καθορίζουν το πλήθος και το είδος της συμμετοχής των δύο οντοτήτων στα στιγμιότυπα αυτού του τύπου συσχέτισης. Αυτές οι δύο ιδιότητες ορίζονται με τον ακόλουθο τρόπο: Η πολλαπλότητα (cardinality) ενός τύπου συσχέτισης, καθορίζει το πλήθος των στιγμιότυπων αυτού του τύπου συσχέτισης, στον οποίο μια οντότητα μπορεί να συμμετάσχει. Για παράδειγμα, στη βάση δεδομένων της εταιρείας, ένα τμήμα περιέχει πολλούς υπαλλήλους. Στην περίπτωση αυτή λέμε πως η πολλαπλότητα του τύπου συσχέτισης που ορίζεται ανάμεσα στους τύπους οντότητας EMPLOYEE και DEPARTMENT είναι 1:Ν (ένα προς πολλά). Εκτός από αυτού του είδους την πολλαπλότητα ένας τύπος συσχέτισης μπορεί να χαρακτηρίζεται από πολλαπλότητα 1:1 (ένα προς ένα) ή Μ:Ν (πολλά προς πολλά). Χαρακτηριστικό παράδειγμα τύπου συσχέτισης με πολλαπλότητα 1:1 είναι η συσχέτιση ανάμεσα στους τύπους οντότητας EMPLOYEE και DEPARTMENT με τον EMPLOYEE να συμμετέχει στη σχέση ως MANAGER (πράγματι, το κάθε τμήμα θα διευθύνεται μόνο από ένα MANAGER). Τέλος ένα παράδειγμα τύπου συσχέτισης με πολλαπλότητα M:N, είναι η συσχέτιση ανάμεσα στον EMPLOYEE και στο PROJECT: ένας υπάλληλος μπορεί να εργάζεται σε περισσότερα από ένα projects, και ένα project με τη σειρά του, υλοποιείται από πολλούς υπαλλήλους ταυτόχρονα. Αδύναμοι τύποι οντότητας (weak entity types) Σε ορισμένες περιπτώσεις είναι δυνατό να ορίσουμε τύπους οντότητας οι οποίοι δεν έχουν κάποιο πεδίο κλειδί έτσι ώστε να ξεχωρίζουν τα διάφορα [email protected] [email protected] στιγμιότυπά τους, αλλά αυτή η διάκριση γίνεται δια της συσχέτισής τους με κάποιον από τους υπόλοιπους τύπους οντότητας της βάσης. Αυτοί οι τύποι οντότητας ονομάζονται αδύναμοι τύποι οντότητας (weak entity types) και ορίζονται μόνο από ένα συνδυασμό κάποιων από τα πεδία που περιέχουν καθώς και από τη συσχέτισή τους (identifying relationship) με κάποιον τύπο οντότητας (identifying owner). Ας σημειωθεί πως σε αυτή τη συσχέτιση, οι εν λόγω τύποι οντότητας έχουν ολική συμμετοχή (total participation). Εάν δύο ή περισσότεροι αδύναμοι τύποι οντότητας έχουν τον ίδιο κάτοχο (owner entity) υπάρχει ένας συνδυασμός πεδίων ο οποίος βοηθά να ξεχωρίζουμε τα στιγμιότυπα αυτού του τύπου οντότητας μεταξύ τους. Αυτός ο συνδυασμός των πεδίων λέγεται μερικό κλειδί (partial key). Χαρακτηριστικό παράδειγμα αδύναμου τύπου οντότητας είναι ο τύπος οντότητας DEPENDENT για τον οποίο η οντότητα κάτοχος είναι ο EMPLOYEE. ….. Σχεσιακό Μοντέλο Το σχεσιακό μοντέλο αναπαράστασης των δεδομένων μιας εφαρμογής (relational data model) καθιερώθηκε από τον Codd το 1970 και αποτέλεσε ένα από τα πιο απλά και ευέλικτα μοντέλα αυτού του είδους. Είναι ένα γράφημα που απεικονίζει τις συσχετίσεις ανάμεσα στις οντότητες της βάσης. Σε αυτό το μοντέλο, τα δεδομένα μιας εφαρμογής αναπαρίστανται ως ένα σύνολο από σχέσεις (relations) οι οποίες μπορεί να είναι πίνακες ή αρχεία. Στις πιο πολλές περιπτώσεις υιοθετείται η χρήση πινάκων (tables) που περιέχουν ένα πλήθος γραμμών (rows) και στηλών (columns). Η κάθε μια από αυτές τις γραμμές – οι οποίες στην ορολογία του μοντέλου ονομάζονται και πλειάδες (tuples) – περιέχει ένα σύνολο απλών πεδίων (attributes) τα οποία συσχετίζονται μεταξύ τους. Κάθε πεδίο ή στήλη ενός πίνακα, δέχεται τιμές οι οποίες ανήκουν σε ένα συγκεκριμένο και καθορισμένο εκ των προτέρων σύνολο τιμών (domain). Το είδος των τιμών αυτού του συνόλου καθορίζεται από τον τύπο δεδομένων του πεδίου του πίνακα, ο οποίος με τη σειρά του ορίζεται κατά το στάδιο της λογικής σχεδίασης της εφαρμογής. Ορισμός 1: Ως σχήμα μιας σχέσης (relation schema) R, ορίζεται ένα σύνολο πεδίων {A1, A2,……,An} κάθε ένα εκ των οποίων παίρνει τιμές μέσα από ένα σύνολο τιμών (domain) D – για κάθε πεδίο Ai, το πεδίο τιμών του, D, θα συμβολίζεται με dom(Ai). Το πλήθος των πεδίων του συνόλου R ονομάζεται βαθμός (degree) της σχέσης, ενώ η συμβολοσειρά R, είναι το όνομα της σχέσης. Ερώτηση (ΑΣΕΠ 2005) Ένα μοντέλο Οντοτήτων-Σχέσεων μιας σχεσιακής βάσης δεδομένων περιγράφει: [email protected] [email protected] a) Το μέγεθος των πινάκων b) Το περιεχόμενο των πινάκων c) Τον αριθμό των πεδίων των πινάκων d) Κανένα από τα παραπάνω ….. Παραδείγματα εισαγωγής εγγραφών (insert operation) Insert <’Cecilia’, ‘F’, ‘Kolonsky’, ‘677678989’, ’05-Apr-50’, ‘6357 Windy Lane, Katy, TX’, ‘F’, 28000, NULL, 4> into EMPLOYEE Αυτή η διαδικασία δεν παραβιάζει κανέναν από τους κανόνες ακεραιότητας και είναι αποδεκτή από το σύστημα. Insert <’Alicia’, ‘J’, ‘Zelaya’, ‘999887777’, ’05-Apr-50’, ‘6357 Windy Lane, Katy, TX’, ‘F’, 28000, ‘987654321’, 4> into EMPLOYEE Αυτή η διαδικασία παραβιάζει τον πρώτο κανόνα ακεραιότητας (key constraint) επειδή υπάρχει ήδη στον πίνακα EMPLOYEE κάποιος άλλος υπάλληλος με το ίδιο πρωτεύον κλειδί (SSN). Για το λόγο αυτό δεν γίνεται αποδεκτή από το σύστημα. Ερώτηση Σύμφωνα με την δοσμένη βάση δεδομένων η γραμμή: Insert <‘Μαρία’, ‘Κωστοπούλου’, ‘1600’, ‘Θ’, ‘Ιστορίας’> a) Παραβιάζει τον πρώτο κανόνα ακεραιότητας b) Παραβιάζει τον δεύτερο κανόνα ακεραιότητας c) Παραβιάζει τον τρίτο κανόνα ακεραιότητας d) Δεν παραβιάζει κανέναν από τους κανόνες ακεραιότητας DELETE the EMPLOYEE tuple with SSN = ‘333445555’ Αυτή η διαδικασία δεν είναι αποδεκτή, διότι υπάρχουν εγγραφές στους πίνακες EMPLOYEE, DEPARTMENT, WORKS_ON και DEPENDENT που αναφέρονται στην εγγραφή που επιθυμούμε να διαγράψουμε, και επομένως η διαγραφή της θα οδηγήσει σε παραβίαση του τρίτου κανόνα ακεραιότητας (referential integrity constraint). [email protected] [email protected] Από τους τρεις κανόνες ακεραιότητας που περιγράψαμε στις προηγούμενες σελίδες, η διαδικασία της διαγραφής εγγραφών από κάποιο πίνακα, παραβιάζει μόνο τον τρίτο κανόνα, σε περιπτώσεις κατά τις οποίες επιχειρούμε να διαγράψουμε μια εγγραφή στην οποία αναφέρονται εγγραφές άλλων πινάκων τις βάσης. Στις περιπτώσεις αυτές έχουμε γενικά τρεις επιλογές: (α) να απαγορεύσουμε τη διαγραφή αυτής της πλειάδας, (β) να διαγράψουμε εκτός από την εν λόγω πλειάδα και όλες τις πλειάδες των άλλων πινάκων που αναφέρονται σε αυτή (cascade delete operation) και (γ) να μη διαγράψουμε τις πλειάδες των άλλων πινάκων αλλά να τροποποιήσουμε το περιεχόμενό τους τοποθετώντας τιμές NULL στα πεδία που αναφέρονται στην πλειάδα που επιχειρούμε να διαγράψουμε (referencing attributes). ….. ΒΗΜΑ 4: Για κάθε τύπο συσχέτισης R η οποία έχει βαθμό 2 και πολλαπλότητα 1 , εντοπίζουμε τον πίνακα που έχουμε δημιουργήσει (στο Βήμα 1) για τον τύπο οντότητας που βρίσκεται στην «Ν πλευρά» της συσχέτισης. Σε αυτόν τον πίνακα, προσθέτουμε ως ξένο κλειδί, το πρωτεύον κλειδί του πίνακα που αντιστοιχεί στον άλλο τύπο οντότητας (αυτόν που βρίσκεται στην «1 πλευρά» της συσχέτισης). Στο παράδειγμά μας, έχουμε τρεις τύπους συσχέτισης με πολλαπλότητα 1:Ν. Τον τύπο συσχέτισης WORKS_FOR ανάμεσα στους τύπους οντότητας DEPARTMENT και EMPLOYEE, τον τύπο συσχέτισης CONTROLS ανάμεσα στους τύπους οντότητας DEPARTMENT και PROJECT και τον τύπο συσχέτισης SUPERVISION που είναι αναδρομικός και ορίζεται ανάμεσα σε δύο αντίγραφα του τύπου οντότητας EMPLOYEE. Η εφαρμογή του Βήματος 4 σε αυτούς τους τύπους συσχέτισης, θα έχει τα ακόλουθα αποτελέσματα. Έμμεση συναρτησιακή εξάρτηση Η συναρτησιακή εξάρτηση Ζ=Ζ(Χ) λέγεται έμμεση όταν συμβαίνει να έχουμε ταυτόχρονα Ζ=Ζ(Υ) και Υ=Υ(Χ). Δηλαδή Χ Υ Ζ. Σε έναν οποιοδήποτε πίνακα μιας σχεσιακής βάσης δεδομένων, όλα τα πεδία του πίνακα που δεν ανήκουν στο πρωτεύον κλειδί του, εξαρτώνται συναρτησιακά από τα πεδία του πρωτεύοντος κλειδιού. Ένα παράδειγμα συναρτησιακής εξάρτησης είναι η SSN→LNAME ανάμεσα στα πεδία SSN και LNAME του πίνακα EMPLOYEE. Πράγματι, γνωρίζοντας τον κωδικό αριθμό ενός υπαλλήλου, προσδιορίζουμε μονοσήμαντα το επώνυμό του. Αντίθετα, η συσχέτιση LNAME→SSN δεν είναι έγκυρη, διότι είναι πιθανόν να υπάρχουν υπάλληλοι με το ίδιο επώνυμο, και οι οποίοι ασφαλώς θα χαρακτηρίζονται από διαφορετικό κωδικό SSN. Μιλώντας γενικά, η ισχύς της συσχέτισης Α→Β δεν προϋποθέτει και την ισχύ της συσχέτισης Β→Α. [email protected] [email protected] Πρώτη Κανονική Μορφή (1st Νormal Form, 1NF): Για να φέρουμε έναν πίνακα σε πρώτη κανονική μορφή, θα πρέπει να απομακρύνουμε τις επαναλαμβανόμενες ομάδες πεδίων, έτσι ώστε η τομή μιας γραμμής και μιας στήλης του πίνακα, να αντιστοιχεί πάντα σε μια απλή τιμή. Η πρώτη κανονική μορφή δημιουργήθηκε για να αποτρέψει την εμφάνιση στα πεδία ενός πίνακα σύνθετων τιμών, πολλαπλών τιμών καθώς και συνδυασμούς αυτών των δύο. Ένας πίνακας λέμε ότι βρίσκεται σε 1NF, όταν η τιμή του κάθε πεδίου σε κάθε εγγραφή, είναι ατομική δηλαδή δεν μπορεί να διασπαστεί σε μικρότερες μονάδες πληροφορίας. Δηλαδή δεν επιτρέπεται να έχουμε πεδία στον πίνακα που να παίρνουν πολλαπλές τιμές. ….. th Τέταρτη Κανονική Μορφή (4 Normal Form, 4NF): Για να φέρουμε ένα πίνακα σε τέταρτη κανονική μορφή, θα πρέπει πρώτα να τον φέρουμε σε τρίτη κανονική μορφή και στη συνέχεια να απομακρύνουμε όλες τις συναρτησιακές εξαρτήσεις που περιλαμβάνουν πεδία πολλαπλών τιμών (multivalued dependencies). ….. Ερώτηση Στη δοσμένη βάση δεδομένων η συνθήκη σχεσιακής άλγεβρας η οποία ανακτά όλους τους λογαριασμούς οι οποίοι έχουν υπόλοιπο πάνω από 2000 ευρώ και δεν ανήκουν στο τμήμα με κωδικό 1 είναι: a) Over σΚωδικός_Τμήματος>1 AND Υπόλοιπο>2000 (Λογαριασμοί) b) Over σΚωδικός_Τμήματος>1 (σΥπόλοιπο>2000 (Λογαριασμοί)) c) Και οι δύο παραπάνω d) Καμία από τις παραπάνω ….. JOIN: Η πράξη της σύζευξης μπορεί να ορισθεί ως η εφαρμογή της πράξης του καρτεσιανού γινομένου ανάμεσα σε δύο πίνακες R και S, συνοδευόμενη από την πράξη της επιλογής (select), που επιστρέφει όχι όλους τους συνδυασμούς εγγραφών των δύο πινάκων αλλά μόνο εκείνους που ικανοποιούν κάποια συγκεκριμένη συνθήκη επιλογής. Αυτό σημαίνει πως για να ορίσουμε την [email protected] [email protected] πράξη της σύζευξης, χρειαζόμαστε δύο πίνακες και μία συνθήκη. Στην περίπτωση αυτή μπορούμε να γράψουμε: RESULT S |x| <selection condition> R Το αποτέλεσμα της πράξης της σύζευξης ανάμεσα σε δύο πίνακες R(A1, A2, ….., An) και S(B1, B2, ….., Bm), είναι ένας καινούριος πίνακας Q με δομή {A1, A2, ….., An, B1, B2, …., Bm} που περιλαμβάνει μόνο τις πλειάδες του καρτεσιανού γινομένου οι οποίες πληρούν τη συνθήκη επιλογής που χρησιμοποιείται. Στο καρτεσιανό γινόμενο περιλαμβάνονται όλοι οι δυνατοί συνδυασμοί των πλειάδων των δύο πινάκων, ενώ στο αποτέλεσμα της σύζευξης υπάρχουν μόνο εκείνες οι πλειάδες οι οποίες πληρούν τη συνθήκη επιλογής. OUTER JOIN και OUTER UNION Εκτός από τις πράξεις της σύζευξης και της ένωσης που ορίσαμε στις προηγούμενες παραγράφους, υπάρχουν και κάποιες παραλλαγές τους οι οποίες δεν αποτελούν τμήμα της σχεσιακής άλγεβρας, αλλά υποστηρίζονται από όλα τα μοντέρνα σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων. Αυτές οι πράξεις είναι η εξωτερική σύζευξη (outer join) και η εξωτερική ένωση (outer union). Η διαφορά της εξωτερικής σύζευξης από την απλή σύζευξη, έχει να κάνει με το πλήθος του συνδυασμού των πλειάδων των δύο πινάκων που επιστρέφονται. Στην απλή σύζευξη επιστρέφονται μόνο οι συνδυασμοί εκείνων των πλειάδων τα στοιχεία των οποίων ικανοποιούν τη συνθήκη επιλογής που καθορίζουμε στη σύζευξη. Αντίθετα, στην πράξη της εξωτερικής σύζευξης, διατηρούνται όλες οι εγγραφές ακόμη και εκείνες που δεν πληρούν τον κανόνα επιλογής. Αυτές οι εγγραφές συνδυάζονται με κενές εγγραφές του άλλου πίνακα δηλαδή με εγγραφές που έχουν σε όλα τα πεδία τους την τιμή NULL. Η πράξη της εξωτερικής σύζευξης μπορεί να είναι τόσο αριστερή (left outer join) όσο και δεξιά (right outer join) και ένα από τα σύμβολα που χρησιμοποιούνται για την αναπαράστασή της είναι το (+). ….. SQL ….. 1) Να βρεθεί το άθροισμα των μισθών όλων των υπαλλήλων που δουλεύουν στο Research Department, καθώς επίσης ο μεγαλύτερος και ο μικρότερος μισθός και ο μέσος όρος τους SELECT SUM (SALARY), MAX (SALARY), MIN (SALARY), [email protected] [email protected] AVG (SALARY) FROM EMPLOYEE, DEPARTMENT WHERE DNO = DNUMBER AND DNAME = “Research”. 2) Να βρεθεί το πλήθος των υπαλλήλων που δουλεύουν στο Research Department SELECT COUNT (*) FROM EMPLOYEE, DEPARTMENT WHERE DNO = DNUMBER AND DNAME = “Research”. 3) Να ανακτηθεί το όνομα και το επώνυμο των υπαλλήλων της εταιρείας που έχουν περισσότερα από δύο προστατευόμενα μέλη. SELECT LNAME, FNAME FROM EMPLOYEE WHERE ( SELECT COUNT (*) FROM DEPENDENT WHERE SSN=ESSN ) ≥ 2 ….. Διασφαλίσεις Μπορούμε να έχουμε περιορισμούς ακεραιότητας σε πολλούς πίνακες με τις διασφαλίσεις. CREATE ASSERTION SmallClub CHECK ((SELECT COUNT(*) FROM Sailors S) + (SELECT COUNT(*) FROM Boats B) <100) ) Εναύσματα Μια διαδικασία που ενεργοποιείται όταν συμβαίνουν ορισμένου τύπου μεταβολές στα δεδομένα π.χ. κάθε φορά που γίνεται ενημέρωση ενός πίνακα. Είναι μία ενέργεια ή μία ομάδα ενεργειών που καθορίζεται να ενεργοποιείται όταν συμβεί ένα συγκεκριμένο γεγονός στη ροή επεξεργασίας της πληροφορίας ή όταν πατηθεί ένα πλήκτρο. Στην περιγραφή ενός εναύσματος υπάρχουν τρία μέρη: • Γεγονός: Μία μεταβολή στη βάση δεδομένων η οποία ενεργοποιεί το έναυσμα. [email protected] [email protected] • Συνθήκη: Ένα αίτημα ή ένας έλεγχος που εκτελείται με την ενεργοποίηση του εναύσματος. • Ενέργεια: Μία διαδικασία η οποία εκτελείται όταν ισχύει η συνθήκη και ενεργοποιείται το έναυσμα. Μία ΒΔ με εναύσματα ονομάζεται Ενεργή Βάση Δεδομένων. ….. Μειονεκτήματα του Β-Δέντρου Τα μειονεκτήματα του Β-Δέντρου είναι: • Κατανάλωση επιπλέον χώρου περιφερειακής μνήμης από το αρχείο του δείκτη αναζήτησης. • Η κάθε τιμή κλειδιού καταχωρείται δύο ή τρεις φορές στη βάση. Μία φορά στο αρχείο των δεδομένων και μία ή δύο φορές στο αρχείο των δεικτών. Δεν ενδείκνυται η δεικτοδότηση μεγάλων σε μήκος πεδίων. • Η συνεχής ενημέρωση του αρχείου των δεδομένων προκαλεί τακτικές αναδιοργανώσεις του αρχείου των δεικτών. Έτσι έχουμε μεγάλους χρόνους απόκρισης του συστήματος της βάσης δεδομένων. • Η ύπαρξη του δείκτη αναζήτησης μπορεί να προκαλέσει προβλήματα στη διαχείριση ανταγωνιστικών διεργασιών με αποτέλεσμα να υπάρξει αδιέξοδο. Ερώτηση Ένα Β-Δέντρο (B-Tree): a) Ενδείκνυται για σχετικά στατικούς πίνακες b) Καταχωρεί μόνο μία φορά την τιμή του κάθε κλειδιού στη βάση c) Έχει μεγάλους χρόνους απόκρισης του συστήματος βάσης δεδομένων d) Όλα τα προηγούμενα [email protected]
© Copyright 2024 Paperzz