Συστήματα Βάσεων Δεδομένων SQL
Εμμανουήλ Γιαννακουδάκης
Β΄ Έκδοση
Εκδότης: Μπένου Ε.
Μορφή: Μαλακό εξώφυλλο
Αριθμός σελίδων: 592
Κωδικός ISBN: 978-960-851-228-3
Διαστάσεις: 17 × 24 εκ.
Κωδ. Εύδοξος: 2756
Η ανάπτυξη εφαρμογών και πληροφοριακών συστημάτων, γενικώς, στηρίζεται σε καθιερωμένες λογικές και φυσικές μονάδες συσχέτισης και αποθήκευσης στοιχείων, οι οποίες σχηματίζουν μια ιεραρχία. Οι μονάδες αυτές είναι το πεδίο που χρησιμοποιείται για τη σύνθεση εγγραφών, οι οποίες με τη σειρά τους χρησιμοποιούνται για τη δημιουργία μιας μεγαλύτερης μονάδας, που είναι το αρχείο. Οι εφαρμογές που στηρίζονται σε παραδοσιακές γλώσσες 3ης γενιάς συνήθως θεωρούν το αρχείο ως την ανώτατη "μονολιθική" μονάδα σύνδεσης και επεξεργασίας δεδομένων. Η ιεραρχία αυτή, βεβαίως, περιορίζει σε μεγάλο βαθμό την ευελιξία, καθώς και τη δυναμική επέκταση των εφαρμογών. Κυρίως, όμως, η ιεραρχία αυτή δεν επιτρέπει τη δυναμική σύνθεση οντοτήτων και εννοιολογικών εγγραφών, έτσι ώστε να εξασφαλίζεται η εξατομικευμένη εξυπηρέτηση των χρηστών.
Τα συστήματα βάσεων δεδομένων δεν καταργούν τις παραπάνω τρεις μονάδες θεωρώντας τις απαρχαιωμένες έννοιες, αλλά, αντιθέτως, τις επεκτείνουν, καθιερώνοντας υψηλότερες λογικές ενότητες, όπως είναι το λογικό σχήμα (ένα κατονομασμένο σύνολο τύπων εγγραφών), το υποσχήμα (ένα κατονομασμένο ιδεατό σύνολο πεδίων) και ο κατάλογος (ένα κατονομασμένο σύνολο σχημάτων). Παράλληλα, τα σύγχρονα συστήματα βάσεων δεδομένων προσφέρουν εντολές υψηλού επιπέδου για τον προσδιορισμό λογικών και φυσικών δομών, καθώς επίσης και για το χειρισμό εννοιολογικών εγγραφών (εγγραφών που είναι πολύ κοντά στο επίπεδο αναφοράς του χρήστη). Επίσης, τόσο οι ειδικοί της Πληροφορικής όσο και οι λοιποί χρήστες είναι πλέον σε θέση να καλύψουν όλες τις ανάγκες επεξεργασίας πληροφοριών ενός οργανισμού μέσα από μια ολοκληρωμένη, οργανωμένη και μεθοδική προσέγγιση.
Έτσι, λοιπόν, τα συστήματα βάσεων δεδομένων χρησιμοποιούν τις έννοιες "πεδίο" (άλλως στήλη), "εγγραφή" (άλλως πλειάδα) και "αρχείο" (άλλως πίνακας), χωρίς απαραίτητα να απαιτούν την επίκληση αυτών από τους χρήστες. Απώτερος σκοπός των συστημάτων βάσεων δεδομένων είναι να υποστηρίξουν τη λειτουργία τόσο λογικών χειρισμών - ανεξάρτητα από χειρισμούς αποθήκευσης - όσο και φυσικών χειρισμών - ανεξάρτητα από λογικούς χειρισμούς. Το σύστημα διαχείρισης βάσεων δεδομένων (DataBase Management System - DBMS) είναι το αναγκαίο λογισμικό για το σχεδίασμά, για το χειρισμό και για τη συντήρηση της βάσης δεδομένων, δηλαδή των στοιχείων ενός οργανισμού, συμπεριλαμβανομένων και κατάλληλων στοιχείων ελέγχου.
Όπως συνέβη με τις γλώσσες 3ης γενιάς (π.χ. C, Java, FORTRAN, COBOL και Pascal), οι οποίες απετέλεσαν το επόμενο εξελικτικό βήμα από τους συμβολομεταφραστές (assembly) και από τις γλώσσες χαμηλού επιπέδου, έτσι και στην περίπτωση των βάσεων δεδομένων το DBMS, πράγματι,
Λαμβανομένων υπόψη της καθιέρωσης αυτής της υψηλότερης έννοιας του μη διαδικασιακού προγραμματισμού και της αποδοχής των τριών επιπέδων σχεδίασης μιας βάσης (εννοιολογικό, λογικό, και φυσικό), καθώς επίσης και της αποδοχής των εννοιών του σχήματος, υποσχήματος και φυσικού σχήματος από όλες ανεξαιρέτως τις κατηγορίες των χρηστών, θεωρείται πλέον αξίωμα ότι δεν νοείται ανάπτυξη εφαρμογών και πληροφοριακών συστημάτων, γενικώς, χωρίς τη χρήση ενός DBMS. αποτελεί ένα αναγκαίο προχωρημένο βήμα από τις γλώσσες 3ης γενιάς. Η διαφορά είναι ότι, ενώ τόσο οι γλώσσες χαμηλού επιπέδου όσο και οι γλώσσες 3ης γενιάς προσφέρουν μόνο διαδικασιακές εντολές (δηλαδή εντολές για την υλοποίηση αλγορίθμων), ένα σύγχρονο DBMS προσφέρει παράλληλα και μη διαδικασιακές εντολές (δηλαδή, εντολές που βασίζονται κυρίως στη σχεσιακή άλγεβρα και στο σχεσιακό λογισμό). Η μη διαδικασιακή προσέγγιση στην ανάπτυξη πληροφοριακών συστημάτων, απλούστατα, επιτρέπει τη δήλωση του «τι πρέπει να γίνει» και όχι του «πώς θα γίνει».
Η βιβλιογραφία σήμερα έχει κατακλυστεί από πληθώρα επιστημονικών εργασιών πάνω στο θέμα αυτό, καθώς και πάνω στις ποικιλόμορφες εφαρμογές των βάσεων δεδομένων, γενικώς. Ωστόσο, ελάχιστα βιβλία αναφέρονται και στα τρία επίπεδα, καθώς και στα αντίστοιχα μοντέλα δεδομένων (δηλαδή, στους εναλλακτικούς τρόπους σύνδεσης διαφορετικών τύπων λογικών και φυσικών εγγραφών). Παράλληλα, τα περισσότερα βιβλία δεν περιλαμβάνουν παραδείγματα που προέρχονται από πραγματικά περιβάλλοντα εφαρμογών, με αποτέλεσμα ο χρήστης να μην είναι σε θέση να εκτιμήσει τον τρόπο με τον οποίο ένα σύγχρονο DBMS αντιμετωπίζει το χειρισμό μιας βάσης δεδομένων.
Το βιβλίο αυτό καλύπτει τα προαναφερόμενα θέματα, παρουσιάζοντας την αρχιτεκτονική ενός σύγχρονου συστήματος λογισμικού διαχείρισης βάσεων δεδομένων και τα διάφορα επίπεδα στα οποία εφαρμόζεται, ανεξάρτητα από τυχόν λογισμικό που πωλείται σήμερα στην αγορά και το οποίο κατά ένα μεγάλο ποσοστό δεν βασίζεται σε διεθνώς αποδεκτά πρότυπα. Ο θεμελιώδης σκοπός του βιβλίου αυτού είναι να απομυθοποιήσει τις έννοιες που υπεισέρχονται σε όλα τα επίπεδα μιας βάσης και, ταυτόχρονα, να εξηγήσει με τον απλούστερο δυνατό τρόπο και με πραγματικά παραδείγματα τα σημαντικότερα μοντέλα δεδομένων, που είναι τα ακόλουθα: (α) ιεραρχικό, (β) δικτυωτό, και (γ) σχεσιακό.
Η έμφαση δίνεται στο σχεσιακό και στο δικτυωτό μοντέλο, επειδή αυτά προσφέρουν ένα πιο ευέλικτο και ολοκληρωμένο περιβάλλον για την πλειοψηφία των εφαρμογών. Επιπροσθέτως, το δικτυωτό πρότυπο χρησιμοποιεί ιεραρχικές δομές για να αναπαραστήσει δίκτυα και, κατά συνέπεια, υπερκαλύπτει τις βασικές δομές όλων των κατηγοριών των ιεραρχικών περιβαλλόντων των οργανισμών.
Όλες ανεξαιρέτως οι περιπτώσεις στηλών, πινάκων, συσχετίσεων και σχημάτων αναλύονται με βάση πραγματικά παραδείγματα και με πραγματικές εντολές του DBMS. Η παρουσίαση αποφεύγει περιττές και μακροσκελείς εισαγωγές στις επιμέρους έννοιες, ενώ, παράλληλα, γίνεται με ευθείες, πρακτικές και ακριβείς αναφορές πάνω στο "τι είναι", "πώς λειτουργεί" και "πώς μπορεί να εφαρμοστεί". Οι έννοιες και η μέθοδος παρουσίασης είναι τελείως ανεξάρτητες από το υλισμικό (hardware), καθώς και από τα υπάρχοντα στην αγορά DBMS. Ο αναγνώστης που θα κατανοήσει και θα κάνει κτήμα του την ύλη που παρουσιάζεται εδώ, θα είναι σε θέση να αξιολογήσει την επάρκεια οποιουδήποτε λογισμικού βάσης δεδομένων, ασχέτως του εάν αυτό προσφέρεται σε έναν μικροϋπολογιστή, σε ένα σταθμό εργασίας ή σε ένα μεγάλο σύστημα. Επιπλέον, οι πρότυπες εντολές ISO που περιγράφονται προσφέρουν ένα μέτρο σύγκρισης με εμπορικά μα πακέτα λογισμικού.
Όσον αφορά τα πρότυπα, ο διεθνής οργανισμός τυποποίησης ISO (International Standards Organization) έχει υιοθετήσει τη σχεσιακή βάσης δεδομένων RDL (Relational Database Language), αλλιώς γνωστή ως SQL (Structured Query Language), και τη δικτυωτή βάσης δεδομένων NDL (Network Database Language). Όλες οι εντολές των γλωσσών αυτών παρουσιάζονται σε συνάρτηση με τα επιμέρους προβλήματα που επιλύουν, έτσι ώστε να κατανοούνται από τον αναγνώστη πλήρως (α) τα δεδομένα εισόδου, (β) το ακριβές συντακτικό και ο ρόλος των επιμέρους φράσεων κάθε εντολής, (γ) οι σχέσεις κάθε εντολής με άλλες, (δ) ο τρόπος έκδοσης και εκτέλεσης κάθε εντολής, και (ε) τα αποτελέσματα που παράγονται.
Το βιβλίο δίνει έμφαση στη χρήση εντολών της SQL, καθότι η γλώσσα αυτή έχει εδραιωθεί σε παγκόσμιο επίπεδο, με αποτέλεσμα να μην υπάρχει σχεδόν καμία άλλη αντίπαλη γλώσσα. Οι κυριότεροι λόγοι επικράτησης της SQL είναι η φιλική διεπαφή που προσφέρει στο χρήστη, αφού όλα τα στοιχεία επεξεργασίας εντάσσονται μέσα σε απλούς πίνακες δύο διαστάσεων, καθώς επίσης και το γεγονός ότι η γλώσσα αυτή στηρίζεται στη σχεσιακή άλγεβρα, πράγμα που εξασφαλίζει συνέπεια, αξιοπιστία και σαφήνεια στο χειρισμό των πινάκων. Στο Παράρτημα Α παρουσιάζεται το συντακτικό όλων των εντολών και των επιμέρους φράσεων της SQL, στο Παράρτημα Β παρουσιάζονται παραδείγματα εντολών σε MS ASP.NET, και στο Παράρτημα Γ παρουσιάζονται οι τυποποιημένοι κωδικοί σφαλμάτων της SQL.
Η ύλη του βιβλίου καλύπτει τις ακόλουθες περιοχές και θεματικές ενότητες:
(α) ΒΑΣΙΚΕΣ ΑΡΧΕΣ: Αρχεία, μετα-αρχεία και προγράμματα 3ης γενιάς, στοιχειώδεις λειτουργίες (δημιουργία, εισαγωγή, διαγραφή, τροποποίηση, και ανάκτηση), πολυγλωσσικά σύνολα χαρακτήρων, ασφάλεια πινάκων, όψεων, συνόλων χαρακτήρων και πεδίων δεδομένων.
(β) ΤΑ ΤΡΙΑ ΑΡΧΙΤΕΚΤΟΝΙΚΑ ΕΠΙΠΕΔΑ: λογικό σχήμα, λογικό υποσχήμα, εσωτερικό σχήμα, πρότυπο λογισμικό και η βάση, φιλοξενούσα γλώσσα, κατηγορίες χρηστών.
(γ) ΔΟΜΕΣ ΚΑΙ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ: συσχετίσεις και
κλειδιά, ιεραρχικό, δικτυωτό και σχεσιακό μοντέλο, σχεσιακή ορολογία, κανονικοποίηση σχέσεων.
(δ) ΔΙΑΚΗΡΥΞΕΙΣ ΑΡΧΩΝ: κανόνες τρίτης γενιάς, κανόνες
αντικειμενοστρεφούς μοντέλου, τύποι δεδομένων, συναρτήσεις,
ακεραιότητα εγγραφών, σύνθεση του λογικού σχήματος.
(ε) ΠΟΛΥΣΧΗΜΑΤΙΚΕΣ ΒΑΣΕΙΣ: σχήμα, μετα-σχήμα, κατάλογος σχημάτων, λεξικό δεδομένων, η δομή της φιλοξενούσας γλώσσας, προσωρινοί πίνακες, δρομείς, διαδικασίες, τεχνικές σύνδεσης με τη βάση, σύνοδοι, συναλλαγές, έλεγχος σφαλμάτων.
(στ) ΑΛΓΕΒΡΙΚΟΙ ΧΕΙΡΙΣΜΟΙ ΠΙΝΑΚΩΝ: ένωση, τομή, διαφορά, επιλογή, προβολή, σύνδεση, διαίρεση, γινόμενο, εναλλακτικά σύνολα πράξεων, ισοδυναμία αλγεβρικών πράξεων, βελτιστοποίηση επερωτήσεων.
(ζ) ΛΟΓΙΚΟΙ ΕΛΕΓΧΟΙ: μετονομασία στοιχείων, αυτοσύνδεση, τριαδική λογική, φράσεις ελέγχου τιμών, αλγεβρικοί χειρισμοί πινάκων με τη χρήση της SQL.
(η) ΔΙΚΤΥΩΤΗ ΓΛΩΣΣΑ ΒΑΣΗΣ: δομή του λογικού σχήματος, σύνολο, ιδιοκτήτης, μέλος, ταξινόμηση, ένταξη εγγραφών σε σύνολα, επιλογή συνόλου, υποσχήμα, χειρισμός εγγραφών.
(θ) ΠΑΡΟΝ ΚΑΙ ΜΕΛΛΟΝ: δυναμική κλήση διαδικασιών, CLI (Call Level Interface) και ODBC (Open DataBase Connectivity), επίπεδα συμβατότητας API (Application Programming Interface), επίπεδα συμβατότητας SQL, τύποι οδηγών ODBC, ενότητες τύπου PSM (Persistent Stored Module), διεγερτικές διαδικασίες, αναδρομικές συνδέσεις, ένα νέο πλαίσιο ορισμού δεδομένων.
Το βιβλίο θα είναι χρήσιμο σε όλους εκείνους που θέλουν να αποκτήσουν μια σύγχρονη, εμπεριστατωμένη και ολοκληρωμένη γνώση στο θέμα του λογισμικού των βάσεων δεδομένων, καθώς και να κατανοήσουν τη σχετική ορολογία και τις τεχνικές ανάπτυξης εφαρμογών. Επειδή η ύλη του βιβλίου δεν προϋποθέτει γνώση των συστημάτων βάσεων δεδομένων, αλλά στοιχειώδη γνώση υπολογιστών και προγραμματισμού, συνιστάται σε:
(α) Προπτυχιακούς φοιτητές ΑΕΙ και ΤΕΙ.
(Β) Μεταπτυχιακούς φοιτητές που επιθυμούν να χρησιμοποιήσουν το λογισμικό της βάσης ως εργαλείο για το χειρισμό δεδομένων.
(γ) Προγραμματιστές που πρόκειται να αρχίσουν να προγραμματίζουν κάτω από ένα περιβάλλον DBMS.
(δ) Αναλυτές συστημάτων που αναλαμβάνουν να εκτιμήσουν τη σκοπιμότητα εισαγωγής ενός DBMS σε έναν οργανισμό.
(ε) Διαχειριστές βάσεων δεδομένων που επιθυμούν να αποκτήσουν επαρκή και ολοκληρωμένη γνώση γύρω από την αρχιτεκτονική των βάσεων δεδομένων, τις σχετικές με αυτή δομές και ενότητες λογισμικού, καθώς και τις τεχνικές όσον αφορά την εγκατάσταση και τη συντήρηση της βάσης.
(στ) Διευθυντές Μηχανογράφησης που πρόκειται να αξιολογήσουν προτάσεις για μηχανογράφηση ή μηχανοργάνωση και να καθορίσουν κατάλληλες διοικητικές θέσεις για την αποτελεσματική υποστήριξη τόσο της βάσης δεδομένων όσο και ολόκληρου του πληροφοριακού συστήματος.
Ευχαριστώ τη Ζωή Σαράντη-Βαρναλίδη και την Ελένη Ξιάρχου για τις υποδείξεις που έκαναν πάνω στα κείμενα.
Εμμανουήλ I. Γιαννακουδάκης
eyan@aueb.gr