Κεφάλαιο 1 :
Γενικές αρχές Βάσεων Δεδομένων
1.1
Εισαγωγή στις Βάσεις Δεδομένων
Η αλματώδης ανάπτυξη της επιστήμης της πληροφορικής και των επικοινωνιών τα τελευταία χρόνια έχει καταστήσει την πληροφορία ως ένα από τα βασικότερα και πολυτιμότερα αγαθά. Είναι κοινός τόπος σήμερα η εκτίμηση ότι το αγαθό της πληροφορίας είναι επιθυμητό απ’ όλους τους εργαζόμενους αλλά και τους εκπαιδευόμενους, ώστε να είναι πιο αποδοτικοί, ανταγωνιστικοί αλλά και παραγωγικοί στην εργασία τους.
Τα συστήματα βάσεων δεδομένων τα χρησιμοποιούμε για να μπορούμε να αποθηκεύσουμε, να επεξεργαστούμε αλλά και να εκμεταλλευτούμε αποδοτικά αυτόν τον τεράστιο όγκο των πληροφοριών που αυξάνονται με αλματώδεις ρυθμούς καθημερινά.
1.1.1 Τα
Δεδομένα και οι Πληροφορίες
Με τον όρο πληροφορία αναφερόμαστε συνήθως σε ειδήσεις, γεγονότα και έννοιες που αποκτάμε από την καθημερινή μας επικοινωνία και τα θεωρούμε ως αποκτηθείσα γνώση, ενώ τα δεδομένα μπορούν να είναι μη κατάλληλα επεξεργασμένα και μη ταξινομημένα σύνολα πληροφοριών. Ένας αυστηρός ορισμός για το τι είναι δεδομένα και τι είναι πληροφορία, σύμφωνα με την επιτροπή ANSI των ΗΠΑ, είναι ο εξής :
• Δεδομένα (data) είναι μια παράσταση, όπως γράμματα, αριθμοί, σύμβολα κ.ά. στα οποία μπορούμε να δώσουμε κάποια σημασία (έννοια).
• Πληροφορία (information) είναι η σημασία που δίνουμε σ’ ένα σύνολο από δεδομένα, τα οποία μπορούμε να επεξεργαστούμε βάσει προκαθορισμένων κανόνων και να βγάλουμε έτσι κάποια χρήσιμα συμπεράσματα. Με τις πληροφορίες περιορίζεται η αβεβαιότητα που έχουμε για διάφορα πράγματα και βοηθιόμαστε έτσι στο να λάβουμε σωστές αποφάσεις.
Τα δεδομένα μπορούν να θεωρηθούν ως τρόποι αναπαράστασης εννοιών και γεγονότων που μπορούν να υποστούν διαχείριση και επεξεργασία. Η συλλογή και αποθήκευση ενός τεράστιου όγκου δεδομένων όπως απαιτούν οι κοινωνικές συνθήκες σήμερα, δεν λύνει τελείως το πρόβλημα της σωστής οργάνωσης και ταξινόμησης των δεδομένων. Τα δεδομένα θα πρέπει να οργανωθούν με τέτοιο τρόπο έτσι ώστε να μπορούμε να τα εντοπίζουμε και να τα αξιοποιούμε εύκολα και γρήγορα και τη στιγμή που τα χρειαζόμαστε.
Ένα κλασικό παράδειγμα μη σωστής οργάνωσης δεδομένων θα ήταν για παράδειγμα ο τηλεφωνικός κατάλογος της πόλης Σερρών, όπου οι συνδρομητές δεν θα ήταν καταχωρημένοι αλφαβητικά σύμφωνα με το επώνυμο και το όνομά τους, αλλά εντελώς τυχαία. Ένας τέτοιος τηλεφωνικός κατάλογος θα περιείχε μια τεράστια ποσότητα δεδομένων αλλά θα ήταν ουσιαστικά άχρηστος.
Εκτός λοιπόν από τη μόνιμη αποθήκευση των δεδομένων, χρειαζόμαστε και κάποιους τρόπους ευέλικτης και αποδοτικής οργάνωσής τους.
1.1.2
Προβλήματα στην Οργάνωση Αρχείων
Στα αρχικά στάδια της οργάνωσης αρχείων, μια συνηθισμένη πρακτική ήταν η δημιουργία ξεχωριστών εφαρμογών (προγραμμάτων) και ξεχωριστών αρχείων, όπως για παράδειγμα η δημιουργία ενός αρχείου πελατών και ενός άλλου ανεξάρτητου αρχείου για τις παραγγελίες των πελατών. Τα προβλήματα που προέκυψαν από την πρακτική αυτή είναι τα εξής :
• Πλεονασμός των δεδομένων (data redundancy). Υπάρχει η περίπτωση να έχουμε επανάληψη των ίδιων δεδομένων σε αρχεία διαφορετικών εφαρμογών. Για παράδειγμα, αν έχουμε ένα αρχείο πελατών και ένα αρχείο παραγγελιών αυτών των πελατών, είναι σχεδόν σίγουρο ότι θα υπάρχουν κάποια στοιχεία των πελατών που θα υπάρχουν και στα δύο αρχεία.
• Ασυνέπεια των δεδομένων (data inconsistency). Αυτό μπορεί να συμβεί όταν υπάρχουν τα ίδια στοιχεία των πελατών (πλεονασμός) και στο αρχείο πελατών και στο αρχείο παραγγελιών και χρειασθεί να γίνει κάποια αλλαγή στη διεύθυνση ή στα τηλέφωνα κάποιου πελάτη, οπότε είναι πολύ πιθανό να γίνει η διόρθωση μόνο στο ένα αρχείο και όχι και στο άλλο.
• Αδυναμία μερισμού δεδομένων (data sharing). Μερισμός δεδομένων σημαίνει δυνατότητα για κοινή χρήση των στοιχείων κάποιων αρχείων. Για παράδειγμα, ο μερισμός δεδομένων θα ήταν χρήσιμος αν με την παραγγελία ενός πελάτη μπορούμε να έχουμε πρόσβαση την ίδια στιγμή στο αρχείο πελατών για να δούμε το υπόλοιπο του πελάτη και μετά στο αρχείο της αποθήκης για να δούμε αν είναι διαθέσιμα τα προϊόντα που παρήγγειλε ο συγκεκριμένος πελάτης. Η αδυναμία μερισμού δεδομένων δημιουργεί καθυστέρηση στη λήψη αποφάσεων και στην εξυπηρέτηση των χρηστών.
• Αδυναμία προτυποποίησης. Έχει να κάνει με την ανομοιομορφία και με την διαφορετική αναπαράσταση και οργάνωση των δεδομένων στα αρχεία των εφαρμογών. Η αδυναμία αυτή δημιουργεί προβλήματα προσαρμογής των χρηστών καθώς και προβλήματα στην ανταλλαγή δεδομένων μεταξύ διαφορετικών συστημάτων.
Συστήματα βάσης δεδομένων είναι ένα ηλεκτρονικό σύστημα τήρησης εγγραφών, δηλαδή, είναι ένα σύστημα για υπολογιστές, που ο γενικός σκοπός του είναι να τηρεί πληροφορίες και να δίνει αυτές τις πληροφορίες όταν του ζητούνται. Οι πληροφορίες που τηρούνται σε ένα τέτοιο σύστημα μπορεί να είναι οτιδήποτε έχει σημασία για το άτομο ή τον οργανισμό που εξυπηρετεί το συγκεκριμένο σύστημα, με άλλα λόγια οτιδήποτε χρειάζεται για την υποβοήθηση των εργασιών αυτού του ατόμου ή οργανισμού.
Η ίδια η βάση δεδομένων μπορεί να θεωρηθεί ένα είδος ηλεκτρονικής αρχειοθήκης, ένα χώρος για την αποθήκευση μιας συλλογής ηλεκτρονικών αρχείων δεδομένων.
Ο χρήστης του συστήματος έχει στη διάθεση του ορισμένα βοηθήματα για να εκτελεί στα αρχεία Β.Δ. διάφορες εργασίες, στις οποίες συγκαταλέγονται ,ανάμεσα σε άλλες, και οι εξής:
• Η προσθήκη νέων κενών αρχείων στη βάση δεδομένων .
• Η εισαγωγή νέων δεδομένων σε υπάρχοντα αρχεία.
• Η ανάκληση δεδομένων από υπάρχοντα αρχεία.
• Η ενημέρωση δεδομένων σε υπάρχοντα αρχεία.
• Η διαγραφή δεδομένων από υπάρχοντα αρχεία
• Η αφαίρεση υπαρχόντων αρχείων, κενών ή όχι, από τη βάση δεδομένων.
Ένα σύστημα βάσης δεδομένων απαρτίζεται από τέσσερα βασικά στοιχεία: τα δεδομένα, το υλικό, το λογισμικό και τους χρήστες.
Τα πλεονεκτήματα ενός συστήματος βάσης δεδομένων, σε σύγκριση με τις παραδοσιακές μεθόδους παρακολούθησης (χαρτί και μολύβι), αρχικά για μια μικρή βάση δεδομένων είναι πολλά
• Οικονομία χώρου (Καταργούνται τα ογκώδη παραδοσιακά αρχεία με φακέλους και έγγραφα).
• Ταχύτητα (το σύστημα μπορεί να ανακαλεί και να αλλάζει τα δεδομένα γρηγορότερα από τον άνθρωπο)
• Λιγότερος κόπος
• Άμεση πληροφόρηση (Ακριβείς και ενημερωμένες πληροφορίες είναι διαθέσιμες κάθε στιγμή).
Επιπλέον, σε ένα περιβάλλον πολλών χρηστών, το σύστημα βάσης δεδομένων παρέχει στην επιχείρηση κεντρικό έλεγχο των δεδομένων της ώστε να προκύπτουν τα εξής πλεονεκτήματα:
• Ο πλεονασμός μειώνεται στο ελάχιστο . Στα συμβατικά συστήματα (εκείνα που δεν είναι συστήματα βάσεων δεδομένων), η κάθε εφαρμογή έχει τα δικά της αρχεία. Αυτό το γεγονός οδηγεί πολύ συχνά σε υψηλό βαθμό πλεονασμού (επανάληψης) για τα αποθηκευμένα δεδομένα, με αποτέλεσμα τη σπατάλη αποθηκευτικού χώρου. Θα πρέπει εδώ να ξεκαθαρίσουμε ότι αυτό δε σημαίνει πως είναι πάντα δυνατό να εξαλειφθούν όλοι οι πλεονασμοί, ούτε πως είναι πάντα επιθυμητό. Μερικές φορές υπάρχουν σοβαροί επιχειρηματικοί ή τεχνικοί λόγοι που επιβάλλουν να τηρούνται ξεχωριστά αντίγραφα των ίδιων αποθηκευμένων δεδομένων.
• Η ασυνέπεια μπορεί να αποφευχθεί ( ως ένα βαθμό).Το DBMS θα μπορεί να εγγυηθεί ότι η βάση δεδομένων δε θα είναι ποτέ ασυνεπής στα μάτια του χρηστή ,εξασφαλίζοντας ότι κάθε αλλαγή που θα γίνεται σε οποιαδήποτε από δυο όμοιες καταχωρίσεις θα γίνεται αυτόματα και στην άλλη. Αυτή η διαδικασία είναι γνωστή με το όνομα διάδοση ενημερώσεων.
• Τα δεδομένα μπορούν να είναι κοινόχρηστα. Ο μερισμός δε σημαίνει μόνο ότι οι υπάρχουσες εφαρμογές μπορούν να μοιράζονται τα δεδομένα της βάσης δεδομένων αλλά και ότι είναι δυνατή η ανάπτυξη νέων εφαρμογών που θα μπορούν να χρησιμοποιούν τα ίδια αποθηκευμένα δεδομένα.
• Μπορούν να επιβάλλονται πρότυπα. Η τυποποίηση της αναπαράστασης των δεδομένων διευκολύνει ιδιαίτερα την ανταλλαγή δεδομένων. Τα πρότυπα ονομασίας και τεκμηρίωσης των δεδομένων είναι επίσης πολύ επιθυμητά για να διευκολύνεται ο μερισμός και η καλύτερη κατανόηση των δεδομένων.
• Μπορούν να εφαρμόζονται περιορισμοί ασφαλείας .Έχοντας πλήρη δικαιοδοσία πάνω στη βάση δεδομένων, ο DBA-Database Administrator (α) μπορεί να εξασφαλίσει ότι η πρόσβαση στη βάση δεδομένων θα μπορεί να γίνεται μόνο μέσω των κατάλληλων καναλιών και, κατά συνέπεια, (β) μπορεί να ορίσει κανόνες ασφαλείας με βάση τους οποίους θα γίνεται έλεγχος κάθε φορά που θα υπάρχει απόπειρα προσπέλασης εμπιστευτικών δεδομένων. Βέβαια ένα συστήματα βάσης δεδομένων απαιτεί την ύπαρξη ενός καλού συστήματος ασφαλείας.
• Μπορεί να διατηρείται η ακεραιότητα .Το πρόβλημα της ακεραιότητας είναι να εξασφαλίζεται ότι τα δεδομένα της βάσης δεδομένων είναι ακριβή. Η ασυμφωνία μεταξύ δυο καταχωρίσεων που υποτίθεται ότι αντιπροσωπεύουν το ίδιο “γεγονός” είναι ένα παράδειγμα έλλειψης ακεραιότητας φυσικά, αυτό το συγκεκριμένο πρόβλημα μπορεί να παρουσιαστεί μόνο αν υπάρχει πλεονασμός στα αποθηκευμένα δεδομένα. Ακόμη και αν δεν υπάρχει πλεονασμός όμως, πάλι υπάρχει περίπτωση να περιέχει η βάση δεδομένων λανθασμένες πληροφορίες. Αξίζει να επισημάνουμε ότι η ακεραιότητα των δεδομένων έχει πολύ μεγαλύτερη σημασία σε ένα σύστημα βάσης δεδομένων πολλών χρηστών από ότι σε ένα περιβάλλον “ιδιωτικών αρχείων “, ακριβώς επειδή η βάση δεδομένων είναι μεριζομενη. Αυτό συμβαίνει γιατί, χωρίς τους κατάλληλους ελέγχους, μπορεί ένας χρήστης να ενημερώσει τη βάση δεδομένων με εσφαλμένο τρόπο, δημιουργώντας με αυτό τον τρόπο λανθασμένα δεδομένα και “ μολύνοντας “ τους υπόλοιπους “
• Οι αντικρουόμενες απαιτήσεις μπορούν να εξισορροπούνται. Γνωρίζοντας τις συνολικές απαιτήσεις της επιχείρησης, σε αντιδιαστολή με τις απαιτήσεις των μεμονωμένων χρηστών, ο DBA (πάντα με τις οδηγίες του υπεύθυνου διαχείρισης δεδομένων) μπορεί να δομήσει το σύστημα με τέτοιον τρόπο ώστε να παρέχει γενικές υπηρεσίες που να είναι “ βέλτιστες για την επιχείρηση”. Για παράδειγμα μπορεί να επιλεχθεί μια αναπαράσταση των αποθηκευμένων δεδομένων που να παρέχει γρήγορη πρόσβαση στις σημαντικές εφαρμογές ίσως σε βάρος της απόστασης άλλων εφαρμογών.
1.2.1
Σύστημα Βάσης Δεδομένων (ΣΒΔ)
Ένα Σύστημα Βάσης Δεδομένων (ΣΒΔ) ή DBS (Data Base System) αποτελείται από το υλικό, το λογισμικό, τη βάση δεδομένων και τους χρήστες. Είναι δηλαδή ένα σύστημα με το οποίο μπορούμε να αποθηκεύσουμε και να αξιοποιήσουμε δεδομένα με τη βοήθεια ηλεκτρονικού υπολογιστή. Αναλυτικά :
• Το υλικό (hardware) αποτελείται όπως είναι γνωστό από τους ηλεκτρονικούς υπολογιστές, τα περιφερειακά, τους σκληρούς δίσκους, τις μαγνητικές ταινίες κ.ά., όπου είναι αποθηκευμένα τα αρχεία της βάσης δεδομένων αλλά και τα προγράμματα που χρησιμοποιούνται για την επεξεργασία τους.
• Το λογισμικό (software) είναι τα προγράμματα που χρησιμοποιούνται για την επεξεργασία των δεδομένων (στοιχείων) της βάσης δεδομένων.
• Η βάση δεδομένων (database) αποτελείται από το σύνολο των αρχείων όπου είναι αποθηκευμένα τα δεδομένα του συστήματος. Τα στοιχεία αυτά μπορεί να βρίσκονται αποθηκευμένα σ’ έναν φυσικό υπολογιστή αλλά και σε περισσότερους. Όμως, στον χρήστη δίνεται η εντύπωση ότι βρίσκονται συγκεντρωμένα στον ίδιο υπολογιστή. Τα δεδομένα των αρχείων αυτών είναι ενοποιημένα (data integration), δηλ. δεν υπάρχει πλεονασμός (άσκοπη επανάληψη) δεδομένων και μερισμένα (data sharing), δηλ. υπάρχει δυνατότητα ταυτόχρονης προσπέλασης των δεδομένων από πολλούς χρήστες. Ο κάθε χρήστης έχει διαφορετικά δικαιώματα και βλέπει διαφορετικό κομμάτι της βάσης δεδομένων, ανάλογα με τον σκοπό για τον οποίο συνδέεται.
• Οι χρήστες (users) μιας βάσης δεδομένων χωρίζονται στις εξής κατηγορίες :
• Τελικοί χρήστες (end users). Χρησιμοποιούν κάποια εφαρμογή για να παίρνουν στοιχεία από μια βάση δεδομένων, έχουν τις λιγότερες δυνατότητες επέμβασης στα στοιχεία της βάσης δεδομένων, χρησιμοποιούν ειδικούς κωδικούς πρόσβασης και το σύστημα τούς επιτρέπει ανάλογα πρόσβαση σε συγκεκριμένο κομμάτι της βάσης δεδομένων.
• Προγραμματιστές εφαρμογών (application programmers). Αναπτύσσουν τις εφαρμογές του ΣΒΔ σε κάποια από τις γνωστές γλώσσες προγραμματισμού.
• Διαχειριστής δεδομένων (data administrator – DA). Έχει τη διοικητική αρμοδιότητα και ευθύνη για την οργάνωση της βάσης δεδομένων και την απόδοση δικαιωμάτων πρόσβασης στους χρήστες.
• Διαχειριστής βάσης δεδομένων (database administrator – DBA). Λαμβάνει οδηγίες από τον διαχειριστή δεδομένων και είναι αυτός που διαθέτει τις τεχνικές γνώσεις και αρμοδιότητες για τη σωστή και αποδοτική λειτουργία του ΣΔΒΔ.
1.2.2 Ο υπεύθυνος διαχείρισης βάσεων δεδομένων
(DBA)
Ο υπεύθυνος διαχείρισης βάσεων δεδομένων (DBA) είναι το άτομο που παρέχει την απαιτούμενη τεχνική υποστήριξη για την υλοποίηση αυτών των αποφάσεων. Ο DBA είναι λοιπόν υπεύθυνος για το συνολικό έλεγχο του συστήματος σε τεχνικό επίπεδο. Γενικά ,αυτές οι λειτουργίες είναι οι εξής:
• Ορισμός του εννοιολογικού σχήματος. Αφού ο υπεύθυνος διαχείρισης δεδομένων καθορίσει τη λογική ή μερικές φορές εννοιολογική σχεδίαση της βάσης δεδομένων εντοπίζοντας τις σημαντικές οντότητες και άρα και τις σχετικές με αυτές πληροφορίες που θα τηρούνται, ο DBA δημιουργεί το αντίστοιχο εννοιολογικό σχήμα, χρησιμοποιώντας την εννοιολογική DDL(γλώσσα ορισμού δεδομένων).
• Ορισμός του εσωτερικού σχήματος. Αποφασίζει για τη φυσική σχεδίαση της βάσης δεδομένων, και δημιουργεί τον αντίστοιχο ορισμό αποθηκευτικής δομής, χρησιμοποιώντας την εσωτερική DDL. Ο DBA πρέπει επίσης να ορίσει και τη σχετική απεικόνιση μεταξύ του εσωτερικού και του εννοιολογικού σχήματος. Οι αντίστοιχες απεικονίσεις θα υπάρχουν και σε μορφή πηγαίου κώδικα και σε μορφή αντικειμένου κώδικα.
• Επαφή με τους χρήστες. Εξασφαλίζει ότι τα δεδομένα που χρειάζονται είναι διαθέσιμα. Γράφει τα απαραίτητα εξωτερικά σχήματα, χρησιμοποιώντας την κατάλληλη εξωτερική DDL ώστε να οριστεί η απεικόνιση ανάμεσα σε οποιοδήποτε δεδομένο εξωτερικό σχήμα και στο εννοιολογικό σχήμα. Συγχρόνως παρέχει συμβουλές για την σχεδίαση των εφαρμογών ,τεχνική εκπαίδευση, εντόπιση και επίλυση προβλημάτων.
• Ορισμός κανόνων ασφάλειας και ακεραιότηταςΟι κανόνες ασφάλειας και ακεραιότητας μπορούν να θεωρηθούν μέρος του εννοιολογικού σχήματος. Η εννοιολογική DDL θα πρέπει να διαθέτει λειτουργίες για τον καθορισμό τέτοιων κανόνων.
• Ορισμός διαδικασιών για τη λήψη εφεδρικών αντιγράφων και την ανάκαμψη Από τη στιγμή που μια επιχείρηση υιοθετεί ένα σύστημα βάσης δεδομένων, εξαρτάται σε κρίσιμο βαθμό από την επιτυχημένη λειτουργία αυτού του συστήματος. Σε περίπτωση που παρουσιαστεί μια αστοχία σε οποιοδήποτε μέρος της βάσης δεδομένων που μπορεί να οφείλεται είτε σε ανθρώπινο σφάλμα είτε σε κάποια αστοχία του υλικού ή του λειτουργικού συστήματος είναι απαραίτητο να μπορούν να αποκατασταθούν τα δεδομένα που επηρεάστηκαν, με ελάχιστη δυνατή καθυστέρηση και με τις ελάχιστες δυνατές επιπτώσεις στο υπόλοιπο σύστημα .Ο DBA θα πρέπει να ορίσει και να υλοποιήσει έναν κατάλληλο μηχανισμό ανάκαμψης.
Σύστημα διαχείρισης βάσεων δεδομένων (ΣΔΒΔ) (database management system - DBMS) είναι μια συλλογή από προγράμματα που επιτρέπουν στους χρήστες να δημιουργήσουν και να συντηρήσουν μία βάση δεδομένων. Επομένως, το ΣΔΒΔ είναι ένα γενικής χρήσης σύστημα λογισμικού που διευκολύνει τις διαδικασίες ορισμού, κατασκευής και χειρισμού βάσεων δεδομένων για διάφορες εφαρμογές.
Εικόνα 1.1 : Σύστημα διαχείρισης βάσεων δεδομένων
Το ΣΔΒΔ παρέχει στους χρήστες και τις εφαρμογές που αναπτύσσουν οι προγραμματιστές ένα επίπεδο λογισμικού για την επεξεργασία ερωτήσεων και προγραμμάτων. Για την πρόσβαση στον ορισμό της βάσης και τα δεδομένα χρησιμοποιείται το επίπεδο προσπέλασης αποθηκευμένων δεδομένων.
Τα επιθυμητά χαρακτηριστικά ενός ΣΔΒΔ είναι τα ακόλουθα:
• μείωση πλεοναζόντων δεδομένων
• ευκολία στην ανάπτυξη νέων εφαρμογών
• μηχανισμοί ασφαλείας
• υποστήριξη δοσοληψιών (transactions)
• ανεξαρτησία δεδομένων από τις εφαρμογές τόσο στο φυσικό επίπεδο της αποθήκευσης, όσο και στις διαφορετικές παρεχόμενες όψεις
Η χρήση ΣΔΒΔ σε σχέση με αποθήκευση σε απλά αρχεία πλεονεκτεί:
• στην ασφάλεια δεδομένων
• στη διαφύλαξη της ακεραιότητας των δεδομένων
• στην ταυτόχρονη πρόσβαση από πολλούς χρήστες και εφαρμογές
• στην καταγραφή στοιχείων χρήσης
• στη ρύθμιση του τρόπου αποθήκευσης σε διαφορετικούς δίσκους και υπολογιστές
• στη ρύθμιση της οργάνωσης της αποθήκευσης των δεδομένων για την βελτιστοποίηση της απόδοσης (π.χ. χρήση δομών δέντρων)
• στη γρήγορη πρόσβαση στα δεδομένα
1.2.3 Οι
Πίνακες Βάσεων Δεδομένων (Database Tables)
Οι βάσεις δεδομένων (databases) περιέχουν αντικείμενα (objects) που ονομάζονται Πίνακες (Tables). Οι Εγγραφές (Records) των δεδομένων αποθηκεύονται σ’ αυτούς τους πίνακες. Οι Πίνακες αναγνωρίζονται με τα ονόματά τους, όπως "Persons", "Orders", "Suppliers" κ.ά.
Οι Πίνακες περιέχουν Στήλες (Columns) και Γραμμές (Rows) με δε-δομένα. Οι Γραμμές (Rows) περιέχουν εγγραφές (records), όπως μία εγγραφή για κάθε άτομο. Οι Στήλες (Columns) περιέχουν δεδομένα, όπως First Name, Last Name, Address και City.
1.2.3.1
Τα Στοιχεία ενός πίνακα
Τα δεδομένα μιας βάσης δεδομένων αποθηκεύονται (οργανώνονται) στις εξής στοιχειώδεις μορφές :
• Αρχείο (File), είναι ένα σύνολο από
πολλά παρόμοια στοιχεία (εγγραφές) της βάσης δεδομένων.
• Υπερ-Κλειδί (Super Key), είναι ένα πεδίο ή συνδυασμός περισσοτέρων πεδίων που χαρακτηρίζει μοναδικά μια εγγραφή.
• Υποψήφιο-Κλειδί (Candidate Key), είναι το υπερ-κλειδί με το λιγότερο αριθμό πεδίων που χαρακτηρίζουν μοναδικά μια εγγραφή.
1.3 Γενική Δομή Συστημάτων Βάσεων Δεδομένων
Τα συστατικά μέρη ενός συστήματος διαχείρισης βάσης δεδομένων (DBMS) είναι λειτουργικές μονάδες που συνεργάζονται μεταξύ τους όπως φαίνεται στην Εικόνα 2 και αναλαμβάνουν τον έλεγχο για την σωστή λειτουργία της βάσης.
Εικόνα 1.2: Δομή συστημάτων βάσεων δεδομένων.
Για μερικές
λειτουργίες τους (π.χ. συστήματα αρχείων) μπορείτε
να ανατρέξετε και να ενημερωθείτε από τα
λειτουργικά συστήματα.
Τα λειτουργικά συστατικά μέρη ενός συστήματος Βάσεων Δεδομένων μπορούν να διαιρεθούν γενικά σε δύο μεγάλες κατηγορίες α. στα συστατικά του διαχειριστή αποθήκευσης και β. στα συστατικά του επεξεργαστή ερωτημάτων.
Α. Διαχειριστής Αποθήκευσης (Storage manager)
Είναι υπεύθυνος για την ανάκληση αποθήκευση,
ενημέρωση των δεδομένων της βάσης και παρέχει την διασύνδεση μεταξύ των
δεδομένων που έχουν αποθηκευθεί στον δίσκο και των ερωτημάτων που στέλνονται
στο σύστημα βάσης δεδομένων από την εκάστοτε εφαρμογή.
Ο διαχειριστής αρχείων (File manager): διαχειρίζεται την κατανομή του διαστήματος δίσκων και των δομών δεδομένων που χρησιμοποιούνται για να αντιπροσωπεύσουν τις πληροφορίες για δίσκος.
Διαχειριστής βάσεων δεδομένων (database manager): αποτελεί τη διεπαφή μεταξύ των προγραμμάτων χαμηλού επιπέδου δεδομένων και εφαρμογής καθώς και των ερωτήσεων.
Διαχειριστής
buffer (Buffer manager): είναι υπέυθυνος για την τροφοδοσία
των δεδομένων από τον δίσκο προς την κύρια μνήμη. Αποφασίζει για την
προτεραιότητα των δεδομένων που θα προσπελαστούν από την κύρια μνήμη. Αποτελεί
ένα από τα σημαντικότερα μέρη του συστήματος καθώς καλείται να διαχειριστεί
όγκο δεδομένων που τις περισσότερες φορές είναι πολύ μεγαλύτερος από το μέγεθος
της κύριας μνήμης.
Διαχειριστής συναλλαγών (transaction manager): είναι υπεύθυνος για την διατήρηση της βάσης σε συνεπή κατάσταση είναι μέτα από ακάκαψη από αστοχία του μέσου ή του συστήματος. Επίσης διατηρεί την συνέπεια της βάσης και κατά την διάρκεια ταυτόχρονων συναλλαγών από πολλαπλούς χρήστες χωρίς διενέξεις και προβλήματα.
Διαχειριστής ελέγχου ταυτότητας χρηστών και ακεραιότητας (Authorization and integrity control manager): είναι υπεύθυνος για τον έλεγχο της ακεραιότητας της βάσης δηλ. τα δεδομένα που εισάγονται στην βάση να είναι σωστά και σύμφωνα με τους αντίστοιχους κανόνες. Επίσης ελέγχει τους χρήστες εάν έχουν πρόσβαση στα δεδομένα.
Β.
Ο επεξεργαστής ερωτημάτων (query processor)
Μεταφράζει τις
δηλώσεις από μια γλώσσα διατύπωσης ερωτημάτων στις χαμηλού επιπέδου εντολές.
Ο προ-μεταγλωττιστής (precompiler
dml) μετατρέπει τις δηλώσεις
ορισμού δεδομένων που ενσωματώνονται σε ένα πρόγραμμα εφαρμογής στην κανονική
διαδικασία κλήσης σε μια γλώσσα οικοδεσποτών
(host). Ο
Precompiler αλληλεπιδρά με τον επεξεργαστή ερωτημάτων.
Ο μεταγλωττιστής ddl (ddl compiler) μετατρέπει τις δηλώσεις ddl σε ένα
σύνολο πινάκων που περιέχουν τα μεταδεδομένα και αποθηκεύονται σε ένα λεξικό δεδομένων.
Ο διαχειριστής αποθήκευσης χειρίζεται τις
διάφορες δομές δεδομένων ως μέρος του φυσικού χειρισμού των δεδομένων με
αποτέλεσμα την φυσική καταγραφή των δεδομένων σε μέσα αποθήκευσης.
Φυσική
αποθήκευση –Δίσκος (Physical storage)
Aρχεία
δεδομένων ( data files) αποθηκεύεται η ίδια τη βάση
δεδομένων σε μια περιοχή του δίσκου.
Λεξικό δεδομένων (data dictionary) πληροφορίες μεταδεδμένων σχετικές
με τη δομή της βάσης δεδομένων. Μεγάλη
έμφαση πρέπει να δοθεί στην ανάπτυξη ενός
καλού σχεδίου ώστε να υπαρχει αποδοτική εφαρμογή του λεξικού.
Ευρετήρια-Δείκτες (index) Ταξινομημένα πινακάκια των δεδομένων με την βοήθεια των ποίων επιτυγχάνεται η γρήγορη πρόσβαση στα δεδομένα της βάσης.
Συνοπτικά μπορούμε να παρουσιάσουμε την παρακάτω δεδνρική δομή των λειτουργικών μονάδων ενός συστήματος βάσεων δεδομένων και των συστατικών τους.
• Query processor
– DML compiler
– Embedded DML precompiler
– DDL interpreter
– Query processing unit
• Storage manager
– Authorization and integrity
control
– Transactions management
– File management
– Buffer management
• Physical storage
– Data files,
– Meta-data (data dictionary),
– Index, statistics
1.4
Εισαγωγή Στην Έννοια Client-Server
Computing
1.4.1
Client-server computing
Γενικά, το client-server computing αναφέρεται σε μια βασική αλλαγή στο στυλ των υπολογιστών, την αλλαγή από τα συστήματα που βασίζονται στα μηχανήματα στα συστήματα που βασίζονται στον χρήστη.
Ειδικότερα, ένα σύστημα client-server είναι ένα σύστημα στο οποίο το δίκτυο ενώνει διάφορους υπολογιστικούς πόρους, ώστε οι clients (ή αλλιώς front end) να μπορούν να ζητούν υπηρεσίες από έναν server (ή αλλιώς back end), ο οποίος προσφέρει πληροφορίες ή επιπρόσθετη υπολογιστική ισχύ.
Με άλλα λόγια, στο client-server μοντέλο, ο client θέτει μια αίτηση και ο server επιστρέφει μια ανταπόκριση ή κάνει μια σειρά από ενέργειες. Ο server μπορεί να ενεργοποιείται άμεσα για την αίτηση αυτή ή να προσθέτει την αίτηση σε μια ουρά. Η άμεση ενεργοποίηση για την αίτηση μπορεί, για παράδειγμα, να σημαίνει ότι ο server υπολογίζει έναν αριθμό και τον επιστρέφει αμέσως στον client. H τοποθέτηση της αίτησης σε μια ουρά μπορεί να σημαίνει ότι η αίτηση πρέπει να τεθεί σε αναμονή για να εξυπηρετηθεί. Ένα καλό παράδειγμα για αυτό είναι όταν εκτυπώνουμε ένα κείμενο σε ένα εκτυπωτή δικτύου. Ο server τοποθετεί την αίτηση σε μια ουρά μαζί με αιτήσεις εκτυπώσεων και από άλλους clients. Μετά επεξεργάζεται την αίτηση με βάση την σειρά προτεραιότητας, η οποία, σε αυτή την περίπτωση, καθορίζεται από τη σειρά με την οποία ο server παρέλαβε την απαίτηση.
Το client-server computing είναι πολύ σημαντικό, διότι επιτυγχάνει τα εξής:
• Αποτελεσματική χρήση της υπολογιστικής ισχύος.
• Μείωση του κόστους συντήρησης, δημιουργώντας συστήματα client-server που απαιτούν λιγότερη συντήρηση και κοστίζουν λιγότερο στην αναβάθμιση.
• Αύξηση της παραγωγικότητας, προσφέροντας στους χρήστες ξεκάθαρη πρόσβαση στις αναγκαίες πληροφορίες μέσω σταθερών και εύκολων στην χρήση διασυνδέσεων.
• Αύξηση της ευελιξίας και της δυνατότητας δημιουργίας συστημάτων που υποστηρίζουν πολλά περιβάλλοντα.
1.4.2
Server
Ο server απαντάει στις αιτήσεις που γίνονται από τους clients. Ένας client μπορεί να ενεργεί ως server εάν λαμβάνει, επεξεργάζεται αιτήσεις και τις στέλνει (για παράδειγμα, ένας σταθμός εργασίας που χρησιμοποιείται και ως server εκτυπώσεων από άλλους). Οι server δεν ξεκινάνε τις επικοινωνίες -περιμένουν τις αιτήσεις των clients.
Επιστρέφοντας στο παράδειγμα του server εκτυπώσεων ενός δικτύου, ο client ζητάει από τον server να εκτυπώσει ένα κείμενο σε έναν συγκεκριμένο εκτυπωτή και ο server προσθέτει την εκτύπωση σε μια ουρά και ενημερώνει τον client όταν το κείμενο εκτυπωθεί επιτυχημένα. Η διαδικασία του client μπορεί να ανήκει φυσικά στον ίδιο σταθμό εργασίας με την διαδικασία του server. Στο παράδειγμα εδώ, μια εντολή εκτύπωσης μπορεί να εκδίδεται στον server του σταθμού εργασίας του δικτύου, χρησιμοποιώντας την διαδικασία του server εκτυπώσεωνσε αυτόν τον σταθμό εργασίας.
Μια server μηχανή πρέπει να μπορεί να κάνει τα ακόλουθα :
• Να αποθηκεύει, να ανακτά και να προστατεύει πληροφορίες.
• Να επιθεωρεί τις αιτήσεις των clients.
• Να δημιουργεί εφαρμογές διαχείρισης πληροφοριών, όπως δημιουργία αντιγράφων, ασφάλεια κτλ.
• Να διαχειρίζεται πληροφορίες
1.4.2.1
Τύποι των Servers
Οι servers μπορούν να διαιρεθούν σε έξι τύπους:
• Server Εφαρμογών (Application servers).
• Server Πληροφοριών (Data servers).
• Server Υπολογισμών (Computing servers).
• Server Βάσεων Δεδομένων (Database servers).
• Server Πόρων ή Επικοινωνιών (Resource or Communications servers).
Ο τύπος του server που χρησιμοποιείται εξαρτάται από την απαιτούμενη εργασία. Επίσης, αυτοί οι έξι ρόλοι μπορούν να συνδυαστούν σε ένα σύστημα ή να διαιρεθούν σε περισσότερα. Για παράδειγμα, η ίδια μηχανή μπορεί να εξυπηρετήσει σαν ένας server εφαρμογών και ένας server βάσεων δεδομένων.
Οι περισσότεροι servers που χρησιμοποιούνται σήμερα στις επιχειρήσεις είναι servers αρχείων (file servers). Οι servers αρχείων επιτρέπουν στους clients να προσπελάσουν αρχεία και να μοιραστούν πληροφορίες και λογισμικό. Αυτοί οι servers είναι συνήθως ένας προσωπικός υπολογιστής ή ένα UNIX σύστημα με έναν επεξεργαστή. Πολλοί άνθρωποι μπορούν να προσπελάσουν τον server αρχείων την ίδια στιγμή, που σημαίνει ότι ο server έχει πολλαπλές μονάδες δίσκων και κάρτες προσαρμογής δικτύου, αλλά μόνο ένα άτομο μπορεί να προσπελάσει ένα συγκεκριμένο αρχείο εκείνη τη στιγμή.
Server Εφαρμογών (Application servers)
Οι servers εφαρμογών (application servers) τρέχουν λογισμικό εφαρμογών, που είναι πολύ σημαντικό όταν διανέμονται λογικές εφαρμογών μεταξύ του client και του server. H τοποθέτηση εφαρμογών στον server σημαίνει ότι αυτές οι εφαρμογές είναι διαθέσιμες σε πολλούς clients. Πολλοί clients μπορούν να χρησιμοποιήσουν τα RPCs( Remote Procedure Calls) για να θέσουν σε λειτουργία μια επεξεργασία στον server. Πολλοί servers εφαρμογών μπορούν ακόμα και να εργαστούν μαζί για να απαντήσουν στην απαίτηση του client. Κάθε server μπορεί να τρέξει ένα διαφορετικό λειτουργικό σύστημα σε μια διαφορετικήπλατφόρμα υλικού, αλλά αυτές οι λεπτομέρειες είναι ξεκάθαρες στον client -o client μπορεί να κάνει αιτήσεις χωρίς να υπολογίζει τον τύπο της μηχανής που θα ανταποκριθεί.
Server Πληροφοριών (Data servers)
Οι servers πληροφοριών (data severs) χρησιμοποιούνται μόνο για αποθήκευση και διαχείριση πληροφοριών και χρησιμοποιούνται σε συνδυασμό με servers υπολογισμών (compute servers). Αυτοί οι servers ερευνούν και ελέγχουν την αξιοπιστία των πληροφοριών, αλλά γενικά δεν μεταβιβάζουν μεγάλη ποσότητα πληροφοριών στο δίκτυο.
Server Υπολογισμών (Computing servers)
Οι servers υπολογισμών (compute servers) παίρνουν τις αιτήσεις των clients για πληροφορίες στον server πληροφοριών και μετά προωθούν τα αποτελέσματα των αιτήσεων πίσω στον client.
Server Βάσεων Δεδομένων (Database servers)
Οι servers βάσεων δεδομένων (database servers) είναι τυπικά client-server συστήματα, και έχουν να κάνουν την ίδια εργασία με αυτή που κάνουν οι servers πληροφοριών και υπολογισμών μαζί. Οι servers βάσεων δεδομένων τρέχουν DBMS (Database Management System) λογισμικό και πολύ πιθανό και κάποια λογική client-server εφαρμογή, που σημαίνει ότι αυτός ο τύπος του server χρειάζεται περισσότερη ισχύ. Τα DBMS προσφέρουν εξειδικευμένες υπηρεσίες: την δυνατότητα να ανακτά πληροφορίες και να διαχειρίζεται πληροφορίες. Οι servers που συνδυάζουν τις λειτουργίες του server βάσεων δεδομένων και του server εφαρμογών είναι επίσης γνωστοί ως server συναλλαγών (transaction servers).
Server Πόρων ή Επικοινωνιών (Resource or Communication servers)
Οι servers πόρων (resource servers), που περικλείουν τους servers επικοινωνιών (communications servers) επιτρέπουν σε πολλούς clients την προσπέλαση συγκεκριμένων πόρων, που είναι ουσιαστικά πολύ ακριβοί για να βρίσκονται σε έναν client. Για παράδειγμα, οι servers εκτυπώσεις (print servers) συνδέουν πολλούς clients με πολλούς εκτυπωτές. Οι servers επικοινωνιών συνδέουν απομακρυσμένα συστήματα. Άλλοι servers πόρων μπορούν να συνδέσουν clients με άλλες συσκευές, όπως πολυμέσα. Συνήθως από τη στιγμή που οι servers πόρων είναι συνδεδεμένοι σε μια συγκεκριμένη συσκευή, δεν απαιτείται τόσο πολύ ισχύ, όση αυτή των servers που προσφέρουν περισσότερο περιπλοκές υπηρεσίες.
Ένας εύκολος τρόπος για να ξεχωρίσουμε τους servers εφαρμογών, βάσεων δεδομένων και συναλλαγών είναι πώς ο client κάνει αιτήσεις στον server. Οι servers δέχονται τους παρακάτω τύπους απαιτήσεων από τους clients:
• Οι servers εφαρμογών ενεργούν κάπως πιο αποκεντρωμένα από τη βάση δεδομένων σε απάντηση του client.
• Οι servers βάσεων δεδομένων επιστρέφουν πληροφορία σαν απάντηση σε μια αίτηση του client, που γίνεται σε SQL.
• Οι servers συναλλαγών επιστρέφουν πληροφορία σαν απάντηση σε ένα μήνυμα που αποτελείται από ένα σύνολο εντολών SQL. Αυτό το σύνολο επιτυγχάνει ή αποτυγχάνει σαν μια μονάδα.
Από τους έξι τύπους, οι client-server εφαρμογές συνήθως χρησιμοποιούν πιο πολύ servers εφαρμογών, βάσεων δεδομένων και συναλλαγών ή κάποιο συνδυασμό αυτών των τριών.
1.4.2.2
Ο ρόλος του server
H client-server διαδικασία μπορεί να απλοποιηθεί στα παρακάτω βήματα:
1) Ο χρήστης στέλνει μια αίτηση ή ένα ερώτημα, μέσω του client, στον server.
2) server ακούει την αίτηση του client.
3) Από τη στιγμή που ο server ακούει την αίτηση, ελέγχει την δυνατότητα πρόσβασης του χρήστη.
4) Ο server επεξεργάζεται το ερώτημα.
5) Ο server επιστρέφει τα αποτελέσματα στον client.
6) client δέχεται τα αποτελέσματα και τα παρουσιάζει στον χρήστη.
Από αυτά τα έξι βήματα, ο server παίζει τέσσερις σημαντικούς ρόλους. Είναι φανερό ότι ο server είναι η καρδιά της client -server εφαρμογής. Ο server υπάρχει για να απαντήσει στις ανάγκες του client, και ο clientεξαρτάται από την αξιοπιστία και την έγκαιρη απάντηση του server.
Ο server πρέπει να εκτελέσει τις ακόλουθες λειτουργίες:
• Να ακούσει την αίτηση του client .
• Να ελέγξει την δυναμικότητα πρόσβασης του χρήστη.
• Να επεξεργαστεί την αίτηση.
• Να επιστρέψει τα αποτελέσματα.
Ο server δεν «εγκαινιάζει» καμιά ενέργεια. Αντίθετα, ο server περιμένει παθητικά να φτάσουν οι αιτήσεις του client μέσω του δικτύου. Ο server πρέπει πάντα να απαντάει στους clients, ακόμα και όταν πολλοί clients κάνουν ταυτόχρονες αιτήσεις.
Από την στιγμή που ο server δέχεται από τον client την απαίτηση, o server πρέπει να βεβαιωθεί ότι ο client είναι εξουσιοδοτημένος να λάβει την πληροφορία ή την απάντηση. Αν ο client δεν είναι εξουσιοδοτημένος, ο server απορρίπτει την αίτηση και στέλνει μήνυμα στον client. Εάν ο client είναι εξουσιοδοτημένος, ο server συνεχίζει και επεξεργάζεται την αίτηση.
Η επεξεργασία της αίτησης περιλαμβάνει την παραλαβή της αίτησης του client, την μετατροπή του σε μια μορφή που μπορεί ο server να χρησιμοποιήσει και την επεξεργασία της ίδιας της αίτησης.
Όταν η επεξεργασία ολοκληρώνεται, ο server στέλνει τα αποτελέσματα πίσω στον client. Μετά, ο client μπορεί να μεταφράσει και να χρησιμοποιήσει τις πληροφορίες.
Δεν υπάρχει προκαθορισμένος διαχωρισμός στις ευθύνες για τις client-server εφαρμογές. Ανάλογα με τις ανάγκες μας, μπορούμε και να διαχωρίσουμε την εφαρμογή. Το ισχυρό client μοντέλο δίνει περισσότερες λειτουργίες στον client, ενώ το ισχυρό server μοντέλο δίνει περισσότερες λειτουργίες στον server. Οι servers εφαρμογών και συναλλαγών τείνουν να είναι ισχυροί servers, ενώ οι servers βάσεων δεδομένων και αρχείων τείνουν να έχουν ισχυρούς clients.
Ανεξάρτητα του πώς διαχωρίζουμε την εφαρμογή, η βασική ευθύνη του server παραμένει η ίδια: να εξυπηρετεί τους clients που κάνουν αιτήσεις.
Ακούγοντας την αίτηση του client
Ο server δεν ξεκινάει καμιά αλληλεπίδραση με τον client, o server απλά περιμένει τον client για να κάνει την αίτηση του. Όταν ο client κάνει την αίτηση, ο server ανταποκρίνεται το συντομότερο δυνατό.
Η κάρτα προσαρμογής στο δίκτυο συνδέει φυσικά τον server, με το δίκτυο και καθορίζει εάν οι εισερχόμενες απαιτήσεις είναι κατανοητές για τον κόμβο του προσαρμογέα. Εάν ναι, το πρωτόκολλο τις αποδέχεται και τις αποκωδικοποιεί ώστε μετά ο server να μπορεί να τις επεξεργαστεί.
Ελέγχοντας την δυνατότητα πρόσβασης του χρήστη
Από την στιγμή που ο server δέχεται την αίτηση από τον client, o server πρέπει να βεβαιωθεί ότι ο χρήστης είναι εξουσιοδοτημένος να λάβει την πληροφορία ή την ανταπόκριση από το server. Εάν ο χρήστης δεν είναι εξουσιοδοτημένος, ο server απορρίπτει την αίτηση και στέλνει ένα μήνυμα στον client. Εάν ο χρήστης είναι εξουσιοδοτημένος, o server συνεχίζει και επεξεργάζεται την αίτηση.
Επεξεργάζοντας την αίτηση
Ο server πρέπει να είναι ικανός να ανταποκριθεί στην αίτηση του client αμέσως. Εάν πολλοί clients κάνουν αιτήσεις ταυτόχρονα, ο server πρέπει να είναι ικανός να βάζει σε προτεραιότητα τις αιτήσεις των clients, και να επεξεργάζεται πολλές αιτήσεις την στιγμή.
Από την στιγμή, που ο server επιβεβαιώνει ότι ο χρήστης είναι εξουσιοδοτημένος να κάνει αιτήσεις στον server, o server μπορεί να αποκαλύψει την απαίτηση και να την επεξεργαστεί.
Η αίτηση μπορεί να έχει μια από τις ακόλουθες τέσσερις μορφές:
• Μια απόμακρη αίτηση είναι μια απλή αίτηση για πληροφορίες από έναν απλό client.
• Μια απόμακρη συναλλαγή περιλαμβάνει πολλαπλές αιτήσεις για πληροφορίες από έναν απλό client.
• Μια κατανεμημένη συναλλαγή περιλαμβάνει πολλαπλές αιτήσεις για πληροφορίες από έναν απλό client, οι οποίες πληροφορίες ανήκουν σε πολλούς server.
• Μια κατανεμημένη αίτηση είναι μια συναλλαγή που σχηματίζεται από πολλαπλές αιτήσεις για πληροφορίες από πολλαπλούς clients, οι οποίες πληροφορίες ανήκουν σε πολλαπλούς servers.
Αυτές οι αιτήσεις πρέπει να περάσουν από το λεγόμενο ACID τεστ: Ατομικότητα (Atomicity), Συνέπεια (Consistency), Απομόνωση(Isolation) και Αντοχή (Durability). H ατομικότητα σημαίνει ότι ολόκληρη η συναλλαγή πρέπει να πετύχει ή να αποτύχει, δεν μπορεί να ολοκληρωθεί ως προς ένα κομμάτι της. Η συνέπεια σημαίνει ότι το σύστημα πάει από ένα σταθερό σημείο σε ένα άλλο σταθερό σημείο. Η απομόνωση σημαίνει ότι, από τη στιγμή που μια συναλλαγή ολοκληρώνεται με επιτυχία, τα αποτελέσματα της δεν είναι ορατά σε άλλες συναλλαγές. Η αντοχή σημαίνει ότι από τη στιγμή που η συναλλαγή ολοκληρώνεται με επιτυχία, δεσμεύεται μόνιμα από το σύστημα και επακόλουθες αποτυχίες δεν θα το επηρεάσουν. Εάν η συναλλαγή αποτύχει, το σύστημα οπισθοχωρεί στο σημείο που ήταν πριν προσπαθήσει να επεξεργαστεί την συναλλαγή.
Η διαχείριση της συναλλαγής ελέγχεται είτε από το DBMS είτε από το ΤΡΜ (Transaction Processing Manager). Οι διαχειριστές της συναλλαγής προστατεύουν την ακεραιότητα των πληροφοριών που είναι μια απόλυτη αξίωση. Ο server είναι υπεύθυνος για προστασία και την διατήρηση της ακρίβειας των πληροφοριών.
Όταν ο server τελειώνει την επεξεργασία των αποτελεσμάτων και είναι έτοιμος να επιστρέψει τα αποτελέσματα στον client, πρέπει να μορφοποιήσει τα αποτελέσματα και να τα στείλει με ένα τρόπο που μπορεί ο client να καταλάβει.
Ο server παραδίδει τις πληροφορίες στο πρωτόκολλο, που διευθύνει ένα πακέτο, μορφοποιεί τις πληροφορίες για να τις τοποθετήσει στο πακέτο και περνάει το πακέτο στο δίκτυο. Το δίκτυο μετά βεβαιώνεται ότι το πακέτο πηγαίνει στον client.
1.4.3
Client
Ο client είναι ο αιτών των υπηρεσιών. Ο client δεν μπορεί παρά να είναι ένας υπολογιστής. Οι υπηρεσίες που ζητούνται από τον client μπορεί να υπάρχουν στους ίδιους σταθμούς εργασίας ή σε απομακρυσμένους σταθμούς εργασίας που συνδέονται μεταξύ τους μέσω ενός δικτύου. Ο client ξεκινάει πάντα την επικοινωνία.
Τα συστατικά του client είναι πολύ απλά. Μια client μηχανή πρέπει να μπορεί να κάνει τα ακόλουθα:
• Να τρέχει το λογισμικό των γραφικών διεπαφών χρηστών (GUIs).
• Να δημιουργεί τις αιτήσεις για πληροφορίες και να τις στέλνει στον server.
• Να αποθηκεύει τις επιστρεφόμενες πληροφορίες.
Αυτές οι αιτήσεις καθορίζουν πόση μνήμη χρειάζεται, ποια ταχύτητα επεξεργασίας θα μπορούσε να βελτιώσει τον χρόνο ανταπόκρισης, και πόση χωρητικότητα αποθήκευσης απαιτείται.
Η διαδικασία client-server μπορεί να απλοποιηθεί στα ακόλουθα βήματα:
1) Ο χρήστης δημιουργεί μια αίτηση ή ένα ερώτημα.
2) Ο client μορφοποιεί το ερώτημα και το στέλνει στο server.
3) Ο server ελέγχει την δυνατότητα πρόσβασης του χρήστη.
4) Ο server επεξεργάζεται το ερώτημα και επιστρέφει τα αποτελέσματα.
5) Ο client λαμβάνει την ανταπόκριση και τη μορφοποιεί για τον χρήστη.
6) Ο χρήστης βλέπει και χειρίζεται την πληροφορία.
Πέρα από τα έξι αυτά βήματα, o client παίζει τέσσερις βασικούς ρόλους. Ο client είναι στην πραγματικότητα το κέντρο της client-server εφαρμογής. Ο χρήστης αλληλεπιδρά με τον client, o client ξεκινάει το μεγαλύτερο μέρος της ανάπτυξης της εφαρμογής, και ο server υπάρχει για να απαντάει στις ανάγκες του client.
Ο client εκτελεί τις ακόλουθες λειτουργίες :
• Προσφέρει μια εύκολη στη χρήση διασύνδεση χρηστών.
• Στέλνει απαιτήσεις.
• Δέχεται ανταποκρίσεις.
• Επιτρέπει στον χρήστη να βλέπει και να χειρίζεται τις πληροφορίες.
Για κάθε έναν από τους τέσσερις ρόλους, δηλαδή της παροχής μιας εύκολης στη χρήση διασύνδεσης, της αποστολής απαιτήσεων, της αποδοχής ανταποκρίσεων και της δυνατότητας στο χρήστη να παίρνει και να χειρίζεται πληροφορίες, ο client έχει συγκεκριμένες ευθύνες.
Η ανάπτυξη του client βασίζεται σε αρχές σχεδίασης εστιασμένες στον χρήστη. Αυτές οι αρχές είναι οι ακόλουθες:
• Διατηρεί τη διασύνδεση συνεπή, ώστε οι χρήστες να πάρουν μια οικεία όψη και αίσθηση από τις εφαρμογές και τις πλατφόρμες.
• Δεν ξεχνά ότι ο υπολογιστής εξυπηρετεί τον χρήστη. Ο χρήστης θα πρέπει να ελέγχει την σειρά των εργασιών. Ο υπολογιστής δεν θα πρέπει ποτέ να αγνοεί τον χρήστη, αλλά να διατηρεί τον χρήστη ενήμερο και να προσφέρει άμεσες απαντήσεις.
• Χρησιμοποιεί μεταφορές, τόσο φραστικές, όσο και οπτικές για να βοηθήσει τους χρήστες να αναπτύξουν θεμελιώδεις απεικονίσεις. Για παράδειγμα, η αποθήκευση αρχείων σε φακέλους στον υπολογιστή, ώστε ο χρήστης να μπορεί να συγκεντρωθεί στη δουλειά παρά να αποκαλύπτει πως λειτουργεί ο υπολογιστής.
• Δεν ζητάει από τον χρήστη να θυμάται εντολές. Οι εντολές μπορούν να είναι διαθέσιμες στον χρήστη για να τις επιλέγει, ώστε ο χρήστης να μπορεί να βασίζεται στην αναγνώριση, παρά στην απομνημόνευση.
• Επιτρέπει στην διασύνδεση να συγχωρεί τα λάθη του χρήστη. Οι καταστροφικές ενέργειες απαιτούν επιβεβαίωση, και οι χρήστες μπορούν να ανατρέψουν ή να ακυρώσουν την τελευταία ενέργεια.
Τα δίκτυα είναι τα πιο άγνωστα συστατικά στην εξίσωση των client-server. Γενικά οι άνθρωποι δεν ξέρουν πολλά για το πώς λειτουργούν τα δίκτυα στα συστήματα client-server, διότι τα συστήματα αυτά είναι σχεδιασμένα για να κάνουν τα δίκτυα διάφανα στον χρήστη. Επιπλέον, τα δίκτυα πρέπει να είναι αξιόπιστα. Πρέπει να μπορούν να υποστηρίζουν την επικοινωνία, να ελέγχουν σφάλματα και να ξεπερνούν αμέσως τις αποτυχίες.
Τα δίκτυα ελέγχονται από το λογισμικό λειτουργικών συστημάτων και διαχείρισης για να ελέγχουν τις υπηρεσίες επικοινωνίας του server και να προστατεύουν τα προγράμματα του client και του server από το να έχουν άμεση σύνδεση μεταξύ τους. Το λογισμικό διαχείρισης εστιάζεται στη παροχή αξιόπιστων υπηρεσιών, στην ελαχιστοποίηση των προβλημάτων στο δίκτυο και στην ελαχιστοποίηση των χρόνων «πτώσης» του δικτύου.
1.4.5
H Σύνδεση
Εκείνο που παίζει σημαντικό ρόλο στο client server computing είναι η σύνδεση του client με τον server, δηλαδή ουσιαστικά το δίκτυο στο οποίο εντάσσονται. Οι χρήστες θέλουν να αισθάνονται ότι οι υπηρεσίες που χρειάζονται οι ίδιοι, είναι διαθέσιμες και προσπελάσιμες στο δίκτυο, χωρίς να πρέπει να λαμβάνουν υπόψη μόνο την τεχνολογία. Όταν χρειάζεται να χρησιμοποιήσουν client-server εφαρμογές, είναι απαραίτητο να προσδιορίζεται το θέμα της σύνδεσης. Τα δίκτυα Lan προσφέρουν μεγαλύτερες ταχύτητες σε σχέση με το Internet γεγονός που είναι υψίστης σημασίας στον τρόπο σχεδιασμού των εφαρμογών .
1.4.5.1 Ισχυροί servers και ισχυροί
clients (fat servers και fat clients)
Εκτός από τον διαχωρισμό ανάλογα με τις υπηρεσίες που προσφέρουν, οι client-server εφαρμογές μπορούν να διακριθούν ανάλογα με το πώς η εφαρμογή κατανέμεται μεταξύ του client και του server. Το μοντέλο του ισχυρού server προσδίδει περισσότερες λειτουργίες στον server. To μοντέλο του ισχυρού client προσδίδει περισσότερες λειτουργίες στον client. Οι Web servers είναι παραδείγματα ισχυρών servers. Οι servers βάσεων δεδομένων και αρχείων είναι παραδείγματα ισχυρών clients.
Οι ισχυροί clients είναι οι πιο παραδοσιακοί τύποι των clients-servers. Το κύριο σώμα της εφαρμογής τρέχει στην πλευρά της εξίσωσης, που ανήκει στον client. Ταυτόχρονα στον server αρχείων και τον server βάσεων δεδομένων, οι clients γνωρίζουν το πώς είναι οργανωμένες και αποθηκευμένες οι πληροφορίες στην πλευρά του server. Προσφέρουν ευλυγισία και ευκαιρίες για δημιουργία εργαλείων που επιτρέπουν στους τελικούς χρήστες να δημιουργήσουν τις δικές τους εφαρμογές.
Οι εφαρμογές των ισχυρών servers είναι πιο εύκολο να διαχειρίζονται και να αναπτύσσονται στο δίκτυο διότι το μεγαλύτερο μέρος του κώδικα τρέχει στους servers. Οι ισχυροί servers προσπαθούν να ελαχιστοποιήσουν τις ανταλλαγές στο δίκτυο δημιουργώντας πιο ουσιώδη επίπεδα υπηρεσιών. Οι servers «συναλλαγών», για παράδειγμα, συμπυκνώνουν τη βάση δεδομένων. Αντί να εξάγουν ανεπεξέργαστες πληροφορίες, εξάγουν τις διαδικασίες που χειρίζονται αυτές τις πληροφορίες. Ο client στο μοντέλο του ισχυρού client προσφέρει το GUI και αλληλεπιδρά με τον server μέσω των RPCs (Remote Procedure Calls).
Κάθε client-server μοντέλο έχει την χρησιμότητά του. Σε πολλές περιπτώσεις, τα μοντέλα αλληλοσυμπληρώνονται και δεν είναι ασυνήθιστο να συνυπάρχουν σε μια εφαρμογή. Για παράδειγμα, μια εφαρμογή θα μπορούσε να απαιτεί έναν server, ο οποίος να συνδυάζει τους servers αρχείων, βάσεων δεδομένων και συναλλαγών.
1.4.5.2
Αρχιτεκτονικές Two-tier
(2-στρωμάτων) και Three-tier
(3-στρωμάτων) client-server
Πολλές φορές προτιμούνται να χρησιμοποιούνται όροι, όπως 2-tier, 3-tier client-server αρχιτεκτονικές αντί των όρων ισχυροί clients και ισχυροί servers. Αλλά ουσιαστικά αυτοί οι όροι βασίζονται στην ίδια βασική ιδέα. Έχουν να κάνουν με το πώς διαιρείται η client-server εφαρμογή σε λειτουργικές ενότητες, οι οποίες μετά μπορούν να ανατεθούν είτε στον client, είτε σε έναν ή περισσότερους servers.
Two-tier client-server computing
Οι client-server εφαρμογές πρώτης γενιάς εκτελούνταν γενικά με δυο λογικά στρώματα. Αυτό το μοντέλο έχει συχνά δυο στρώματα υλικού. Αυτή δεν είναι η περίπτωση όπου ο client και ο server τρέχουν ταυτόχρονα στον ίδιο υπολογιστή. Ο two-tier client-server διαιρεί την εφαρμογή σε δυο συγκεκριμένα τμήματα (τα tiers), όπου ένα τμήμα τρέχει στον client υπολογιστή και ένα ξεχωριστό τμήμα τρέχει στον server. Αξίζει να σημειωθεί ότι ο κώδικας του client και του server δεν ενημερώνει, ούτε καν γνωρίζει εάν αυτοί τρέχουν στον ίδιο υπολογιστή ή όχι. Επιπλέον, η εφαρμογή διαιρείται κατά μήκος του client και του server δηλαδή χωρίζεται σε 2 τμήματα που το καθένα τρέχει στον client και server αντίστοιχα.
Η ποσότητα της λογικής εφαρμογής που λειτουργεί στον client ή στον server καθορίζει εάν αυτό είναι αδύνατο ή ισχυρό. Το αδύνατο υποδηλώνει ότι παρουσιάζεται μικρή ανάπτυξη της εφαρμογής και το ισχυρό ότι παρουσιάζεται ένα μεγάλο τμήμα της λογικής της εφαρμογής. Υπάρχουν ποίκιλλες διαβαθμίσεις αδυνάτου και ισχυρού. Οι αδύνατοι client είναι ελκυστικοί όταν ο client υπολογιστής έχει περιορισμένη επίδοση. Οι two-tier clients-server εμφανίζονται να είναι πιο δύσκολο να αναπτυχθούν και να διατηρηθούν από ό,τι κανονικά προσδοκάται. Οι two-tier εφαρμογές δεν κλιμακώνουν καλά. Επίσης, τα εργαλεία των client-server πήραν χρόνο για να αναπτυχθούν.
Στην επόμενη σελίδα ακολουθεί ένα διάγραμμα όπου διαφαίνεται η διάρθωση μιας 2 tier εφαρμογής .
Εικόνα 1.3 : Αντιπροσωπευτικό παράδειγμα Client/Server(“TWO-TIER”) αρχιτεκτονικής
Three-tier Client Server Computing
Ο πιο πρόσφατος τύπος client-server computing που αναπτύσσεται είναι ο three-tier. Μερικοί άνθρωποι επίσης χρησιμοποιούν πολλαπλούς tier για να περιλάβουν οποιαδήποτε προσέγγιση που χρησιμοποιεί περισσότερους από δυο λογικούς tiers.
Μια πρωταρχική διαφορά μεταξύ two-tier και three-tier εφαρμογών είναι η επιπλέον επίστρωση λογισμικού στο server. Όπου οι two-tier εφαρμογές τείνουν να τοποθετούν την λογική στον client και να περνούν εγγραφές στη βάση δεδομένων (ισχυρό client μοντέλο) ή να περνούν δεδομένα στη βάση δεδομένων, όπου αποθηκευμένες διαδικασίες εκτελούν την λογική της εφαρμογής (αδύνατο client μοντέλο), οι three-tier εφαρμογές τείνουν να περνούν μήνυμα μεταξύ των client και των server τμημάτων του κώδικα της εφαρμογής. Το τμήμα του server εφαρμόζει τη λογική της εφαρμογής, κατόπιν την στέλνει στη βάση δεδομένων. Η λογική της εφαρμογής συνήθως καλείται «Business Rules» στη χώρο των client -server.
Το τμήμα του server της three-tier αρχιτεκτονικής προσθέτει κάτι σε όλη την πολυπλοκότητα της εφαρμογής. Ωστόσο υπάρχουν ορισμένα πλεονεκτήματα σε μια three-tier client-server προσέγγιση. Αυτά περιλαμβάνουν:
• Κλιμάκωση
• Γενικότερα πιο χαμηλά προβλήματα στα δίκτυα διανομής
• Ευλυγισία
Η κλιμάκωση βελτιώθηκε, διότι ο κώδικας του server και η βάση δεδομένων είναι χωρισμένα, μπορούν να ξεκινήσουν από ένα απλό «υπολογιστή-οικοδεσπότη» και αργότερα να χωριστούν. Πολλαπλές εφαρμογές server μπορούν να επικοινωνήσουν με μια κεντρική βάση δεδομένων ή μια εφαρμογή server μπορεί ακόμα να εξυπηρετήσει τους clients ενώ προσπελάζονται οι πολλαπλές βάσεις δεδομένων όσο το σύστημα αυξομειώνεται.
Τα χαμηλότερα προβλήματα στα δίκτυα απορρέουν από το πέρασμα μικρών μηνυμάτων στην εφαρμογή παρά από ολόκληρες εγγραφές πληροφοριών.
Η ευλυγισία κερδίζεται, διότι ο client, ο server και τα συστήματα βάσεων δεδομένων μπορούν το καθένα να αντικατασταθούν χωρίς να επηρεάζουν τα αλλά κομμάτια, δεδομένου ότι η διασύνδεση επίσης δεν αλλάζει. Για παράδειγμα, μετατρέποντας τη βάση δεδομένων από Sybase σε Oracle επηρεάζεται μόνο το τμήμα του server της εφαρμογής, όχι το client. Το να ξαναδιατυπώνεις έναν client από Visual Basic σε Delphi δεν έχει επίδραση στο υπόλοιπο τμήμα της εφαρμογής, δεδομένου ότι υπάρχει αλληλεπίδραση ανάμεσα στον κώδικα του client και τον κώδικα του server.
Πολλές από τις σημερινές εμπορικές εφαρμογές, που βασίζονται σε βάσεις δεδομένων,χρησιμοποιούν το three-tiered client-server μοντέλο για να κερδίσουν τη δυνατότητα αυξομείωσης και ευλυγισίας. Επίσης οι Web εφαρμογές είναι γενικά three-tier client-server εφαρμογές.
Δηλαδή τα 3 επίπεδα μια 3 tier εφαρμογής είναι συνήθως τα εξής :
1. Βάση Δεδομένων
2. Server
3. Client
Εικόνα 1.4 :
Αντιπροσωπευτικό παράδειγμα Client/Server(“THREE-TIER”) αρχιτεκτονικής
Το μοντέλο οντοτήτων-συσχετίσεων (entity-relationship model) προτάθηκε από τον P.P. Chen το 1976 για να περιγράψει με γραφικά σύμβολα τα δεδομένα ως οντότητες, συσχετίσεις και γνωρίσματα. Από τότε έχει αποτελέσει το αντικείμενο εκτεταμένων ερευνών με αποτέλεσμα τη διαρκή ανάπτυξή του. Σήμερα θεωρείται ένα από τα πιο σημαντικά εργαλεία κατασκευής εννοιολογικών μοντέλων βάσεων δεδομένων, σε περιβάλλοντα με ποικίλες απαιτήσεις, και αποτελεί βασική συνιστώσα μεθοδολογιών ανάπτυξης πληροφοριακών συστημάτων. Χρησιμοποιείται κατά το στάδιο του εννοιολογικού σχεδιασμού (conceptual design) και του λογικού σχεδιασμού της βάσης δεδομένων.
Ένα μοντέλο δεδομένων είναι ένα εργαλείο που επιτρέπει την αφαίρεση περιττών πληροφοριών από το σύνολο των πραγματικών δεδομένων. Κάθε μοντέλο βασίζεται σε ορισμένους κανόνες και διαδικασίες.
Ένα μοντέλο δεδομένων έχει τρεις βασικές συνιστώσες:
1.
Δομές (Structures): Είναι τα αντικείμενα του μικρόκοσμου.
Άρα τα μοντέλα δεδομένων είναι μία συλλογή από εργαλεία για την περιγραφή δομών δεδομένων, τη σημασιολογία (semantics) δεδομένων και τους περιορισμούς δεδομένων. Υπάρχουν τρις διαφορετικές ομάδες που αντιστοιχούν στις αντίστοιχες φάσεις σχεδιασμού:
Ø Εννοιολογικά μοντέλα βασισμένα σε αντικείμενα
Ø
Λογικά
μοντέλα βασισμένα σε εγγραφές
Ø
Φυσικά
μοντέλα δεδομένων βασίζονται στις πραγματικές τιμές.
Παρακάτω, στην Εικόνα 2.1, φαίνονται σχηματικά οι τρις αυτές ομάδες.
Εικόνα 2.1 Βήματα σχεδιασμού μιας Εφαρμογής
Ένα από τα βασικότερα βήματα για την επίτευξη μιας σωστά σχεδιασμένης βάσης δεδομένων είναι η καταγραφή των απαιτήσεων και των περιορισμών της εφαρμογής. Αυτό επιτυγχάνεται με συνεντεύξεις από ομάδες ανθρώπων που είναι σχετικές με το αντικείμενο της εφαρμογής, με μελέτη του επιστημονικού υπόβαθρου της εφαρμογής και με σωστή ταξινόμηση και ομαδοποίηση όλων όσων συλλεχθούν. Το βήμα αυτό συχνά παραλείπεται λόγω βιασύνης και στο τέλος αντί για οικονομία χρόνου υπάρχει λανθασμένος σχεδιασμός με ελλιπή στοιχεία και χάσιμο πολύτιμου χρόνου στο τέλος για διορθώσεις και επανασχεδιασμό.
Αφού γίνει σωστά η συλλογή των απαιτήσεων και των απαραίτητων πληροφοριών υπάρχει η ανάγκη να μπουν όλες αυτές οι πληροφορίες σε μια τάξη, αφαιρώντας περιττές λεπτομέρειες και κρατώντας την ουσία. Την απαίτηση αυτή την καλύπτουν τα εννοιολογικά μοντέλα τα οποία με την βοήθεια σχηματικής αναπαράστασης βοηθούν τον αναλυτή να αποδώσει την σκέψη του με σύντομο και κατανοητό τρόπο. Τέτοιο μοντέλο είναι και μοντέλο Οντοτήτων και Συσχετίσεων που θα παρουσιάσουμε στις επόμενες παραγράφους.
Μετά τη σχηματική απόδοση που ολοκληρώνεται με τη χρήση των εννοιολογικών μοντέλων ακολουθεί η προσθήκη περισσότερων λεπτομερειών και η παρουσίαση των σχημάτων σε πιο λογικές δομές. Αυτό επιτυγχάνεται με τη χρήση των λογικών μοντέλων και στην περίπτωση των βάσεων δεδομένων, με το Σχεσιακό μοντέλο που θα επεξηγηθεί σε επόμενες παραγράφους. Το μοντέλο αυτό είναι επίσης αφαιρετικό αλλά περιέχει επιπλέον στοιχεία που βοηθούν στην κατανόηση του σχήματος της βάσης που θα αναπτυχθεί.
Τέλος πρέπει να γίνει σωστή επιλογή του συστήματος διαχείρισης βάσεων δεδομένων (RDBMS) στο οποίο θα γίνει ο φυσικός σχεδιασμός. Το βήμα αυτό είναι εξίσου σημαντικό όπως και τα προηγούμενα διότι εάν επιλεγεί λάθος RDBMS τα αποτελέσματα θα είναι δυσάρεστα με πολύ κόπο ανάπτυξης της εφαρμογής να πηγαίνει χαμένος. πχ. Να πρέπει έχουν πρόσβαση στην βάση πολλοί χρήστες ταυτόχρονα και η εφαρμογή να αναπτυχθεί σε ACCESS είναι λάθος.
2.2
Μοντέλο Ε-R
(Οντοτήτων Συσχετίσεων).
Το μοντέλο οντοτήτων-συσχετίσεων είναι βασισμένο στην αντίληψη ότι ο κάθε μικρόκοσμος που θα παρασταθεί με τη βάση δεδομένων αποτελείται από μια συλλογή από βασικά αντικείμενα τις οντότητες και συσχετίσεις μεταξύ αυτών των αντικειμένων.
μια οντότητα είναι
ένα διακριτό αντικείμενο.
κάθε οντότητα περιγράφεται από ένα σύνολο από ιδιότητες (γνωρίσματα)
μια συσχέτιση είναι
μία σύνδεση μεταξύ διάφορων οντοτήτων.
Το σύνολο των οντοτήτων ίδιου τύπου καλείται τύπος οντότητας και το σύνολο των
συσχετίσεων ίδιου τύπου καλείται τύπος
συσχέτισης.
Ένα άλλο απαραίτητο στοιχείο του διαγράμματος του ER είναι οι απεικονίσεις του πλήθους των οντοτήτων οι οποίες συμμετέχουν σε κάθε συσχέτιση.
Η εννοιολογική δομή μιας βάσης δεδομένων μπορεί να εκφραστεί γραφικά από ένα διάγραμμα οντοτήτων-συσχετίσεων το οποίο αποτελείται από :
Τόσο οι οντότητες
όσο και οι συσχετίσεις μπορούν να έχουν γνωρίσματα (attributes), τα οποία είναι ιδιότητες που τις
χαρακτηρίζουν. Τα είδη των γνωρισμάτων είναι τα απλά όπου η οντότητα έχει
ατομική τιμή για αυτό, τα σύνθετα όπου το γνώρισμα αποτελείται από περισσότερες
τιμές και τα πλειότιμα όπου οι πολλαπλές τιμές είναι το χαρακτηριστικό τους.
Βασικό
χαρακτηριστικό ενός τύπου οντοτήτων είναι το γνώρισμα κλειδί (key). Ένα γνώρισμα ή (σύνολο γνωρισμάτων) που
χαρακτηρίζει μοναδικά κάθε οντότητα (αντίστοιχα συσχέτιση) μέσα στον τύπο
οντοτήτων (συσχετίσεων) ονομάζεται υπέρ – κλειδί. Δεν μπορούν δηλαδή δύο
διαφορετικές οντότητες (συσχετίσεις) μέσα στον ίδιο τύπο να έχουν ίδια τιμή,
Τα γνωρίσματα περιγράφουν τις οντότητες και τις συσχετίσεις και μπορούν να παίρνουν τιμές. Ειδικότρα;
Απλά (Ατομικά) Γνωρίσματα
Τα γνωρίσματα αυτά (atomic attributes) όπως λέει και
το όνομά τους μπορούν να πάρουν ατομικές τιμές και συμβολίζονται με μία
έλλειψη.
Σύνθετα Γνωρίσματα (composite attributes) μπορούν να
χωριστούν σε μικρότερα τμήματα που αναπαριστάνουν
βασικότερα γνωρίσματα με τη δική του ανεξάρτητη σημασία το καθένα. Για
παράδειγμα, το γνώρισμα Διεύθυνση της οντότητας ΣΠΟΥΔΑΣΤΗΣ μπορεί να υποδιαιρεθεί σε Οδό, Αριθμό, Πόλη,
Νομό, και Ταχ_Κωδ . Γνωρίσματα που δεν
υποδιαιρούνται λέγονται απλά (simple)
ή ατομικά γνωρίσματα (atomic
attributes). Η τιμή ενός σύνθετου γνωρίσματος είναι η συνένωση των
τιμών των απλών γνωρισμάτων που το
αποτελούν.
Εικόνα 2.2 . Σύνθετα και απλά γνωρίσματα.
Μονότιμα έναντι
Πλειότιμων Γνωρισμάτων. Τα περισσότερα
γνωρίσματα έχουν μία και μόνο τιμή για μια συγκεκριμένη οντότητα· τέτοια
γνωρίσματα λέγονται μονότιμα (single-valued). Για παράδειγμα, ο Αριθμός Ταυτότητος και η
Ημερομηνία Γέννησης ενός ατόμου είναι μονότιμα γνωρίσματα. Σε μερικές περιπτώσεις ένα γνώρισμα μπορεί να
έχει ένα σύνολο από τιμές για την ίδια οντότητα -για παράδειγμα το γνώρισμα
Χρώματα για ένα αυτοκίνητο ή το
γνώρισμα ΤΗΛΕΦΩΝΟ για έναν άνθρωπο. Τα μονόχρωμα αυτοκίνητα έχουν μία
τιμή ενώ τα δίχρωμα αυτοκίνητα δύο τιμές για το γνώρισμα Χρώματα. Ομοίως, ένα άτομο μπορεί να μην έχει κανένα τηλέφωνο,
ένα άλλο άτομο να έχει έναν αριθμό τηλεφώνου
ενώ κάποιος άλλος να διαθέτει δύο
ή περισσότερα τηλέφωνα όπως
κινητό, τηλέφωνο οικίας, τηλέφωνο εργασίας, φαξ κλπ, Τέτοια γνωρίσματα
ονομάζονται πλειότιμα (multivalued) και συμβολίζονται με δύο ομόκεντρες ελλείψεις.
Παραγόμενα Γνωρίσματα. Σε η τιμή ενός γνωρίσματος
μπορέι να υπολογισθεί από την τη τιμή ενός άλλου γνωρίσματος. Π.χ Η τιμή
του γνωρίσματος Ηλικία μπορεί να υπολογιστεί από την τρέχουσα ημερομηνία και την τιμή του ΗμερομηνιαΓεννησης ενός
ατόμου. Επομένως το γνώρισμα Ηλικία λέγεται παραγόμενο γνώρισμα (derived
attribute). Οι τιμές μερικών
γνωρισμάτων μπορούν να υπολογιστούν από σχετιζόμενες οντότητες· για
παράδειγμα, ένα γνώρισμα Αριθμος_Υπαλληλων
ενός τμήματος μπορεί να παραχθεί μετρώντας τον αριθμό των υπαλλήλων που σχετίζονται με (εργάζονται στο)
τμήμα αυτό.
Γνωρίσματα-Κλειδιά
ενός Τύπου Οντοτήτων. Όπως θα
δούμε και παρακάτω ένας σημαντικός δομικός περιορισμός για τις οντότητες
ενός τύπου οντοτήτων είναι ο περιορισμός κλειδιού (key constraint) ή μοναδικότητας (uniqueness constraint) για τα
γνωρίσματα. Ένας τύπος οντοτήτων συνήθως
έχει κάποιο γνώρισμα του οποίου οι τιμές είναι μοναδικές για κάθε ξεχωριστή οντότητα. Ένα τέτοιο γνώρισμα
λέγεται γνώρισμα-κλειδί (key attribute) και οι τιμές του μπορούν να χρησιμοποιηθούν για να προσδιορίζεται κάθε οντότητα μονοσήμαντα. Για τους τύπους
οντοτήτων ΑΤΟΜΟ, ΕΡΓΑΖΟΜΕΝΟΣ ένα τυπικό γνώρισμα-κλειδί
είναι ο αριθμός ταυτότητας.
Μερικές φορές, διαφορετικά γνωρίσματα μαζί σχηματίζουν ένα κλειδί, με την έννοια ότι ο συνδυασμός των τιμών των γνωρισμάτων αυτών πρέπει να είναι διαφορετικός για κάθε ατομική οντότητα. Ένα σύνολο από γνωρίσματα που έχει αυτή την ιδιότητα μπορεί να ομαδοποιηθεί σε ένα σύνθετο γνώρισμα, το οποίο γίνεται γνώρισμα-κλειδί του τύπου οντοτήτων. Στο συμβολισμό των διαγραμμάτων ΟΣ, κάθε γνώρισμα-κλειδί έχει το όνομα του υπογραμμισμένο μέσα στην έλλειψη.
Μερικοί τύποι οντοτήτων έχουν περισσότερα από ένα γνωρίσματα-κλειδιά.
Για παράδειγμα, στον τύπο οντοτήτων
ΑΥΤΟΚΙΝΗΤΟ, τόσο ο Αριθμός_ Πλαισίου όσο και ο Αριθμός_Κυκλοφορίας
είναι από μόνος του ο καθένας κλειδί.
Από την άλλη πλευρά ένας τύπος οντότητας μπορεί να μην έχει κανένα κλειδί και σ' αυτή την περίπτωση ονομάζεται μη ισχυρός τύπος οντότητας (ασθενής τύπος). Για παράδειγμα σε μία εταιρεία θέλουμε για ασφαλιστικούς λόγους να τηρούμε στοιχεία για τα ΜΕΛΗ_ΟΙΚΟΓΕΝΕΙΑΣ ενός ΕΡΓΑΖΟΜΕΝΟΥ, για να υπολογίζουμε τα επιδόματα μισθού. Είναι προφανές ότι αν δεν υπάρχει εργαζόμενος δεν υπάρχουν και μέλη οικογένειας (δεν είναι ανεξάρτητη οντότητα) γι' αυτό και λέγεται μη ισχυρός τύπος οντότητας.
Σύνολα Τιμών (Πεδία ορισμού) των Γνωρισμάτων. Τα σύνολα τιμών δεν παρουσιάζονται στα διαγράμματα ΟΣ. Κάθε απλό γνώρισμα ενός τύπου οντοτήτων συνδέεται βέβαια με ένα σύνολο τιμών ή πεδίο ορισμού (domain), που προσδιορίζει τις επιτρεπτές τιμές που μπορεί να πάρει το γνώρισμα αυτό.
Null τιμές. Σε μερικές περιπτώσεις μια συγκεκριμένη οντότητα μπορεί να μην έχει καμιά δυνατή τιμή για ένα γνώρισμα. Για παράδειγμα, το γνώρισμα Αριθμος_Διαμερισματος μιας διεύθυνσης υφίσταται μόνον για διευθύνσεις κτιρίων με διαμερίσματα και όχι για άλλους τύπους οικιών όπως οι μονοκατοικίες. Παρόμοια, το γνώρισμα Τηλέφωνο πιθανόν να μην είναι γνωστό για κάποιο άτομο και να μην έχουμε προσωρινά την τιμή του τηλεφώνου του. Για τέτοιες περιπτώσεις δημιουργείται μια ειδική τιμή που λέγεται null. Η διεύθυνση μιας μονοκατοικίας θα είχε την τιμή null για το γνώρισμα Αριθμος_Διαμερισματος και ένα άτομο χωρίς τηλεφωνο θα είχε την τιμή null για το γνώρισμα τηλέφωνο.
Ένας τύπος συσχέτισης (relationship
type) μεταξύ δύο τύπων οντοτήτων ορίζει
ένα σύνολο συνδέσεων -ή ένα σύνολο συσχετίσεων- μεταξύ αυτών των τύπων
οντοτήτων. Στα διαγράμματα ΟΣ οι τύποι συσχετίσεων παρουσιάζονται ως
ρόμβοι οι οποίοι συνδέονται με ευθείες γραμμές με τα παραλληλόγραμμα
που παριστάνουν τους συμμετέχοντες τύπους οντοτήτων. Το όνομα μιας συσχέτισης
γράφεται μέσα στον αντίστοιχο ρόμβο.
– Μεταξύ των ιδίων τύπων οντοτήτων πιθανόν να υπάρχουν
περισσότεροι του ενός τύποι συσχετίσεων (multiple relationships).
π,χ., Εργαζομενος-Εργαζεται-Τμήμα, Εργαζόμενος-Διευθύνει-Τμήμα.
–Μια συσχέτιση μπορεί να συνδέει δύο οντότητες που ανήκουν στον ίδιο τύπο οντοτήτων (αποκαλείται, ένας αναδρομικός τύπος συσχετίσεων - recursive relationship type)
π.χ., ο ΕΠΙΒΛΕΠΕΙ τύπος συσχετίσεων συνδέει ΕΡΓΑΖΟΜΕΝΟ (στον ρόλο αυτού που επιβλέπεται) με κάποιο άλλο ΕΡΓΑΖΟΜΕΝΟ (στον ρόλο του επιβλέποντα)
Υπάρχουν δομικοί περιορισμοί (α) στους τύπους συσχετίσεων και (β) στα γνωρίσματα των τύπων οντοτήτων ή τύπων συσχετίσεων.
Βαθμός (degree)
ενός τύπου συσχέτισης είναι το πλήθος των τύπων οντοτήτων που συμμετέχουν.
Άρα υπάρχουν τύποι συσχετίσεων μεταξύ 2 τύπων οντοτήτων, μεταξύ 3 τύπων
οντοτήτων, γενικά μεταξύ Ν τύπων οντοτήτων (N-ary relationship). Επομένως, ο
τύπος συσχέτισης. Ένας τύπος συσχέτισης βαθμού δύο λέγεται δυαδικός (binary), ένας βαθμού τρία τριαδικός
(ternary) και ένας βαθμού
τέσσερα τετραδικός.
Εικόνα 2.3 : Τύπος συσχέτισης με βαθμό 4 όπου συμμετέχουν οι οντότητες Ε1..Ε4 στην συσχέτιση R1.
Οι συσχετίσεις μπορεί να είναι οποιουδήποτε βαθμού αλλά αυτές που εμφανίζονται πιο συχνά θα πρέπει να επιδιώκουμε είναι οι δυαδικές συσχετίσεις.
Εικόνα 2.4 : Δυαδική συσχέτιση μεταξύ των οντοτήτων Ε1και Ε2 στην συσχέτιση R1.
Ο περιορισμός Συμμετοχής ορίζει αν η συμμετοχή μιας
οντότητας στον τύπο συσχέτισης είναι ολική (total) ή μερική (partial). Με άλλα
λόγια, αν όλες οι οντότητες του συγκεκριμένου τύπου οντοτήτων συμμετέχουν υποχρεωτικά
σ' ένα τύπο συσχετίσεων ή όχι. Για παράδειγμα, όλοι οι υπάλληλοι του τύπου
οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ
εργάζονται υποχρεωτικά σ' ένα ΤΜΗΜΑ, άρα έχουν ολική συμμετοχή στον τύπο
συσχετίσεων ΕΡΓΑΖΕΤΑΙ. Αντίθετα, δεν είναι όλοι διευθυντές τμημάτων, οπότε η συμμετοχή
του τύπου οντοτήτων ΕΡΓΑΖΟΜΕΝΟΣ στον τύπο συσχετίσεων ΔΙΕΥΘΥΝΕΙ είναι μερική. Η ολική συμμετοχή μερικές φορές λέγεται εξάρτηση
ύπαρξης (existence
dependency).
Η ολική συμμετοχή αναπαριστάται ως διπλή γραμμή που ενώνει το συμμετέχοντα τύπο οντοτήτων με την συσχέτιση, ενώ η μερική συμμετοχή ως απλή γραμμή.
Ένας εύκολος τρόπος για να διαπιστώσετε αν η συμμετοχή μιας οντότητας στην συσχέτιση είναι μερική ή ολική είναι η εξής:
Να ξεκινάτε την ερώτηση πάντα με τη λέξη ΟΛΕΣ οι οντότητες
που μελετάτε συμμετέχουν στην συσχέτιση; Αν ΝΑΙ είναι ΟΛΙΚΗ συμμετοχή αν ΟΧΙ
είναι ΜΕΡΙΚΗ συμμετοχή.
Ο Λόγος πληθικότητας ενός τύπου συσχετίσεων ορίζει πόσες φορές μια οντότητα από έναν τύπο οντοτήτων μπορεί να εμπλακεί στο συγκεκριμένο τύπο συσχετίσεων.
Αποτελεί ένα από τα σημαντικότερα σημεία που πρέπει να δωθεί προσοχή κατά τον σχεδιασμό του διαγράμματος E-R, διότι ο λανθασμένος ορισμός του λόγου πληθικότητας μεταξύ δύο τύπων οντοτήτων θα έχει λανθασμένη συνέχεια κατά την μεταφορά του μοντέλου αυτού στο επόμενο βήμα που είναι το σχεσιακό μοντέλο.
Έχουμε τις εξής περιπτώσεις:
1:1 : μια οντότητα από τη μια πλευρά συνδέεται το πολύ με μια οντότητα από την άλλη πλευρά (συσχέτιση ένα-με-ένα)
1:Ν : μια οντότητα από την πρώτη πλευρά μπορεί να συνδέεται με περισσότερες από μια οντότητες από τη δεύτερη πλευρά Ν ενώ μια οντότητα από τη δεύτερη πλευρά συνδέεται το πολύ με μια οντότητα από την πρώτη πλευρά 1 (συσχέτιση ένα-με-πολλά). Ακριβώς το ανάποδο ισχύει στο λόγο πληθικότητας Ν:1.
Ν: Μ : μια οντότητα από τη μια πλευρά μπορεί να συνδέεται με περισσότερες από μια οντότητες από την άλλη πλευρά. (συσχέτιση πολλά-με-πολλά)
Οι λόγοι πληθικότητας για τις δυαδικές σχέσεις
παρουσιάζονται στα διαγράμματα ΟΣ με χρήση
των συμβόλων 1, Μ και Ν στους ρόμβους
Όπως στο παρακάτω παράδειγμα ο δυαδικός τύπος συσχέτισης
ΕΡΓΑΖΕΤΑΙ μεταξύ των ΤΜΗΜΑ και ΕΡΓΑΖΟΜΕΝΟΣ έχει λόγο πληθικότητας 1 :Ν
(ένα-με-πολλά), που σημαίνει ότι κάθε τμήμα μπορεί να σχετίζεται με πολλούς εργαζόμενους, αλλά ένας εργαζόμενος μπορεί
να σχετίζεται με (να εργάζεται σε)
ένα μόνο τμήμα.
Παράδειγμα ενός 1:1
δυαδικού τύπου συσχέτισης είναι ο ΔΙΕΥΘΥΝΕΙ που σχετίζει μια οντότητα
τμήματος με τον εργαζόμενο που διευθύνει το τμήμα
αυτό. Ο αντίστοιχος περιορισμός λόγου πληθικότητας αναπαριστά τον περιορισμό του μικρόκοσμου ότι ένας εργαζόμενος
μπορεί να διευθύνει μόνο ένα τμήμα
και ένα τμήμα έχει έναν και μόνο διευθυντή.
Ο
τύπος συσχέτισης ΑΠΑΣΧΟΛΕΙΤΑΙ έχει λόγο
πληθικότητας Μ:Ν, επειδή ένας εργαζόμενος μπορεί να εργάζεται σε διαφορετικά
έργα και ένα έργο μπορεί να έχει πολλούς εργαζόμενους.
Ένας εύκολος τρόπος για να κατανοήσετε τον λόγο πληθικότητας σε μια δυαδική συσχέτιση είναι ο εξής, να ξεκινάτε πάντα με τις παρακάτω ερωτήσεις:
ΜΙΑ οντότητα από την δεξιά πλευρά συσχετίζεται με πολλές οντότητες από την αριστερή πλευρά της συσχέτισης;
ΜΙΑ οντότητα από την αριστερή πλευρά συσχετίζεται με πολλές οντότητες από την δεξιά πλευρά της συσχέτισης;
Αν η ερώτηση ισχύει μόνο από την μία πλευρά τότε
ο λόγος πληθικότητας είναι 1:Ν από την
πλευρά που ισχύει η ερώτηση.
Αν η ερώτηση ισχύει και από τις δύο πλευρές
τότε ο λόγος πληθικότητας είναι Ν:Μ .
Αν η ερώτηση δεν ισχύει σε καμία από τις δύο
πλευρές τότε ο λόγος πληθικότητας είναι
1:1
Βασικό χαρακτηριστικό ενός τύπου οντοτήτων ή συσχετίσεων είναι τα γνωρίσματα κλειδιά ή απλά κλειδιά (keys): Ένα γνώρισμα (ή σύνολο γνωρισμάτων) που χαρακτηρίζει μοναδικά κάθε οντότητα (αντίστοιχα, συσχέτιση) μέσα στον τύπο οντοτήτων (συσχετίσεων), δεν επιτρέπει δηλαδή δυο διαφορετικές οντότητες (συσχετίσεις) μέσα στον ίδιο τύπο να έχουν ίδια τιμή, ονομάζεται υπερ-κλειδί (super-key).
Κάθε γνώρισμα κλειδί θα φαίνεται υπογραμμισμένο στο Διάγραμμα Ο-Σ
Ορισμοί:
Ένα γνώρισμα (ή σύνολο γνωρισμάτων) ενός τύπου οντοτήτων/συσχετίσεων
για το οποίο κάθε οντότητα/συσχέτιση στο σύνολο πρέπει να έχει μοναδική τιμή
ονομάζεται υπερ-κλειδί (super-key).
Ένα
ελάχιστο υπερ-κλειδί (σύνολο γνωρισμάτων) που μπορεί να χαρακτηρίσει μοναδικά
τις εγγραφές ονομάζεται υποψήφιο κλειδί
(candidate key).
Μεταξύ των κλειδιών επιλέγουμε και ορίζουμε ένα υποψήφιο κλειδί ως τον προσδιοριστή του τύπου οντοτήτων και το ονομάζουμε πρωτεύον κλειδί (primary key)
Οι τύποι συσχετίσεων μπορεί επίσης να έχουν γνωρίσματα
παρόμοια με αυτά των τύπων οντοτήτων. Για
παράδειγμα, για να καταγράψουμε τις εβδομαδιαίες ώρες απασχόλησης ενός εργαζομένου σ' ένα έργο μπορούμε
να περιλάβουμε ένα γνώρισμα Ώρες στον τύπο συσχέτισης ΑΠΑΣΧΟΛΕΙΤΑΙ.
Οι τύποι οντοτήτων που δεν έχουν γνωρίσματα-κλειδιά από μόνοι τους λέγονται μη ισχυροί ή ασθενής τύποι οντοτήτων (weak entity types).
Σε αντίθεση, οι κανονικοί τύποι οντοτήτων που έχουν ένα γνώρισμα κλειδί ονομάζονται ισχυροί τύποι οντοτήτων. Οι οντότητες (π.χ. τα μέλη οικογένειας κάθε εργαζομένου) που ανήκουν σε κάποιον μη ισχυρό τύπο οντοτήτων προσδιορίζονται από τη σχέση τους με συγκεκριμένες οντότητες (π.χ. οι εργαζόμενοι) από έναν άλλο τύπο οντοτήτων, σε συνδυασμό με τις τιμές κάποιων γνωρισμάτων τους. Ονομάζουμε αυτόν τον άλλο τύπο οντοτήτων προσδιορίζοντα ή ιδιοκτήτη τύπο οντότητας (owner entity type) και τον τύπο συσχέτισης που συνδέει ένα μη ισχυρό τύπο οντοτήτων με τον ιδιοκτήτη του προσδιορίζουσα συσχέτιση (identifying relationship).
Ένας μη ισχυρός τύπος οντοτήτων έχει πάντα περιορισμό ολικής
συμμετοχής (εξάρτηση ύπαρξης) ως προς την προσδιορίζουσα του συσχέτιση, διότι μια μη ισχυρή οντότητα δεν μπορεί να
προσδιοριστεί χωρίς μια οντότητα-ιδιοκτήτη.
ΤΥΠΟΣ
ΟΝΤΟΤΗΤΩΝ
ΜΗ
ΙΣΧΥΡΟΣ ΤΥΠΟΣ ΟΝΤΟΤΗΤΩΝ
ΤΥΠΟΣ ΣΥΣΧΕΤΙΣΕΩΝ
ΤΥΠΟΣ ΠΡΟΣΔΙΟΡΙΖΟΥΣΑΣ ΣΥΣΧΕΤΙΣΗΣ
ΓΝΩΡΙΣΜΑ
ΓΝΩΡΙΣΜΑ-ΚΛΕΙΔΙ
ΠΛΕΙΟΤΙΜΟ ΓΝΩΡΙΣΜΑ
ΣΥΝΘΕΤΟ ΓΝΩΡΙΣΜΑ
ΠΑΡΑΓΟΜΕΝΟ ΓΝΩΡΙΣΜΑ
ΟΛΙΚΗ ΣΥΜΜΕΤΟΧΗ ΤΗΣ Ε2 ΣΤΗΝ R
ΛΟΓΟΣ ΠΛΗΘΙΚΟΤΗΤΑΣ 1:Ν
Εικόνα2.5 Σύνοψη του συμβολισμού των διαγραμμάτων
Οντοτήτων-Συσχετίσεων
Τα λογικά μοντέλα βασισμένα σε εγγραφές χρησιμοποιούνται για να περιγράψουν τα δεδομένα από τον εννοιολογικό σχεδιασμό στον λογικό σχεδιασμό. Αντίθετα από τα εννοιολογικά μοντέλα, τα λογικά μοντέλα καθορίζουν τη γενική λογική δομή της Βάσης Δεδομένων και παρέχουν μία υψηλότερου επιπέδου περιγραφή της υλοποίησης της.
Ονομάζονται έτσι επειδή η Βάση Δεδομένων είναι δομημένη σε εγγραφές διάφορων τύπων. Κάθε τύπος εγγραφής καθορίζει έναν σταθερό αριθμό πεδίων (γνωρίσματα - ιδιότητες). Κάθε πεδίο είναι συνήθως σταθερού μήκους (αυτό απλοποιεί την εφαρμογή).
Στο σχεσιακό μοντέλο
οι οντότητες και οι συσχετίσεις αντιπροσωπεύονται από μία συλλογή από
κανονικοποιημένους πίνακες (σχέσεις). Κάθε κανονικοποιημένος πίνακας έχει
διάφορες στήλες με μοναδικά ονόματα.
Οι σημαντικότεροι
από τους όρους που χρησιμοποιούνται με τα “αντικείμενα του σχεσιακού μοντέλου”
είναι η σχέση (relation) που
αντιστοιχεί σε εκείνο που μέχρι τώρα ονομαζόταν πίνακας, μία συστοιχία ή πλειάδα (tuple) αντιστοιχεί σε
μία γραμμή ενός τέτοιου πίνακα και ένα γνώρισμα (attribute) αντιστοιχεί σε μία στήλη-γνώρισμα. Το πλήθος των συστοιχιών ονομάζεται πληθικότητα (cardinality) και το πλήθος των γνωρισμάτων ονομάζεται βαθμός
(degree).
Το πρωτεύον κλειδί (primary key) είναι ένα μοναδικό αναγνωριστικό για τον
πίνακα. Δηλαδή, μία στήλη ή συνδυασμός στηλών που έχει την ιδιότητα οι τιμές
του να είναι μοναδικές.
Τέλος, ένα πεδίο ορισμού (domain) είναι μία δεξαμενή τιμών από την οποία τα
συγκεκριμένα γνωρίσματα των συγκεκριμένων σχέσεων αντλούν τις συγκεκριμένες
τιμές τους.
3.1
Μετατροπή Μοντέλου E–R Στο Σχεσιακό Μοντέλο
Από τη μία πλευρά, το μοντέλο ER διακρίνει τύπους οντοτήτων και τύπους συσχετίσεων (με τα γνωρίσματα τους) ενώ, από την άλλη, το Σχεσιακό μοντέλο υποστηρίζει μία δομή μόνο, τις σχέσεις (που έχουν και αυτές γνωρίσματα). Άρα η διαδικασία μετατροπής ενός διαγράμματος ER σε σχεσιακό σχήμα αφορά στη μετατροπή των τύπων οντοτήτων και συσχετίσεων (και των γνωρισμάτων τους) σε σχέσεις (πίνακες).
Υπάρχει ο γενικός κανόνας ότι για κάθε τύπο οντοτήτων δημιουργείται μία σχέση που παίρνει το όνομα του αντίστοιχου τύπου. Πέρα από αυτόν το γενικό κανόνα, παρακάτω αναλύονται οι περιπτώσεις για τους τύπους οντοτήτων, τους τύπους συσχετίσεων και τα γνωρίσματα.
3.1.1 Μετατροπή Τύπων Οντοτήτων.
Για κάθε ισχυρό τύπο οντοτήτων δημιουργεί ο χρήστης μία σχέση R με τα ίδια γνωρίσματα, ένα για κάθε απλό γνώρισμα της οντότητας. Αν η οντότητα έχει σύνθετα γνωρίσματα, στη σχέση R υπάρχει ένα γνώρισμα για κάθε απλό γνώρισμα που απαρτίζει το σύνθετο.
Για κάθε αδύνατο τύπο οντοτήτων Α που εξαρτάται από τον ισχυρό τύπο οντοτήτων Β δημιουργείται ένα σχήμα σχέσης R με τα εξής γνωρίσματα
(α) τα γνωρίσματα του Α, και
(β) τα γνωρίσματα του πρωτεύοντος κλειδιού του Β.
3.1.2 Μετατροπή Τύπων Συσχετίσεων.
Με βάση το λόγο
πληθικότητας, διακρίνονται τρεις περιπτώσεις:
Μ:Ν πολλά προς πολλά συσχετίσεις,
1:1 ένα προς ένα δυαδικές συσχετίσεις και
1:Ν ένα προς πολλά δυαδικές συσχετίσεις.
Για κάθε 1:Ν δυαδική (μη αδύναμη) συσχέτιση R μεταξύ δύο τύπων οντοτήτων που αντιστοιχούν στις σχέσεις Τ και S, δεν
δημιουργούμε νέα σχέση R. Στα ήδη υπάρχοντα γνωρίσματα της S προστίθενται: (α) τα γνωρίσματα της R, αν υπάρχουν, και (β) το πρωτεύον κλειδί της
T, το οποίο συμμετέχει ως
ξένο κλειδί στη σχέση S όπως
φαίνεται στην Εικόνα 3.1.
Εικόνα 3.1 Μετατροπή από Ε-R σε σχεσιακό για 1:N
Για κάθε Μ:Ν συσχέτιση R μεταξύ τύπων οντοτήτων
που αντιστοιχούν στις σχέσεις Τ, S, ο χρήστης δημιουργεί μία νέα σχέση (πίνακα) R με γνωρίσματα: (α) τα γνωρίσματα της R, αν υπάρχουν, και (β) τα γνωρίσματα του
πρωτεύοντος κλειδιού κάθε συμμετέχουσας σχέσης S και Τ,
τα οποία συμμετέχουν ως ξένα κλειδιά στη σχέση R όπως φαίνεται στην Εικόνα 3.2.
Εικόνα 3.2
Μετατροπή από Ε-R σε
σχεσιακό για M:N
Για κάθε 1:1 δυαδική (μη αδύναμη) συσχέτιση R μεταξύ δύο τύπων οντοτήτων που αντιστοιχούν στις σχέσεις T και S, δεν δημιουργείται νέα σχέση R αλλά επιλέγεται μία εκ των Τ και S, έστω την S. Στα ήδη υπάρχοντα γνωρίσματα της S προσθέτουμε: (α) τα γνωρίσματα της R, αν υπάρχουν, και (β) το πρωτεύον κλειδί της
T, το οποίο συμμετέχει ως
ξένο κλειδί στη σχέση S όπως
στην περίπτωση 1:Ν. Για την επιλογή T και S, κριτήριο είναι η ολική
συμμετοχή του ενός ή του άλλου τύπου οντοτήτων στη συσχέτιση. H σχέση που αντιστοιχεί στον τύπο οντοτήτων
που συμμετέχει ολικά στη συσχέτιση, είναι αυτή (η σχέση S παραπάνω) που επιλέγεται να “φιλοξενήσει” ως
ξένο κλειδί το πρωτεύον κλειδί της άλλης (S). Αν δε υπάρχει ολική συμμετοχή από μία
πλευρά, τότε προσπαθούμε να μην έχουμε πολλές null τιμές, οπότε επιλέγουμε να προσθέτουμε ξένο
κλειδί στη σχέση που αντιστοιχεί στον τύπο οντοτήτων με τη μεγαλύτερη συμμετοχή
στη συσχέτιση.
Για τις 1:1, 1:Ν και
Ν:1 δυαδικές (μη αδύναμες) μπορούμε, εναλλακτικά, να ακολουθήσουμε το γενικό
κανόνα (δημιουργία νέας σχέσης με ξένα κλειδιά, τα πρωτεύοντα κλειδιά των
εμπλεκομένων σχέσεων), ειδικά όταν δε υπάρχει ολική συμμετοχή από καμία πλευρά.
Στην περίπτωση αυτή, κερδίζουμε ως προς την εννοιολογική καθαρότητα και
πληρότητα αλλά χάνουμε ως προς την αποδοτικότητα χώρου και τη επίδοση. Συνήθως
δε επιλέγεται αυτός ο τρόπος αλλά η ειδική αντιμετώπιση τους, όπως
παρουσιάστηκε παραπάνω.
Η μετατροπή που
γίνεται στα γνωρίσματα από μοντέλο οντοτήτων και συσχετίσεων στο σχεσιακό
μοντέλο είναι η εξής
Ένα απλό γνώρισμα Α
γίνεται γνώρισμα της αντίστοιχης σχέσης,
ένα σύνθετο γνώρισμα
μετατρέπεται σε μία ομάδα γνωρισμάτων για την καινούρια σχέση που αποτελείται
από τα επί μέρους απλά γνωρίσματα.
Στα πλειότιμα
γνωρίσματα κατασκευάζεται μία σχέση R με γνωρίσματα το πρωτεύον κλειδί της αρχικής σχέσης καθώς και το
γνώρισμα του πλειότιμου πεδίου
Στη συνέχεια παρουσιάζεται ένα παράδειγμα , η μετατροπής ενός διαγράμματος ER σε σχεσιακό σχήμα.
Μετατρέψτε το παρακάτω διάγραμμα E-R σε σχεσιακό σχήμα. Το διάγραμμα αναφέρεται σε Ιδιοκτήτες που κατέχουν ακίνητα σε διαφορετικό ποσοστό τα οποία ακίνητα τα διαχειρίζονται μεσίτες.
Λύση
Κάθε οντότητα θα γίνει πίνακας δηλ. σε πρώτο βήμα θα δημιουργηθούν οι πίνακες ΙΔΙΟΚΤΗΤΕΣ, ΑΚΙΝΗΤΑ, ΜΕΣΙΤΕΣ.
Στη συνέχεια οι συσχετίσεις που είναι Ν:Μ θα γίνουν νέοι πίνακες, δηλ. θα δημιουργηθεί ο πίνακας ΚΑΤΕΧΟΥΝ που έχει το ίδιο όνομα με την συσχέτιση.
Ακολουθεί η μετατροπή της συσχέτισης ΔΙΑΧΕΙΡΙΖΟΝΤΑΙ που είναι 1:Ν. Σε αυτή την περίπτωση το πρωτεύον κλειδί του πίνακα ΜΕΣΙΤΕΣ θα γίνει ξένο κλειδί στον πίνακα ΑΚΙΝΗΤΑ.
Τέλος για τα πλειότιμα γνωρίσματα θα δημιουργηθούν νέοι πίνακες όπως για το πεδίο ΤΗΛ ιδιοκτήτη θα γίνει νέος πίνακας με ξένο κλειδί το πρωτεύον κλειδί του πίνακα ΙΔΙΟΚΤΗΤΕΣ.
Οι ολικές συμμετοχές προαναγγέλλουν ότι τα ξένα κλειδιά που συμμετέχουν στη συσχέτιση θα παίρνουν υποχρεωτικά τιμές. Δηλ. αν δεν καταχωρηθεί τιμή σε αυτό το πεδίο δεν πρόκειται να προχωρήσει σε επόμενο πεδίο για καταχώριση τιμής. Τέτοια πεδία θα είναι το ΚΑ στον πίνακα ΚΑΤΕΧΟΥΝ.
Είδαμε στα προηγούμενα κεφάλαια ότι το σχεσιακό μοντέλο αποτελείται από σχέσεις που δημιουργούνται από γνωρίσματα. Μία σχέση είναι ένα σύνολο από γνωρίσματα με τιμές για κάθε γνώρισμα τέτοιες ώστε να ισχύουν οι παρακάτω ιδιότητες
Από τη συζήτηση της μοντελοποίησης με το μοντέλο οντοτήτων-συσχετίσεων είδαμε ότι μία οντότητα τυπικά αντιστοιχεί σε μία σχέση και ότι τα γνωρίσματα της οντότητας γίνονται γνωρίσματα της σχέσης.
Η διαδικασία που ακολουθούμε είναι η ακόλουθη:
1 Συγκεντρώνουμε τις απαιτήσεις της επιχείρησης και των χρηστών.
2 Σχεδιάζουμε το μοντέλο οντοτήτων-συσχετίσεων βασιζόμενο στις παραπάνω απαιτήσεις
3 Μετατρέπουμε το διάγραμμα οντοτήτων-συσχετίσεων της επιχείρησης σε ένα σύνολο από σχέσεις (πίνακες) με το σχεσιακό μοντέλο.
4 Κανονικοποιούμε τις σχέσεις για να απομακρύνουμε τυχόν ανωμαλίες ενημέρωσης-διαγραφής-εισαγωγής στοιχείων.
5 Υλοποιούμε τη βάση δεδομένων δημιουργώντας ένα πίνακα για κάθε κανονικοποιημένη σχέση.
Μόλις το μοντέλο οντοτήτων-συσχετίσεων μετατραπεί σε σχέσεις μπορεί να ανακαλύψουμε ότι μερικές σχέσεις δεν καθορίζονται σωστά. Έτσι μπορεί να εμφανιστούν κάποια προβλήματα όπως:
Ανωμαλίες διαγραφής: διαγράφοντας μία σχέση κάποιες πληροφορίες που συνδέονται με μία άλλη σχέση χάνονται και αυτές.
Ανωμαλίες Εισαγωγής: Για να εισάγουμε μία καινούργια σχέση απαιτείται να έχουμε πληροφορίες από δύο ή περισσότερες οντότητες-αυτή η κατάσταση μπορεί να μην είναι εφαρμόσιμη.
Οι παραπάνω ανωμαλίες εισαγωγής ή διαγραφής σχέσεων προκύπτουν επειδή σε μία σχεσιακή βάση δεδομένων δεν μπορεί να υπάρχει σχέση που δεν σχετίζεται με καμία άλλη.
Έστω R μια σχέση και έστω ότι τα Χ και Υ είναι τυχαία υποσύνολα του συνόλου των γνωρισμάτων της R. Τότε, λέμε ότι το Υ είναι συναρτησιακά εξαρτημένο από το Χ, ή συμβολικά (διαβάζεται "το Χ καθορίζει συναρτησιακά το Υ, ή απλώς Χ à Υ), εάν και μόνο εάν η κάθε τιμή Χ της σχέσης R αντιστοιχεί σε μία ακριβώς τιμή Υ της R
Μία συναρτησιακή εξάρτηση περιγράφει τη συσχέτιση (ΧàΥ) μεταξύ γνωρισμάτων της ίδιας σχέσης. Ένας δεύτερος ορισμός μπορεί να διατυπωθεί ως εξής:
Ένα γνώρισμα Υ είναι συναρτησιακά εξαρτώμενο από ένα γνώρισμα Χ αν και μόνο αν κάθε τιμή του Χ σχετίζεται με μία και μόνο μία τιμή του Υ. Δηλαδή ένα γνώρισμα είναι συναρτησιακά εξαρτώμενο από ένα άλλο αν μπορούμε να χρησιμοποιήσουμε την τιμή του ενός για να προσδιορίσουμε την τιμή του άλλου (να βρούμε την τιμή του μέσα στη σχέση).
Με άλλα λόγια, δύο οποιεσδήποτε συστοιχίες της R που συμφωνούν στην τιμή Χ, συμφωνούν επίσης στην τιμή Υ
Οι συναρτησιακές εξαρτήσεις διαθέτουν πλούσιο σύνολο από ενδιαφέρουσες τυπικές ιδιότητες. Με την χρήση αυτών των ιδιοτήτων γίνεται αντιμετώπιση των προβλημάτων με τυπικό και αυστηρό τρόπο
Με τον όρο εξάρτηση, αποδίδονται δύο διαφορετικοί όροι, οι όροι dependence και dependency ο 1ος όρος θα έπρεπε να σημαίνει εξάρτηση και ο 2ος το εξαρτημένο αντικείμενο για μας και οι δύο αγγλικοί όροι θα σημαίνουν εξάρτηση.
Αν το Χ είναι υποψήφιο κλειδί της σχέσης R — και ειδικότερα, αν είναι το πρωτεύον κλειδί — τότε όλα τα γνωρίσματα Υ της σχέσης R πρέπει κατ’ ανάγκη να είναι συναρτησιακά εξαρτημένα από το Χ.
Μάλιστα, αν η σχέση R ικανοποιεί τη συναρτησιακή εξάρτηση Α à Β και το Α δεν είναι υποψήφιο κλειδί, τότε η R θα έχει κάποιον πλεονασμό (redundancy).
Για παράδειγμα στη σχέση ΕΡΓΑΖΟΜΕΝΟΙ το Όνομα-Εργαζομένου είναι συναρτησιακά εξαρτώμενο από τον Αριθμό-Ταυτότητας επειδή ο Αριθμό-Ταυτότητας μπορεί να χρησιμοποιηθεί για να προσδιορισθεί μοναδικά η τιμή του Ονόματος του Εργαζομένου. Τότε ο Αριθμό-Ταυτότητας ονομάζεται προσδιοριστικό (ή ορίζουσα).
Εδώ θα χρησιμοποιήσουμε λοιπόν το σύμβολο à για να δείχνουμε μερικές τέτοιες συναρτησιακές
εξαρτήσεις (το σύμβολο à
διαβάζεται "προσδιορίζει
συναρτησιακά")
ΚωδΦοιτητή à Κατεύθυνση-σπουδών
ΚωδΦοιτητή, Μάθημα, Εξάμηνο à Βαθμός
ΚωδΜαθήματος, Τμήμα à Καθηγητής, Αίθουσα, Αριθμός-φοιτητών
Μοντέλο, Τρόπος-Πληρωμής,
φόρος à Τιμή
αυτοκινήτου
Τα γνωρίσματα στα αριστερά
ονομάζονται προσδιοριστικά. Αν γενικά ΧàΑ σημαίνει ότι το Χ προσδιορίζει το Α.
Υποθέστε ότι έχουμε μια σχέση R με τρία γνωρίσματα, Α, Β, και C, τέτοια ώστε οι συναρτησιακές εξαρτήσεις Α à Β και Β àC να ισχύουν και οι δύο στην R.
Τότε ισχύει επίσης η συναρτησιακή εξάρτηση A àC στην R.
Εδώ, η συναρτησιακή εξάρτηση Α àC είναι ένα παράδειγμα μεταβατικής συναρτησιακής εξάρτησης
Λέμε ότι η C εξαρτάται από την Α μεταβατικά, μέσω της Β.
Όπως εξηγήσαμε και σο Κεφ.1 με τη λέξη κλειδί ονομάζουμε ένα ή περισσότερα γνωρίσματα που προσδιορίζουν μοναδικά μία συστοιχία (πλειάδα ή ολοκληρωμένη εγγραφή)
Η επιλογή των κλειδιών εξαρτάται πάντα από τη συγκεκριμένη εφαρμογή. Οι χρήστες της εφαρμογής μπορούν να προσφέρουν οδηγίες ως προς το ποια γνωρίσματα θα δημιουργήσουν ένα κατάλληλο κλειδί. Επειδή δεν είναι δυνατόν δύο σχέσεις να έχουν ακριβώς τις ίδιες τιμές, ένα υποψήφιο κλειδί μπορεί αν αποτελείται από όλα τα γνωρίσματα μίας σχέσης. Ένα κλειδί προσδιορίζει συναρτησιακά μία συστοιχία και δεν είναι όλα τα προσδιοριστικά να είναι κλειδιά.
Έστω ότι Α, Β, και C είναι τυχαία υποσύνολα του συνόλου των γνωρισμάτων της δεδομένης σχέσης R, και έστω ο συμβολισμός ΑΒ σημαίνει την ένωση των Α και Β. Τότε:
Ανακλαστικότητα (reflexivity): αν το Β είναι υποσύνολο του Α, τότε Α à Β.
Επαύξηση (augmentation): αν Α àΒ, τότε AC àBC.
Μεταβατικότητα (transitivity): αν Α àΒ και Β àC, τότε Α àC.
Μερικοί ακόμα κανόνες μπορούν να προκύψουν από τους τρεις προηγούμενους :
Αυτοκαθορισμός (self-determination): A àA.
Ανάλυση (decomposition): αν Α àBC, τότε Α àΒ και Α àC.
Ένωση (union): αν Α àΒ και Α àC, τότε Α àBC.
Σύνθεση (composition): αν Α àΒ και C àD, τότε AC àBD.
Για τον καλύτερο σχεδιασμό μιας βάσης δεδομένων, οι πίνακες που απαρτίζουν μια βάση πρέπει να ελέγχονται σύμφωνα με κάποιους γενικούς κανόνες ώστε να υπάρχει μια ενιαία αντιμετώπιση στον σχεδιασμό για όλους τους προγραμματιστές. Για τον λόγο αυτό οι σχέσεις/ πίνακες μπορούν να υπάγονται σε μία ή περισσότερες κατηγορίες (ή κλάσεις) που ονομάζονται Κανονικές Μορφές (ΚΜ-normal forms-NF).
Κανονική Μορφή: Ονομάζεται μία κλάση σχέσεων απαλλαγμένων από συγκεκριμένα προβλήματα τροποποιήσεων.
Οι κανονικές Μορφές που θα εξηγήσουμε παρακάτω έχουν ονόματα όπως:
Αυτές οι κανονικές μορφές είναι αθροιστικές. Μία σχέση που βρίσκεται σε Τρίτη κανονική μορφή είναι επίσης και σε δεύτερη και σε πρώτη.
Οι τρεις πρώτες κανονικές μορφές (1ΚΜ, 2ΚΜ, 3ΚΜ) ορίστηκαν από τον Codd. Όλες οι κανονικοποιημένες σχέσεις είναι σε 1ΚΜ. Με άλλα λόγια, "κανονικοποιημένη" και "σε 1ΚΜ" σημαίνει ακριβώς το ίδιο πράγμα. Μερικές σχέσεις 1ΚΜ είναι επίσης σε 2ΚΜ, και μερικές σχέσεις 2ΚΜ είναι επίσης σε 3ΚΜ. Το σκεπτικό των ορισμών του Codd ήταν ότι η 2ΚΜ είναι "πιο επιθυμητή" από την 1ΚΜ, και ότι η 3ΚΜ είναι με τη σειρά της πιο επιθυμητή από την 2ΚΜ. Αυτό σημαίνει ότι σχεδιαστής της βάσης δεδομένων θα πρέπει γενικά να στοχεύει σε μια σχεδίαση που να έχει σχέσης σε 3ΚΜ, και όχι απλώς σε 2ΚΜ ή σε 1ΚΜ.
Ο Fagin όρισε την τέταρτη κανονική μορφή. Μετέπειτα και πάλι ο Fagin όρισε άλλη μία κανονική μορφή, την κανονική μορφή προβολής–σύζευξης (projection join), που αργότερα έγινε γνωστή και ως πέμπτη κανονική μορφή (5ΚΜ). 'Όπως φαίνεται μερικές σχέσεις που είναι σε ΚΜ-BC είναι επίσης σε 4ΚΜ, και μερικές σχέσεις που είναι σε 4ΚΜ είναι επίσης σε 5ΚΜ.
Η Πρώτη κανονική μορφή θεωρείται γενικώς να είναι μέρος του ορισμού μιας σχέσης.
Μία σχέση βρίσκεται σε πρώτη κανονική μορφή αν ικανοποιεί όλες τις ιδιότητες του ορισμού της σχέσης:
Κάθε όνομα γνωρίσματος (στήλης) είναι μοναδικό.
Όλες οι τιμές κάθε γνωρίσματος είναι ίδιου τύπου
(ή πεδίου ορισμού).
Κάθε τιμή γνωρίσματος είναι ατομική (μία τιμή
και όχι ομάδα πολλών τιμών).
Τα γνωρίσματα δεν έχουν διάταξη από τα αριστερά
προς τα δεξιά..
Οι συστοιχίες (σειρές) δεν έχουν διάταξη από
επάνω προς τα κάτω.
Δεν υπάρχουν δύο ίδιες σειρές (συστοιχίες) σε
μία σχέση.
Εάν υπάρχει καθορισμένο κλειδί για τη σχέση τότε ικανοποιείται η απαίτηση της μοναδικότητας των συστοιχιών (σειρών).
Ένας πίνακας σε πρώτη κανονική μορφή λέγεται κανονικοποιημένος πίνακας και τότε και μόνο τότε αντιστοιχεί σε μία σχέση (οι σχέσεις του σχεσιακού μοντέλου είναι στην 1η κανονική μορφή ). Μια γενικότερη συμβουλή για να καταλάβει κάποιος πότε ένας πίνακας δεν βρίσκεται σε πρώτη κανονική μορφή, θα πρέπει να προσέξει ώστε να μην υπάρχουν επαναλαμβανόμενα πεδία.
Τα βήματα που πρέπει να ακολουθηθούν ώστε να επέλθει ένας πίνακας με επαναλαμβανόμενα πεδία σε 1ΚΜ, είναι το σπάσιμο του αρχικού πίνακα σε δύο επί μέρους πίνακες. Ο ένας θα περιλαμβάνει τα βασικά στοιχεία του πίνακα και ο δεύτερος τα ονόματα των πεδίων που επαναλαμβάνονται μαζί με το πρωτεύον κλειδί του πρώτου πίνακα.
Ο παρακάτω πίνακας βρίσκεται σε 1ΚΜ;
ΣΠΟΥΔΑΣΤΕΣ (ΑΜ, ΕΠΙΘΕΤΟ, ΟΝΟΜΑ, ΤΗΛ, ΟΔΟΣ, ΑΡ, ΤΚ, ΠΟΛΗ, ΚΩΔ_ΜΑΘ1,ΜΑΘΗΜΑ1, ΒΙΒΛΙΟ1, ΒΑΘΜΟΣ1…, ΚΩΔ_ΜΑΘν, ΜΑΘΗΜΑν, ΒΙΒΛΙΟν ΒΑΘΜΟΣν)
Τι θα κάνανε ώστε να επέλθει σε 1ΚΜ;
Λύση
Ο πίνακας δεν είναι σε 1ΚΜ διότι έχει μια ομάδα επαναλαμβανόμενων πεδίων και έρχεται σε αντίθεση με τον πρώτο όρο που πρέπει να έχει ένας πίνακας για να είναι σε 1ΚΜ που λέει ότι το όνομα κάθε γνωρίσματος είναι μοναδικό.
Τα βήματα που θα ακολουθηθούν για να επέλθει σε 1ΚΜ είναι να τον σπάσουμε σε δύο επί μέρους πίνακες ως εξής :
ΣΠΟΥΔΑΣΤΕΣ (ΑΜ, ΕΠΙΘΕΤΟ, ΟΝΟΜΑ, ΤΗΛ, ΟΔΟΣ, ΑΡ, ΤΚ, ΠΟΛΗ)
ΜΑΘΗΜΑΤΑ_ΒΑΘΜΟΙ (ΚΩΔ_ΜΑΘ, ΑΜ, ΜΑΘΗΜΑ, ΒΙΒΛΙΟ ΒΑΘΜΟΣ)
Μία σχέση βρίσκεται σε δεύτερη κανονική μορφή εάν κάθε ένα από τα γνωρίσματά της που δεν είναι κλειδιά προσδιορίζονται από ολόκληρο το πρωτεύων κλειδί και όχι μόνο από ένα τμήμα του.
Οι σχέσεις που έχουν μόνο ένα γνώρισμα σαν πρωτεύων κλειδί βρίσκονται αυτόματα και στη δεύτερη κανονική μορφή.
Αυτός είναι ένας λόγος για τον οποίο χρησιμοποιούμε συχνά τεχνητά αναγνωριστικά σαν κλειδιά.
Η λύση που ακολουθείται όπως και σε όλες τις περιπτώσεις που ένας πίνακας δεν είναι κανονικοποιημένος, είναι το σπάσιμο του πίνακα σε επιμέρους πίνακες.
Στον έναν πίνακα πελιλαμβάνονται τα πεδία του κλειδιού και τα πεδία που εξαρτώνται και περιγράφουν όλο το σύνθετο κλειδί.
Στον άλλο πίνακα μπαίνουν τα πεδία που εξαρτώνται και περιγράφουν μέρος από το σύνθετο κλειδί καθώς και το μέρος του σύνθετου κλειδιού.
Ελέγξτε τους πίνακες που προέκυψαν από το Παράδειγμα 1. αν είναι σε 2ΚΜ.
ΣΠΟΥΔΑΣΤΕΣ (ΑΜ, ΕΠΙΘΕΤΟ, ΟΝΟΜΑ, ΤΗΛ, ΟΔΟΣ, ΑΡ, ΤΚ, ΠΟΛΗ)
ΜΑΘΗΜΑΤΑ_ΒΑΘΜΟΙ (ΚΩΔ_ΜΑΘ, ΑΜ, ΜΑΘΗΜΑ, ΒΙΒΛΙΟ, ΒΑΘΜΟΣ)
Λύση
Κατ’ αρχήν εξετάζουμε το πρώτο πίνακα ΣΠΟΥΔΑΣΤΕΣ. Αυτός ο πίνακας είναι σε 2ΚΜ γιατί έχει ένα πεδίο ως πρωτεύον κλειδί. Οπότε όλα τα υπόλοιπα πεδία που δεν είναι κλειδιά προσδιορίζονται από ολόκληρο το πρωτεύον κλειδί.
Στον δεύτερο πίνακα όμως ΜΑΘΗΜΑΤΑ_ΒΑΘΜΟΙ παρατηρούμε ότι το πρωτεύον κλειδί είναι σύνθετο και αποτελείται από δύο πεδία τον Κωδικό μαθήματος και τον Αριθμό μητρώου του σπουδαστή ( ΚΩΔ_ΜΑΘ, ΑΜ). Οι συναρτησιακές εξαρτήσεις που προκύπτουν είναι οι παρακάτω:
ΚΩΔ_ΜΑΘ, ΑΜ à ΒΑΘΜΟΣ
ΚΩΔ_ΜΑΘ à ΜΑΘΗΜΑ
ΚΩΔ_ΜΑΘ à ΒΙΒΛΙΟ
Παρατηρούμε ότι οι δύο τελευταίες συναρτησιακές εξαρτήσεις παραβιάζουν τον κανόνα για τη δεύτερη κανονική μορφή.
Το επόμενο βήμα είναι ο διαχωρισμός του πίνακα ΜΑΘΗΜΑΤΑ_ΒΑΘΜΟΙ σε δύο πίνακες:
Οπότε προκύπτουν οι παρακάτω σχέσεις.
ΣΠΟΥΔΑΣΤΕΣ (ΑΜ, ΕΠΙΘΕΤΟ, ΟΝΟΜΑ, ΤΗΛ, ΟΔΟΣ, ΑΡ, ΤΚ, ΠΟΛΗ)
ΜΑΘΗΜΑΤΑ_ΒΑΘΜΟΙ (ΚΩΔ_ΜΑΘ, ΑΜ, ΒΑΘΜΟΣ)
ΜΑΘΗΜΑΤΑ (ΚΩΔ_ΜΑΘ, ΜΑΘΗΜΑ, ΒΙΒΛΙΟ)
Μία σχέση βρίσκεται σε Τρίτη κανονική μορφή εάν είναι σε
δεύτερη και δεν περιέχει μεταβατικές εξαρτήσεις.
Θεωρήστε για παράδειγμα τη σχέση R που έχει γνωρίσματα τα Α, Β και Γ. Εάν
ΑàΒ
και ΒàΓ
τότε θα ισχύει και ΑàΓ. Αν το πεδίο Α προσδιορίζει συναρτησιακά το
πεδίο Β. Το πεδίο Β προσδιορίζει συναρτησιακά το πεδίο Γ. Τότε το πεδίο Α
προσδιορίζει συναρτησιακά και το πεδίο Γ. Δεν θέλουμε τέτοιες εξαρτήσεις σε μία
σχέση.
Για να λύσουμε το πρόβλημα σε περιπτωση που υπάρχει μεταβατική συναρτησιακή εξάρτηση σε έναν πίνακα σπάμε τον πίνακα σε δύο άλλους πίνακες. Ο ένας πίνακας περιέχει τα σταθερά στοιχεία και ο άλλος περιλαμβάνει τα πεδία με την συναρτησιακές εξαρτήσεις συν το πεδίο κλειδί του αρχικού πίνακα.
Ο παρακάτω πίνακας είναι κανονικοποιημένος ως προς την 3ΚΜ; Εξηγήστε αν υπάρχουν μεταβατικές εξαρτήσεις και σε ποια πεδία. Δώστε λύση ώστε να εξαλειφτεί το πρόβλημα.
ΣΠΟΥΔΑΣΤΕΣ (ΑΜ, ΕΠΙΘΕΤΟ, ΟΝΟΜΑ, ΤΗΛ, ΕΠΙΘΕΤΟ_ΚΗΔΕΜΟΝΑ ΟΝ_ ΚΗΔΕΜΟΝΑ, ΕΠΑΓΓΕΛΜΑ_ ΚΗΔΕΜΟΝΑ, ΤΗΛ_ ΚΗΔΕΜΟΝΑ, ΟΔΟΣ, ΑΡ, ΤΚ, ΠΟΛΗ …..)
Λύση:
Ο πίνακας ΣΠΟΥΑΔΣΤΕΣ δεν είναι κανονικοποιημένος ως προς 3ΚΜ διότι περιέχει μεταβατικές εξαρτήσεις στα παρακάτω πεδία:
ΑΜ à ΕΠΙΘΕΤΟ_ ΚΗΔΕΜΟΝΑ, ΟΝ_ ΚΗΔΕΜΟΝΑ
ΕΠΙΘΕΤΟ_ ΚΗΔΕΜΟΝΑ, ΟΝ_ ΚΗΔΕΜΟΝΑ à ΕΠΑΓΓΕΛΜΑ_ ΚΗΔΕΜΟΝΑ
ΕΠΙΘΕΤΟ_ ΚΗΔΕΜΟΝΑ, ΟΝ_ ΚΗΔΕΜΟΝΑ à ΤΗΛ_ ΚΗΔΕΜΟΝΑ
ΑΜ à ΕΠΑΓΓΕΛΜΑ_ ΚΗΔΕΜΟΝΑ
ΑΜ à ΤΗΛ_ ΚΗΔΕΜΟΝΑ
Για να εξαληφθεί η μεταβατική συνατρησιακή εξάρτηση των παραπάνω πεδίων διαιρούμε τον πίνακα σε δύο επι μέρους πίνακες.
ΣΠΟΥΔΑΣΤΕΣ (ΑΜ, ΕΠΙΘΕΤΟ, ΟΝΟΜΑ, ΤΗΛ, ΕΠΙΘΕΤΟ_ΚΗΔΕΜΟΝΑ ΟΝ_ ΚΗΔΕΜΟΝΑ, ΟΔΟΣ, ΑΡ, ΤΚ, ΠΟΛΗ)
ΚΗΔΕΜΟΝΕΣ (ΕΠΙΘΕΤΟ_ΚΗΔΕΜΟΝΑ, ΟΝ_ΚΗΔΕΜΟΝΑ, ΕΠΑΓΓΕΛΜΑ_ ΚΗΔΕΜΟΝΑ, ΤΗΛ_ ΚΗΔΕΜΟΝΑ , ΑΜ, ……)
Το πρωτεύον κλειδί του αρχικού πίνακα γίνεται ξένο κλειδί στον νέο πίνακα που προκύπτει από τον διαμελισμό του αρχικού πίνακα.
Η Boyce-Codd Κανονική Μορφή είναι μια πιο περιοριστική μορφή της 3ΚΜ, με την έννοια ότι κάθε σχέση στην BCNF είναι επίσης στην 3ΚΜ, αλλά δεν ισχύει πάντα το αντίστροφο.
Η 3ΚΜ δεν αντιμετωπίζει τις παρακάτω περιπτώσεις:
1. Μία σχέση να έχει δύο ή περισσότερα υποψήφια κλειδιά
2. Τα δύο υποψήφια κλειδιά να είναι σύνθετα
3. Να επικαλύπτονται (να έχουν τουλάχιστον ένα γνώρισμα κοινό)
Μία σχέση βρίσκεται σε κανονική μορφή Boyce-Codd εάν κάθε προσδιοριστικό της σχέσης είναι ένα υποψήφιο κλειδί. Δηλαδή τα μόνα βέλη εξαρτήσεων που εμφανίζονται στο διάγραμμα εξαρτήσεων είναι βέλη που ξεκινούν από υποψήφια κλειδιά.
Θυμηθείτε ότι δεν είναι κλειδιά όλα τα προσδιοριστικά. Αυτά τα προσδιοριστικά που μπορούν να είναι κλειδιά τα καλούμε υποψήφια κλειδιά. Τελικά επιλέγουμε ένα υποψήφιο κλειδί για το πρωτεύον κλειδί μιας σχέσης. Στην πραγματικότητα, οι περισσότερες σχέσεις οι οποίες είναι στην 3NF είναι επίσης στην BCNF. Οποιαδήποτε σχέση που έχει μόνο δύο γνωρίσματα είναι σε BCNF.
Τα βήματα που ακολουθούνται ώστε να επιτευχθεί κανονικοποίηση μία σχέση ως προς ΚΜ BC είναι τα ακόλουθα:
1 Δημιουργία μίας λίστας με όλα τα γνωρίσματα
2 Έλεγχος εάν κάθε προσδιοριστικό γνώρισμα μπορεί να είναι υποψήφιο κλειδί
3 Για τα προσδιοριστικά γνωρίσματα που δεν είναι κλειδιά δημιουργείται μία σχέση για την κάθε συναρτησιακή εξάρτηση.
4 Γίνεται συσχέτιση των γνωρισμάτων που δεν είναι κλειδιά με την αρχική σχέση
Στο παρακάτω παράδειγμα η σχέση βρίσκεται σε Τρίτη κανονική μορφή αλλά όχι σε κανονική μορφή Boyce-Codd. Θεωρείστε ότι ισχύουν οι εξής περιορισμούς.
1 Οι Χρηματιστηριακές Συναλλαγές γίνονται σε πολλούς Τύπους Μετοχών
2 Οι Συναλλαγές διαχειρίζονται από έναν ή περισσότερους Χρηματιστές
3 Οι Τύποι Μετοχών μπορούν έχουν έναν ή πολλούς Χρηματιστές
4 Οι Χρηματιστές μπορούν να συναλλάσσονται σε έναν Τύπο Μετοχών
ΠΙΝΑΚΑΣ_Α
:
Οι συναρτησιακές εξαρτήσεις που προκύπτουν σύμφωνα με τα παραπάνω είναι:
ΚωδΣυναλλαγής, ΤύποςΜετοχής à
Χρηματιστής
ΚωδΣυναλλαγής,
Χρηματιστής à ΤύποςΜετοχής
Χρηματιστής à
ΤύποςΜετοχής
Τι θα συνέβαινε εάν διαγραφόταν η εγγραφή με ΚωδΣυναλλαγής 2-234.
Κανονικοποιήστε τον παραπάνω πίνακα ως προς ΚΜ-BC.
Λύση
Εάν διαγραφόταν η εγγραφή με ΚωδΣυναλλαγής 2-234 θα χανόταν και το γεγονός ότι ο Δήμου διαχειρίζεται τις Προνομιακές Μετοχές.
Ο συνδυασμός ΚωδΣυναλλαγής, και ΤύποςΜετοχής συνθέτουν ένα υποψήφιο κλειδί γιατί χρησιμοποιώντας τον συνδυασμό αυτό μπορούμε να αναγνωρίσουμε με μοναδικό τρόπο μια πλειάδα μέσα στη σχέση.
Όμοια ο συνδυασμός ΚωδΣυναλλαγής, και Χρηματιστής συνθέτουν ένα υποψήφιο κλειδί για τι χρησιμοποιώντας τον συνδυασμό αυτό μπορούμε να αναγνωρίσουμε με μοναδικό τρόπο μια πλειάδα μέσα στη σχέση
Το πεδίο χρηματιστής μόνο του δεν είναι υποψήφιο κλειδί διότι με αυτό δεν μπορούμε να αναγνωρίσουμε με μοναδικό τρόπο μια πλειάδα μέσα στη σχέση
Εξετάζουμε εάν η σχέση ΠΙΝΑΚΑΣ_Α(ΚωδΣυναλλαγής, Τύπος Μετοχής, Χρηματιστής) βρίσκετε σε 1ΚΜ, 2ΚΜ ή 3 ΚΜ.
Εάν ορίσουμε ώς πρωτεύον κλειδί το ζεύγος γνωρισμάτων ΚωδΣυναλλαγής, Τύπος Μετοχής τότε σίγουρα είναι σε 1ΚΜ. Είναι και σε 2ΚΜ επειδή τα υπόλοιπα γνωρίσματα εξαρτώνται από το σύνολο του προτεύοντος κλειδίού και όχι μόνο από τμήμα του. Είναι και σε 3ΚΜ επειδή δεν υπάρχουν μεταβατικές εξαρτήσεις.
Στο προηγούμενο παράδειγμα ποια είναι η λύση:
ΠινακαςΑ (ΚωδΣυναλλαγής, Τύπος Μετοχής, Χρηματιστής)
Τα προσδιοριστικά γνωρίσματα είναι:
ΚωδΣυναλλαγής, Τύπος Μετοχής
ΚωδΣυναλλαγής, Χρηματιστής
Χρηματιστής
Ποια προσδιοριστικά γνωρίσματα μπορούν να λειτουργήσουν
σαν υποψήφια κλειδιά;
ΚωδΣυναλλαγής, Τύπος Μετοχής ΝΑΙ
ΚωδΣυναλλαγής, Χρηματιστής ΝΑΙ
Χρηματιστής ΟΧΙ
Δημιουργήστε μία νέα σχέση για κάθε συναρτησιακή
εξάρτηση:
ΠΙΝΑΚΑΣ_Α(Χρηματιστής, Τύπος Μετοχής)
ΠΙΝΑΚΑΣ_Β(ΚωδΣυναλλαγής, Χρηματιστής)
Σε αυτό το τελευταίο βήμα κρατήσαμε το προσδιοριστικό γνώρισμα " Χρηματιστής " στην αρχική σχέση ΠινακαςΑ.
Μία σχέση είναι σε 4ΚΜ εάν είναι σε BC-NF και δεν περιέχει εξαρτήσεις πολλαπλών τιμών (multivalued dependencies).
Με άλλα λόγια μια σχέση είναι σε 4ΚΜ εάν και μόνο εάν οι εξαρτήσεις πολλαπλών τιμών που ικανοποιεί είναι στην πραγματικότητα συναρτησιακές εξαρτήσεις που ξεκινούν από υποψήφια κλειδιά. Για να γίνει κατανοητό αυτό θα πρέπει πρώτα να δώσουμε τον ορισμό της εξάρτησης πολλαπλών τιμών.
Εξάρτηση Πολλαπλών Τιμών (Multivalued Dependency):
Έστω R μία σχέση, και Α, Β, C, τυχαία υποσύνολα του συνόλου των γνωρισμάτων της R. τότε το πεδίο B είναι πολλαπλά εξαρτημένο με το Α ή Βà>Α ή αλλιώς το Α καθορίζει πολλαπλά το Β, εάν το σύνολο τιμών του Β που αντιστοιχούν σε δεδομένο ζεύγος (Α,C) στη σχέση R, εξαρτάται μόνο από την τιμή Α και είναι ανεξάρτητο από την τιμή C
Μπορούμε να πούμε ότι υπάρχουν τρία κριτήρια που πρέπει να προσεχθούν
1 Θα πρέπει να υπάρχουν τουλάχιστον 3 πεδία σε μια σχέση. Πχ Α, Β, και Γ
2 Γνωρίζοντας το Α μπορεί κάποιος να καθορίσει πολλές τιμές για το Β και γνωρίζοντας το Α μπορεί κάποιος να καθορίσει πολλές τιμές για το Γ
3 Το Β και το Γ είναι ανεξάρτητα μεταξύ τους
Στον παρακάτω πίνακα υπάρχουν εξαρτήσεις πολλαπλών τιμών. Ποιες είναι αυτές οι εξαρτήσεις και τι λύση θα δίνατε;
ΕΡΓΑΖΟΜΕΝΟΣ |
ΕΡΓΟ |
ΕΞΑΡΤΩΜΕΝΟΣ |
ΠΑΠΑΣ |
Α |
ΓΙΑΝΝΗΣ |
ΠΑΠΑΣ |
Β |
ΣΟΦΙΑ |
ΠΑΠΑΣ |
Α |
ΣΟΦΙΑ |
ΠΑΠΑΣ |
Β |
ΓΙΑΝΝΗΣ |
ΔΗΜΟΥ |
Β |
ΚΩΣΤΑΣ |
Λύση
Οι περιορισμοί που διαπιστώνονται στον παραπάνω πίνακα είναι:
Ο εργαζόμενος συμμετέχει σε πολλά έργα.
Ο εργαζόμενος επιβλέπει περισσότερους του ενός εργαζομένους.
Άρα οι συναρτησιακές εξαρτήσεις που προκύπτουν είναι:
ΕΡΓΑΖΟΜΕΝΟΣ à ΕΡΓΟ
ΕΡΓΑΖΟΜΕΝΟΣ à ΕΞΑΡΤΩΜΕΝΟΣ
Δηλαδή παρατηρούμε ότι :
1. Υπάρχουν τουλάχιστον 3 πεδία στην σχέση. ΕΡΓΑΖΟΜΕΝΟΣ, ΕΡΓΟ, ΕΞΑΡΤΩΜΕΝΟΣ
2. Ο ΕΡΓΑΖΟΜΕΝΟΣ μπορεί να καθορίσει πολλές τιμές για το ΕΡΓΟ επίσης ΕΡΓΑΖΟΜΕΝΟΣ μπορεί να καθορίσει πολλές τιμές για το πεδίου ΕΞΑΡΤΩΜΕΝΟΣ.
3. Ο ΕΞΑΡΤΩΜΕΝΟΣ και το ΕΡΓΟ είναι ανεξάρτητα μεταξύ τους.
Η λύση που προβλέπεται είναι δύο πίνακες που συσχετίζονται μεταξύ τους
ΕΡΓΑΖΟΜΕΝΟΣ |
ΕΡΓΟ |
|
|
|
ΕΡΓΑΖΟΜΕΝΟΣ |
ΕΞΑΡΤΩΜΕΝΟΣ |
ΠΑΠΑΣ |
Α |
|
|
|
ΠΑΠΑΣ |
ΓΙΑΝΝΗΣ |
ΠΑΠΑΣ |
Β |
|
|
|
ΠΑΠΑΣ |
ΣΟΦΙΑ |
ΔΗΜΟΥ |
Δ |
|
|
|
ΔΗΜΟΥ |
ΚΩΣΤΑΣ |
ΔΗΜΟΥ |
Α |
|
|
|
ΔΗΜΟΥ |
ΝΙΚΗ |
ΔΗΜΟΥ |
Β |
|
|
|
ΔΗΜΟΥ |
ΣΤΕΛΛΑ |
Μία σχέση είναι σε πέμπτη κανονική μορφή (5ΚΜ) εάν και μόνο εάν οι μόνες εξαρτήσεις σύζευξης που ικανοποιεί είναι στην πραγματικότητα συναρτησιακές εξαρτήσεις που ξεκινούν από υποψήφια κλειδιά
Εξάρτηση Σύζευξης: Έστω R μια σχέση, και Α,Β,..Ζ, τυχαία υποσύνολα του συνόλου των γνωρισμάτων της R. τότε η R ικανοποιεί εξάρτηση σύζευξης *(Α,Β,…Ζ) εάν και μόνο εάν η R είναι ίση με τη σύζευξη των προβολών της πάνω στα Α ,Β…Ζ
Επίσης η πέμπτη κανονική μορφή απομακρύνει εξαρτήσεις σύζευξης.
Στον παρακάτω πίνακα υπάρχουν εξαρτήσεις σύζευξης που ξεκινούν από το υποψήφια κλειδί Α . Ποιες είναι αυτές οι εξαρτήσεις και τι λύση θα δίνατε;
ΠΙΝΑΚΑΣ_A (Α,Β,Γ,Δ,Ε,Ζ,Η)
Λύση
Οι προβολές πάνω στα πεδία του πίνακα είναι. ΑΒ, ΑΓ, ΑΔ ….
Οι πίνακες που προκείπτουν είναι:
R1(A,B), R2(A,Γ), R31(A,Δ), R4(A,Ε), R5(A,Ζ), R6(A,Η)
Η σύζευξη των πινάκων R1, R2,R3,R4,R5,R6 δίνει το ίδιο αποτέλεσμα με τον ΠΙΝΑΚΑ_Α. Δηλ. με την εντολη
SELECT R1.A, B,Γ,Δ,Ε,Ζ,Η
FROM R1,R2,R3,R4,R5,R6
WHERE R1.A=R2.A AND R1.A=R3.A AND
R1.A=R4.A AND R1.A=R5.A AND
R1.A=R6.A
Κανονική μορφή Πεδίου ορισμού : Μια δέσμευση που λέει ότι οι τιμές ενός δεδομένου γνωρίσματος παίρνονται από ένα καθορισμένο πεδίο ορισμού
Κανονική μορφή Κλειδιού: Μια δέσμευση που ορίζει ότι κάποιο γνώρισμα ή συνδυασμός γνωρισμάτων είναι υποψήφιο κλειδί
Δέσμευση: Είναι ένας κανόνας που αναγκάζει τις στατικές τιμές ενός γνωρίσματος έτσι ώστε ο καθορισμός της τιμής να γίνεται μόνο όταν αυτός ο κανόνας είναι αληθής.
Εικόνα4.1 . Οι κανονικές μορφές
Δίνει απαντήσεις σε ερωτήσεις όπου η θεωρία της κανονικοποίησης δεν δίνει απαντήσεις. Το αποτέλεσμα είναι κακοί σχεδιασμοί σχέσεων.
Υπάρχουν περιπτώσεις όπου μπορεί γίνει να από-κανονικοποίηση των σχέσεων ώστε να επιτευχθεί καλύτερη απόδοση της βάσης
Θεωρήστε την παρακάτω σχέση:ΠΕΛΑΤΕΣ (ΚΜ, Επίθετο, Όνομα, Διεύθυνση, Πόλη, , ΤΚ)
Η σχέση αυτή περιέχει συναρτησιακές εξαρτήσεις ΤΚ à Πόλη
Μπορούμε να κάνουμε κανονικοποίηση ΚΜ ΠΟ/Κ χωρίζοντας την σχέση ΠΕΛΑΤΕΣ στα δύο
ΠΕΛΑΤΕΣ (ΚΜ, Επίθετο, Όνομα, Διεύθυνση, ΤΚ) και
ΤαχΚΩΔΙΚΟΙ (ΤΚ, Πόλη)
Αυτό θεωρείτε λάθος γιατί όταν θελήσουμε την διεύθυνση ενός πελάτη θα ψάχνουμε σε δύο σχέσεις (πίνακες).
Το ίδιο ισχύει και στις περιπτώσεις των πεδίων ΤΗΛΕΦΏΝΟ. Είναι προτιμότερο να έχουμε στον ίδιο πίνακα 2 και 3 πεδία τηλεφώνου (ΤΗΛ_ΚΙΝ, ΤΗΛ_ΕΡΓΑΣΙΑΣ, ΤΗΛ_ΟΙΚΙΑΣ, ΤΗΛ_ΦΑΞ), γεγονός που έρχεται σε αντίθεση με 1ΚΜ, παρά να ψάχνουμε σε δύο πίνακες για να βρούμε το τηλέφωνο ενός ατόμου.
Σε τέτοιες περιπτώσεις η από-κανονικοποίηση αποφέρει μεγαλύτερη απόδοση τη βάσης.
Για να μπορέσουμε να
δημιουργήσουμε και να διαχειριστούμε μια βάση δεδομένων, μπορούμε να
χρησιμοποιήσουμε ειδικές γλώσσες προγραμματισμού, τις λεγόμενες γλώσσες ερωταπαντήσεων (query languages).
Είναι γλώσσες μη διαδικαστικές, τέταρτης γενιάς (4th generation languages).
Εμείς απλά διατυπώνουμε με απλές και κατανοητές εντολές το τι πληροφορίες
ζητάμε και το ΣΔΒΔ (Σύστημα Διαχείρισης Βάσεων Δεδομένων) αναλαμβάνει να μας
απαντήσει. Η SQL (Structured Query
Language, δηλ. Δομημένη Γλώσσα Ερωτημάτων)
είναι σήμερα η πιο δημοφιλής και πιο διαδεδομένη γλώσσα ανάπτυξης και
διαχείρισης σχεσιακών βάσεων δεδομένων.
·
Η SQL μάς δίνει τη δυνατότητα να
έχουμε πρόσβαση σε μια βάση δεδομένων (database).
·
Η SQL αποτελεί μια στάνταρτ γλώσσα
του ANSI (ANSI standard language).
·
Η SQL μπορεί να εκτελέσει
ερωτήματα (queries) και να αναζητήσει πληροφορίες σε μια βάση δεδομένων.
·
Η SQL μπορεί να ανακτήσει δεδομένα
από μια βάση δεδομένων.
·
Η SQL μπορεί να εισαγάγει νέες
εγγραφές σε μια βάση δεδομένων.
·
Η SQL μπορεί να διαγράψει εγγραφές
από μια βάση δεδομένων.
·
Η SQL μπορεί να ενημερώσει
εγγραφές σε μια βάση δεδομένων.
·
Η SQL είναι πολύ εύκολη στην
εκμάθηση.
Η SQL
αποτελείται από εντολές με τα ορίσματά τους, τις οποίες μπορούμε να
χρησιμοποιήσουμε με συγκεκριμένους κανόνες σύνταξης για να πάρουμε τα
αποτελέσματα που θέλουμε. Με την SQL
μπορούμε να δημιουργήσουμε μια βάση δεδομένων και τους πίνακές της με τα
αντίστοιχα πεδία, να καταχωρήσουμε δεδομένα στους πίνακες, να τροποποιήσουμε
και να διαγράψουμε τα δεδομένα αυτά, να αλλάξουμε τη δομή των πινάκων με
προσθήκη και διαγραφή πεδίων και να εμφανίσουμε πληροφορίες (συνδυασμούς από
δεδομένα).
Η SQL
έχει διάφορα τμήματα, τα πιο βασικά είναι τα παρακάτω :
·
Τη Γλώσσα Ορισμού Δεδομένων (DDL, Data Definition Language),
η οποία περιέχει τις απαραίτητες εντολές για τον ορισμό και την τροποποίηση του
σχεσιακού σχήματος καθώς και για τη δημιουργία, την τροποποίηση και τη διαγραφή
σχέσεων. Περιέχει ακόμη τις εντολές δημιουργίας και επεξεργασίας όψεων και
ορισμού περιορισμών ακεραιότητας.
·
Τη Γλώσσα Χειρισμού Δεδομένων (DML, Data Manipulation Language),
η οποία περιέχει τις απαραίτητες εντολές για την εμφάνιση (αναζήτηση) δεδομένων
καθώς και για την καταχώρηση, τροποποίηση και διαγραφή των εγγραφών (πλειάδων)
μιας σχέσης.
·
Τέλος, περιέχει εντολές για τον
ορισμό και την επεξεργασία συναλλαγών
(transactions)
και εντολές για την ασφάλεια (authentication).
Τα διάφορα τμήματα της SQL
παρουσιάζονται συνοπτικά στον παρακάτω πίνακα:
Γλώσσα Ορισμού Δεδομένων
(DDL) |
CREATE |
DROP | ALTER
TABLE (base table) CREATE |
DROP | ALTER
VIEW (virtual table) CREATE |
DROP | ALTER
INDEX (index table) |
Γλώσσα Χειρισμού
Δεδομένων (DML) |
SELECT αναζήτηση INSERT εισαγωγή εγγραφής DELETE διαγραφή εγγραφής UPDATE τροποποίηση εγγραφής |
Ενσωματωμένη Γλώσσα Χειρισμού Δεδομένων (Static SQL) (Dynamic SQL) |
EXEC SQL DECLARE Sinfo CURSOR FOR SELECT S_name, S_sity FROM
SUPPLIERS ORDER BY S_name; do { …… EXEC SQL FETCH sinfo INTO : sname, : ssity; ……………….. EXEC SQL CLOSE sinfo; CString CDataSourceSet::GetDefaultConnect() {return ODBC;DSN=DataSource;"; } CString CDataSourceSet::GetDefaultSQL() {return "SELECT * FROM SUPPLIERS ORDER BY S_Name"; } |
Ορισμό Όψεων |
CREATE VIEW ATHENS_SUPPLIERS |
Εξουσιοδότηση (authentication) |
CREATE |
DROP | ALTER
User CREATE USER John
IDENTIFIED BY Johns-password; GRANT CONNECT TO John; GRANT SELECT, UPDATE ON
SUPPLIERS TO John; REVOKE SELECT ON
SUPPLIERS FROM John; |
Ακεραιότητα |
CREATE DOMAIN S_No AS
INTEGER CONSTRAINT Έλεγχος-Αριθμού-Προμηθευτή CHECK (S_No >0); CREATE ASSERTION <Όνομα-δήλωσης> CHECK <Κατηγόρημα>; DEFINE TRIGGER <όνομα> ON UPDATE OF SUPPLIERS (…) |
Έλεγχο Συναλλαγών |
SQL> SET TRANSACTION; INSERT INTO CUSTOMERS VALUES
('SMITH', 'JOHN'); SQL> COMMIT; |
Όπως δηλώνει και το
όνομά της, η SQL είναι μια σύνταξη για την εκτέλεση ερωτημάτων (queries). Αλλά
η γλώσσα της SQL περιλαμβάνει επίσης μια σύνταξη για την ενημέρωση εγγραφών,
την εισαγωγή νέων εγγραφών και τη διαγραφή υπαρχόντων εγγραφών.
Η Γλώσσα Χειρισμού Δεδομένων (Data Manipulation
Language, DML) που
αποτελεί κομμάτι της SQL χρησιμοποιεί τις παρακάτω εντολές :
· SELECT
-
προβάλει τα δεδομένα αναζήτησης από μια βάση δεδομένων.
· INSERT
- εισάγει
νέα δεδομένα σε μια βάση δεδομένων.
· UPDATE
-
ενημερώνει δεδομένα σε μια βάση δεδομένων.
· DELETE
-
διαγράφει δεδομένα από μια βάση δεδομένων.
Στη συνέχεια θα δοθεί μη σύνταξη
των παραπάνω εντολών. Στις εντολές αυτές
θα αναφερθούμε συνοπτικά και θα δώσουμε μεγαλύτερη έμφαση σε ερωτήματα
περίπλοκα και εμφωλιασμένα.
Η εντολή SELECT
προβάλει δεδομένα από τις στήλες (columns) ενός πίνακα της βάσης δεδομένων. Το
αποτέλεσμα προβάλλεται σε μορφή πίνακα και αποκαλείται result set. Η σύνταξη
της εντολής είναι η εξής:
select Α1, Α2, .., Αn
from R1, R2, … Rm
where P1
Συνθήκη 2 σε
συνάρτηση
group by Α1
having P2
order
by Α1 asc
/ desc
Αi:
αναπαριστά γνωρίσματα, Ri:
αναπαριστά σχέσεις(πίνακες), P:
είναι συνθήκη
Αυτό το ερώτημα είναι ισοδύναμο με
την έκφραση της σχεσιακής άλγεβρας
π A1, A2, .., An (σ P (R1 x R2 x … Rm))
select
αντιστοιχεί στην πράξη της
προβολής της σχεσιακής άλγεβρας. Τα γνωρίσματα που θέλουμε να υπάρχουν στο
αποτέλεσμα της ερώτησης.
from
αντιστοιχεί στην πράξη του καρτεσιανού γινομένου της σχεσιακής άλγεβρας. Ποιες σχέσεις(πίνακες) θα χρησιμοποιηθούν για τον υπολογισμό του
αποτελέσματος.
where
αντιστοιχεί στη συνθήκη της
πράξης της επιλογής στη σχεσιακή άλγεβρα. Το κριτήριο P
έχει γνωρίσματα των σχέσεων που εμφανίζονται στο from.
group
by ο όρος χρησιμοποιείται στις περιπτώσεις
ομαδοποίησης αποτελεσμάτων σύμφωνα με ένα γνώρισμα. Συνήθως χρησιμοποιείται
όταν υπάρχουν συναθροιστικές συναρτήσεις (sum, avg, count, min,max) στο select.
having
η πρόταση αυτή περιορίζει τις
γραμμές που επιστρέφονται από μία πρόταση group by με τον ίδιο τρόπο που
η πρόταση where
περιορίζει τις γραμμές που επιστέφονται από την πρόταση select.
Τόσο η where
όσο και η having
μπορούν να συμπεριληφθούν στην ίδια πρόταση select.
Η where
εφαρμόζεται πριν την ομαδοποίηση και η having εφαρμόζεται αφού
σχηματιστούν οι ομάδες (group by) και υπολογιστούν οι συναθροιστικές
συναρτήσεις.
order by
χρησιμοποιείται ώστε οι εγγραφές/ γραμμές/ πλειάδες/ συστοιχίες να είναι
ταξινομημένες με βάση το αντίστοιχο γνώρισμα κατά αύξουσα σειρά asc
ή κατά φθίνουσα σειρά desc.
ΠΡΟΣΟΧΗ: Δε γίνεται απαλοιφή των διπλών εμφανίσεων
(διπλότυπα).
Η SQL επιτρέπει και πολλαπλές εμφανίσεις
της ίδιας συστοιχίας σε μια σχέση. Μια σχέση στην SQL είναι ένα πολυσύνολο
(multiset)
Η σημασιολογία των διπλότυπων στην
SQL:
select Α1, Α2, .., Αn
from R1, R2, … Rm
where P
είναι ισότιμο με την εκδοχή
πολλαπλών συνόλων της έκφρασης:
π A1, A2, .., An (σ P (R1 x R2 x … Rm))
Για την Απαλοιφή διπλών εμφανίσεων
(διπλότυπα) χρησιμοποιούμε το distinct . Π.χ.
select
distinct Α1, Α2, .., Αn
from R1, R2,
… Rm
5.1.2 Insert
Για να εισάγουμε δεδομένα σε μια σχέση
μπορούμε να το υλοποιήσουμε με την εντολή insert into,
εισάγοντας (α) μεμονωμένες τιμές είτε (β) πλήθος τιμών από έναν άλλο πίνακα
(α)
Insert into R(A1, …, An) values (v1, …, vn)
(β)
Insert
into R(A1, …, An) select-from-where
5.1.3 Update
Η γενική σύνταξη είναι
Update
όνομα-πίνακα Set
όνομα-στήλης = νέα-τιμή
Where P
Η ενημέρωση γίνετε σε όλες τις
γραμμές του πίνακα που ικανοποιούν την συνθήκη Ρ
Με την
εντολή αυτή γίνετε η διαγραφή των εγγραφών από έναν πίνακα
Delete
from R where P
Σβήνει όλες τις γραμμές της R για
τις οποίες ισχύει η συνθήκη P.
Όταν λείπει το where σβήνονται όλες οι εγγραφές ενός
πίνακα
.
5.2 Ορισμός Δεδομένων της SQL (Data Definition Language)
Με τις εντολές αυτές της SQL
ορίζουμε το σχήμα της βάσης δεδομένων, μπορούμε να το τροποποιήσουμε αλλά και
να το διαγράψουμε.
Οι βασικότερες
εντολές που χρησιμοποιεί η DDL είναι οι εξής :
· CREATE TABLE
-
δημιουργεί έναν πίνακα.
· ALTER TABLE
- Τροποποιεί
την δομή ενός πίνακα.
· DROP TABLE
-
διαγράφει ολόκληρο πίνακα
5.2.1 Create Table
Η
σύνταξη της εντολής για την δημιουργία ενός νέου πίνακα είναι :
Create table R( A1 D1, A2 D2, …..., An Dn ),
<περιορισμός-ακεραιότητας1>,
…,
<περιορισμός-ακεραιότηταςk>
όπου R είναι το όνομα του πίνακα, Ai
τα ονόματα των γνωρισμάτων, και Di
οι τύποι των αντίστοιχων πεδίων ορισμού.
Για τον ορισμό του πεδίου ορισμού,
οι διαθέσιμοι built-in τύποι περιλαμβάνουν:
char(n).
Αλφαριθμητικό σταθερού μήκους n που
ορίζεται από τον χρήστη.
varchar(n).
Αλφαριθμητικό μεταβλητού μήκους, με μέγιστο μήκος n
οριζόμενο από τον χρήστη.
int.
Ακέραιος (υποσύνολο που εξαρτάται από τη μηχανή)
smallint.
Μικρός ακέραιος (υποσύνολο που εξαρτάται από τη μηχανή)
numeric(p,d). Αριθμός
σταθερής υποδιαστολής, με ακρίβεια p
ψηφίων όπου τα d
είναι στα δεξιά της υποδιαστολής.
real,
double precision.
Πραγματικοί αριθμοί, διπλής ακρίβειας, όπου η ακρίβεια εξαρτάται από τη μηχανή.
float(n).
Πραγματικοί αριθμοί κινητής υποδιαστολής, με ακρίβεια τουλάχιστον n
ψηφίων οριζόμενη από τον χρήστη.
date.
Ημερομηνία της μορφής Π.χ. date
‘2002-10-22’
time.
Ώρα της ημέρας σε ώρες, λεπτά, δευτερόλεπτα. Π.χ. time ’09:
timestamp. Η
ημέρα συν την ώρα. Π.χ. timestamp ‘2002-10-22 09:05:32.75’
interval. Χρονικό
διάστημα. Π.χ. διάστημα ‘1’ ημέρας
Οι τιμές null
επιτρέπονται στα πεδία ορισμού. Δηλώνοντας ένα πεδίο ως not null
απαγορεύει οι τιμές του πεδίου να είναι κενές και προϋποθέτει την υποχρεωτική
καταχώριση τιμής σε αυτό το πεδίο..
Περιορισμοί Ακεραιότητας
Επιτρεπτοί περιορισμοί
ακεραιότητας είναι της μορφής:
·
primary key Aj1, Aj2,
..., Ajn, (δεν επιτρέπονται διπλόεγγραφές και NULL τιμές), ορίζει το
πρωτεύον κλειδί του πίνακα.
·
unique Aj1, Aj2,
..., Ajn, (δεν επιτρέπονται διπλοεγγραφές; NULL τιμές επιτρέπονται)
·
check P έλεγχος μιας
συνθήκης σε ένα πεδίο
·
foreign key (Ai) references Ai ορισμός ενός
πεδίου ως ξένο κλειδί.
Η σύνταξη της εντολής αυτής μπορεί
να γίνει με ένα από του παρακάτω τρεις τρόπους ανάλογα με τις αντίστοιχες απαιτήσεις
alter
table R ADD
όνομα_στήλης τύπος
δεδομένων
alter
table R DROP COLUMN όνομα_στήλης
alter
table R MODIFY
(όνομα_στήλης νέος τύπος
δεδομένων)
ADD
- προσθέτει καινούργια στήλη
DROP
- διαγράφει μια στήλη
MODIFY
- τροποποιεί μια στήλη
Η εντολή
modify μπορεί
να τροποποιήσει μόνο τον τύπο δεδομένων, όχι το όνομα της στήλης. Μερικά
RDBMS
δεν επιτρέπουν τη διαγραφή (DROP) στήλης σε έναν πίνακα της βάσης
.Για να σβηστεί ένας πίνακας R η
σύνταξη της εντολής είναι η παρακάτω:
drop table R
Δεν πρέπει να την συγχέουμε με την
εντολή delete from R
η οποία διαγράφει μόνο τις εγγραφές από τον πίνακα. Η εντολή Drop Table
διαγράφει και εξαφανίζει οριστικά ολόκληρο τον πίνακα.
5.3 Ορισμός Όψεων της SQL (View Definition Language)
Με τις εντολές αυτές της SQL
ορίζουμε όψεις της βάσης δεδομένων, όπου μπορούμε να εκτελέσουμε ερωτήματα και
τα αποτελέσματα τους να τα χρησιμοποιήσουμε με τον ίδιο τρόπο που
χρησιμοποιούμε τους πίνακες μιας βάσης. Τις όψεις αυτές μπορούμε να τις
τροποποιήσουμε αλλά και να τις διαγράψουμε. Οι όψεις αποτελούν ένα σημαντικό
εργαλείο των βάσεων δεδομένων όσων αφορά την ασφάλεια των δεδομένων.
Χρησιμοποιώντας όψεις αντί για πίνακες μειώνεται οι πιθανότητα να αλλοιωθούν τα
δεδομένα ενός πίνακα μιας και ο τελικός χρήστης δεν θα έχει απευθείας πρόσβαση
στον πίνακα και σε όλα τα στοιχεία του, αλλά θα βλέπει και θα επεξεργάζεται τα
στοιχεία που θα προβάλλει η όψη.
Οι βασικότερες
εντολές που χρησιμοποιεί η VDL είναι οι εξής :
· CREATE VIEW
-
δημιουργεί μία όψη.
· ALTER VIEW
- Τροποποιεί
τη δομή μιας όψεις.
· DROP VIEW
-
διαγράφει ολόκληρη την όψη
5.3.1 Create View
Η
σύνταξη της εντολής για την δημιουργία μιας όψης είναι :
Create View V As
Select …..
From
……
Where ……
…..,
όπου V
είναι το όνομα της όψης, και ακολουθεί η σύνταξη ενός ερωτήματος που ξεκινά με
την εντολή select.
Η σύνταξη της εντολής αυτής μπορεί
να γίνει με ένα από του παρακάτω τρεις τρόπους ανάλογα με τις αντίστοιχες
απαιτήσεις
Αlter View V As
Select
……
Όπου V
είναι το όνομα της όψης που πρόκειται να τροποποιηθεί.
.Για να διαγραφεί μία όψη V,
η σύνταξη της εντολής είναι η παρακάτω:
Drop View V
Ένα
υποερώτημα είναι μια έκφραση select
– from –
where
που είναι εμφωλευμένη (ένθετη) μέσα σε μια άλλη έκφραση. Τότε το πρώτο
ονομάζεται εξωτερικό ερώτημα και το δεύτερο εσωτερικό υποερώτημα.
Υπολογίζεται
πρώτα το εσωτερικό υποερώτημα και κατόπιν το εξωτερικό εφαρμόζοντας σε αυτό το
αποτέλεσμα του εσωτερικού ερωτήματος. Εξαίρεση αποτελεί η περίπτωση των
συσχετιζόμενων υποερωτημάτων όπου το εσωτερικό υποερώτημα θα υπολογιστεί για
κάθε γραμμή (συστοιχία) του εξωτερικού ερωτήματος.
Η
γενική σύνταξη των εμφωλευμένων υποερωτημάτων είναι η
select *
from πινακας1
where πινακας1.πεδίο1 ΤΕΛΕΣΤΗΣ ΣΥΓΚΡΙΣΗΣ
(select πεδίο2
from πινακας2
where πεδίο3 = τιμή1)
Σαν
τελεστές σύγκρισης χρησιμοποιούνται οι <
<= > >= =
<>
Τα
εμφωλευμένα υποερωτήματα χρησιμοποιούνται όταν δεν γνωρίζουμε την τιμή
σύγκρισης στη συνθήκη που υπάρχει σε προτάσεις where ή having.
Στις
περιπτώσεις όπου το εσωτερικό υποερώτημα θα έχει ως αποτέλεσμα την επιστροφή
δύο ή περισσοτέρων τιμών χρησιμοποιούνται οι τελεστές in, not in, some, all, exists, unique.
Ο τελεστής in (not in)
ελέγχει αν μια πλειάδα ανήκει ( ή δεν ανήκει) σε ένα σύνολο από πλειάδες
που έχουν προκύψει από μια έκφραση
select-from-where.
Ο τελεστής some έχει τη σημασία του τουλάχιστον
ένα από ένα σύνολο
Επίσης ισχύει (= some) ισοδύναμο. του in
Ωστόσο (¹some) όχι ισοδύναμο του not in
Ο τελεστής any
έχει τη σημασία του το πολύ ένα από ένα σύνολο
Ο τελεστής all έχει τη σημασία από όλα τα
στοιχεία ενός συνόλου.
Επίσης ισχύει (¹ all) ισοδύναμο του not
in
Το (= all)
ελέγχει αν το υποερώτημα έχει μόνο μία τιμή, δεν είναι ισοδύναμο του in.
Ο τελεστής exists χρησιμοποιείται στον έλεγχο
για κενά σύνολα (κενές σχέσεις) και
επιστρέφει true αν η υποερώτηση δεν είναι κενή
Ο τελεστής not exists:
επιστρέφει true αν η υποερώτηση είναι κενή
Ο τελεστής unique (not unique) ελέγχει
αν ένα υποερώτημα περιέχει διπλότυπες πλειάδες στο αποτέλεσμά του (έλεγχος για
διπλότυπα).
Ο τελεστής unique: επιστρέφει true αν
η υποερώτηση δεν έχει διπλότυπες πλειάδες.
Ο τελεστής not unique:
επιστρέφει true αν η υποερώτηση έχει διπλότυπα.
Ο πιο συχνά χρησιμοποιούμενος τελεστής από τους
παραπάνω είναι ο in
(not in).
Οι πράξεις δύο συνόλων Α
και Β είναι η ένωση η τομή και διαφορά τους όπως φαίνεται στην παρακάτω εικόνα:
ένωση
τομή διαφορά
Εικόνα 5.1 Πράξεις συνόλων.
Οι πράξεις συνόλων
εφαρμόζονται σε πίνακες που έχουν
τον ίδιο αριθμό στηλών και ίδιο τύπο
δεδομένων.
Γενική σύνταξη:
Πίνακας Α
<Πράξη>
Πίνακας Β
Οι τελεστές που μπορούν να
χρησιμοποιηθούν για τις πράξεις συνόλων είναι
union ένωση
intersect τομή
except διαφορά
Καθένας από τους παραπάνω
τελεστές αυτόματα διαγράφει τα διπλότυπα (απαλοιφή διπλών εμφανίσεων). Για την
τήρηση των διπλοτύπων χρησιμοποιείται η αντίστοιχη εκδοχή πολλαπλών συνόλων union all, intersect all , except all.
ο τελεστής union υποστηρίζεται από τα περισσότερα
σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων.
5.6 Τύποι Σύζευξης
Ο κλασικός τρόπος εκτέλεσης ενός ερωτήματος από την
στιγμή που καλούνται πάνω από ένας πίνακες που συσχετίζονται μεταξύ τους σε
κάποια πεδία είναι να χρησιμοποιήσουμε μια συνθήκη στο where του ερωτήματος όπου θα ελέγχουμε
τις τιμές από τα κοινά πεδία των πινάκων που μετέχουν στην έκφραση from ναι είναι ίσες μεταξύ τους. Σε
περίπτωση που δεν κάνουμε τον παραπάνω έλεγχο, θα παρουσιάσουμε το καρτεσιανό
γινόμενο όλων των εγγραφών από όλους τους πίνακες και το αποτέλεσμα θα είναι
λάθος.
select R1.A1, A2, A3, A4
from R1,R2
where R1.A1=R2.A1
Αντί για τον παραπάνω τρόπο χρησιμοποιούμε καλύτερα
τους παρακάτω τύπους σύζευξης πινάκων.
Inner join: |
σημαίνει τις
εγγραφές από τους δύο πίνακες όπου οι τιμές του κοινού πεδίου είναι ίδιες |
left outer join:
|
σημαίνει όλες
τις εγγραφές του αριστερού πίνακα και τις εγγραφές του δεξιού όπου οι τιμές
του κοινού πεδίου είναι ίδιες |
right outer join:
|
σημαίνει όλες τις
εγγραφές του δεξιού πίνακα και τις εγγραφές του αριστερού όπου οι τιμές του
κοινού πεδίου είναι ίδιες |
full outer join:
|
Η ένωση (union) των δύο παραπάνω |
(Η λέξη OUTER
προαιρετική):
Σε
περίπτωση δύο πινάκων που συσχετίζονται μεταξύ τους με το πεδίο Α1
select