Συστήματα Βάσεων Δεδομένων 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

 

Περιεχόμενα

ΠΡΟΛΟΓΟΣ 15
ΚΕΦΑΛΑΙΟ 1 21
ΑΡΧΕΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ
1.1 ΑΕΑΟΜΕΝΑ ΚΑΙ ΠΛΗΡΟΦΟΡΙΕΣ 21
1.2 ΕΠΙΚΟΙΝΩΝΙΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΕ ΑΡΧΕΙΟ 27
1.3 ΕΠΙΚΟΙΝΩΝΙΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΕ ΜΕΤΑ-ΑΡΧΕΙΟ 33
1.4 ΠΡΟΣ ΕΝΑ ΣΥΣΤΗΜΑ ΒΑΣΗΣ ΑΕΑΟΜΕΝΩΝ. 40
1.4.1 Η ΕΝΝΟΙΟΛΟΓΙΚΗ ΑΡΧΗ. 47
1.4.2 Η ΑΡΧΗ ΤΗΣ ΑΥΤΑΡΚΕΙΑΣ 47
1.5 ΛΟΓΙΣΜΙΚΟ ΥΨΗΛΟΥ ΕΠΙΠΔΟΥ 47
1.5.1 ΕΝΤΟΛΗ CREATE TABLE 49
1.5.2 ΕΝΤΟΛΗ ALTER TABLE 54
1.5.3 ΕΝΤΟΛΗ DROP TABLE 56
1.5.4 ΕΝΤΟΛΗ INSERT INTO TABLE 57
1.5.5 ΕΝΤΟΛΗ UPDATE TABLE 59
1.5.6 ΕΝΤΟΛΗ DELETE FROM TABLE 61
1.5.7 ΕΝΤΟΛΗ SELECT FROM TABLE 62
1.6 ΣΥΝΟΛΑ ΧΑΡΑΚΤΗΡΩΝ 68
1.6.1 ΟΡΙΣΜΟΣ ΣΥΝΟΛΟΥ ΧΑΡΑΚΤΗΡΩΝ 70
1.6.2 ΟΡΙΣΜΟΣ ΔΙΑ ΤΑΞΙΝΟΜΙΚΗΣ ΣΕΙΡΑΣ 71
1.6.3 ΟΡΙΣΜΟΣ ΚΑΝΟΝΩΝ ΜΕΤΑΤΡΟΠΗΣ 72
1.6.4 ΣΥΝΑΡΤΗΣΕΙΣ ΣΥΜΒΟΑΟΣΕΙΡΩΝ 73
1.7 ΑΣΦΑΛΕΙΑ ΑΕΑΟΜΕΝΩΝ 75
1.7.1 ΠΙΝΑΚΕΣ ΚΑΙ ΟΨΕΙΣ 75
1.7.2 ΠΕΔΙΑ ΟΡΙΣΜΟΥ ΚΑΙ ΣΥΝΟΛΑ ΧΑΡΑΚΤΗΡΩΝ 78
1.8 ΠΕΡΙΛΗΨΗ. 80
ΚΕΦΑΛΑΙΟ 2 83
ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ ΒΑΣΗΣ
2.1 ΑΡΧΕΣ ΑΝΕΞΑΡΤΗΣΙΑΣ ΔΕΔΟΜΕΝΩΝ 83
2.2 ΦΥΣΙΚΗ ΑΝΕΞΑΡΤΗΣΙΑ 86
2.3 ΛΟΓΙΚΗ ΑΝΕΞΑΡΤΗΣΙΑ 89
2.4 ΠΡΟΤΥΠΟ ΛΟΓΙΣΜΙΚΟ ΚΑΙ Η ΒΑΣΗ. 92
2.5 ΦΙΛΟΞΕΝΟΥΣΑ ΓΛΩΣΣΑ 97
2.6 ΤΡΙΑ ΑΡΧΙΤΕΚΤΟΝΙΚΑ ΕΠΙΠΕΔΑ 101
2.6.1 ΛΟΓΙΚΟ ΣΧΗΜΑ 102
2.6.2 ΛΟΓΙΚΟ ΥΠΟΣΧΗΜΑ 106
2.6.3 ΕΣΩΤΕΡΙΚΟ ΣΧΗΜΑ 111
2.7 ΔΥΝΑΜΙΚΗ ΣΥΝΘΕΣΗ ΕΝΤΟΛΩΝ 116
2.8 ΔΥΝΑΜΙΚΗ ΚΛΗΣΗ CLI 118
2.9 ΚΑΤΗΓΟΡΙΕΣ ΧΡΗΣΤΩΝ 121
2.9.1 ΔΙΑΧΕΙΡΙΣΤΗΣ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ 122
2.9.2 ΜΗΧΑΝΙΚΟΣ ΛΟΓΙΣΜΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ 124
2.9.3 ΑΝΑΛΥΤΗΣ ΕΦΑΡΜΟΓΩΝ 125
2.9.4 ΠΡΟΓΡΑ ΜΜΑ ΤΙΣΤΗΣ ΕΦΑΡΜΟΓΩΝ 126
2.9.5 ΓΕΝΙΚΟΣ ΧΡΗΣΤΗΣ 127
2.10 ΟΛΟΚΛΗΡΩΣΗ ΛΟΓΙΣΜΙΚΟΥ 127
2.11 ΠΕΡΙΛΗΨΗ 133
ΚΕΦΑΛΑΙΟ 3 135
ΔΟΜΕΣ ΚΑΙ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ
3.1 ΕΙΣΑΓΩΓΗ 135
3.2 ΣΥΝΔΕΣΗ ΣΤΟΙΧΕΙΩΝ 137
3.3 ΔΟΜΕΣ ΚΑΙ ΣΥΣΧΕΤΙΣΕΙΣ 142
3.3.1 Δ Ο ΜΕΣ ΜΕ ΚΛΕΙΔΙΑ 142
3.3.2 ΔΟΜΕΣ ΔΕΝΔΡΩΝ 152
3.4 ΙΕΡΑΡΧΙΚΑ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ 155
3.5 ΔΙΚΤΥΩΤΑ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ 159
3.6 ΣΧΕΣΙΑΚΑ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ 171
3.6.1 ΣΧΕΣΙΑΚΗ ΟΡΟΛΟΓΙΑ 173
3.6.2 ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΣΧΕΣ1ΑΚΩΝ ΜΟΝΤΕΛΩΝ 175
3.6.3 ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΣΧΕΣΕΩΝ 180
3.7 ΠΕΡΙΛΗΨΗ 188
ΚΕΦΑΛΑΙΟ 4 191
ΔΙΑΚΗΡΥΞΕΙΣ ΑΡΧΩΝ
4.1 ΕΙΣΑΓΩΓΗ 191
4.2 ΚΑΝΟΝΕΣ CODD: ΠΡΩΤΗ ΕΚΔΟΣΗ 193
4.3 ΚΑΝΟΝΕΣ CODD: ΔΕΥΤΕΡΗ ΕΚΔΟΣΗ 199
4.4 ΚΑΝΟΝΕΣ ΑΝΉΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΜΟΝΤΕΛΟΥ 207
4.5 ΚΑΝΟΝΕΣ ΤΡΙΤΗΣ ΓΕΝΙΑΣ 210
4.6 ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ 213
4.7 ΣΥΝΑΡΤΗΣΕΙΣ 225
4.8 ΑΚΕΡΑΙΟΤΗΤΑ ΕΓΓΡΑΦΩΝ 235
4.8.1 ΠΕΡΙΟΡΙΣΜΟΙ 237
4.8.2 ΠΕΔΙΑ ΤΙΜΩΝ 246
4.9 ΜΕΤΑΤΡΟΠΕΣ ΚΑΙ ΣΥΓΚΡΙΣΕΙΣ 251
4.10 ΣΥΝΘΕΣΗ ΣΧΗΜΑΤΟΣ 256
ΚΕΦΑΛΑΙΟ 5 265
ΟΛΟΚΛΗΡΩΜΕΝΟ ΠΑΡΑΔΕΙΓΜΑ ΜΟΝΤΕΛΟΥ
5.1 ΕΙΣΑΓΩΓΗ 265
5.2 ΑΝΑΛΥΣΗ ΟΝΤΟΤΗΤΩΝ 267
5.3 ΑΝΑΛΥΣΗ ΣΥΣΧΕΤΙΣΕΩΝ 270
5.4 ΔΗΜΙΟΥΡΓΙΑ ΛΟΓΙΚΟΥ ΜΟΝΤΕΛΟΥ 274
5.4.1 ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΣΧΗΜΑ ΤΟΣ 277
5.4.2 ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΚΟΥ ΣΧΗΜΑΤΟΣ 282
5.5 ΔΗΜΙΟΥΡΓΙΑ ΛΕΞΙΚΟΥ ΔΕΔΟΜΕΝΩΝ 289
5.6 ΔΗΜΙΟΥΡΓΙΑ ΥΠΟΣΧΗΜΑΤΟΣ 291
5.6.1 ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΥΠΟΣΧΗΜΑΤΟΣ 292
5.6.2 ΥΛΟΠΟΙΗΣΗ ΥΠΟΣΧΗΜΑΤΟΣ 294
5.7 ΠΕΡΙΛΗΨΗ
ΚΕΦΑΛΑΙΟ 6 297
ΠΟΛΥΣΧΗΜΑΤΙΚΕΣ ΒΑΣΕΙΣ
6.1 ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ 297
6.2 ΜΕΤΑ-ΣΧΗΜΑΤΑ 300
6.2.1 ΜΕΤΑ-ΣΤΟΙΧΕΙΑ TOY INFORMATION SCHEMA 301
6.3 ΛΕΞΙΚΟ ΔΕΔΟΜΕΝΩΝ 302
6.3.1 ΣΤΟΧΟΙ ΚΑΙ ΣΚΟΠΟΙ 302
6.3.2 ΤΟ ΛΕΞΙΚΟ ΚΑΙ Η ΒΑΣΗ. 307
6.4 ΦΙΛΟΞΕΝΟΥΣΑ ΓΛΩΣΣΑ 313
6.4.1 ΕΝΣΩΜΑΤΩΣΗ ΕΝΤΟΛΩΝ SQL 314
6.4.2 ΣΥΝΘΕΣΗ ΕΝΟΤΗΤΩΝ. 317
6.4.3 ΑΝΤΙΣΤΟΙΧΙΑ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ. 319
6.5 ΠΡΟΣΩΡΙΝΟΙ ΠΙΝΑΚΕΣ 321
6.5.1 ΔΗΛΩΣΗ ΠΡΟΣΩΡΙΝΩΝ ΠΙΝΑΚΩΝ. 322
6.5.2 ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΣΩΡΙΝΩΝ ΠΙΝΑΚΩΝ. 324
6.6 ΔΡΟΜΕΙΣ 326
6.6.1 ΔΗΜΙΟΥΡΓΙΑ ΔΡΟΜΕΩΝ. 328
6.6.2 ΑΝΟΙΓΜΑ ΔΡΟΜΕΩΝ 330
6.6.3 ΚΛΕΙΣΙΜΟ ΔΡΟΜΕΩΝ 331
6.6.4 ΠΡΟΣΠΕΛΑΣΗ ΠΛΕΙΑΔΩΝ ΔΡΟΜΕΩΝ 331
6.6.5 ΔΙΑΓΡΑΦΗ ΠΛΕΙΑΔΩΝ ΔΡΟΜΕΩΝ 333
6.6.6 ΤΡΟΠΟΠΟΙΗΣΗ ΠΛΕΙΑΔΩΝ ΔΡΟΜΕΩΝ. 333
6.7 ΔΙΑΔΙΚΑΣΙΕΣ 335
6.8 ΣΥΝΔΕΣΗ ΜΕ ΤΗ ΒΑΣΗ 340
6.8.1 ΣΥΝΔΕΣΗ ΜΕ ΕΞΥΠΗΡΕΤΗΤΗ. 341
6.8.2 ΕΠΙΛΟΓΗ ΣΥΝΔΕΣΗΣ 341
6.8.3 ΔΙΑΚΟΠΗ ΣΥΝΔΕΣΗΣ 342
6.9 ΣΥΝΟΔΟΙ 342
6.10 ΣΥΝΑΛΛΑΓΕΣ 344
6.10.1 ΔΕΣΜΕΥΣΗ ΤΡΟΠΟΠΟΙΗΣΕΩΝ. 344
6.10.2 ΑΚΥΡΩΣΗ ΤΡΟΠΟΠΟΙΗΣΕΩΝ 345
6.10.3 ΠΡΟΕΤΟΙΜΑΣΙΑ ΝΕΑΣ ΣΥΝΑΛΛΑΓΗΣ 345
6.10.4 ΕΝΕΡΓΟΠΟΙΗΣΗ ΠΕΡΙΟΡΙΣΜΩΝ 347
6.10.5 ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ 349
6.11 ΕΛΕΓΧΟΣ ΣΦΑΛΜΑ ΤΩΝ 353
6.11.1 ΕΝΤΟΛΗ WHENEVER 355
6.11.2 ΕΝΤΟΛΗ GET DIAGNOSTICS 357
ΚΕΦΑΛΑΙΟ 7 361
ΠΑΡΑΔΕΙΓΜΑ ΣΥΝΔΕΣΗΣ ΜΕ ΤΗ ΒΑΣΗ
7.1 ΛΟΓΙΚΟ ΣΧΗΜΑ 361
7.2 ΛΟΓΙΚΟ ΥΠΟΣΧΗΜΑ 363
7.3 ΟΡΙΣΜΟΣ ΕΝΟΤΗΤΑΣ 365
7.4 ΦΙΛΟΞΕΝΟΥΣΑ ΓΛΩΣΣΑ C – MODULE 370
7.5 ΦΙΛΟΞΕΝΟΥΣΑ ΓΛΩΣΣΑ C – EXEC 373
ΚΕΦΑΛΑΙΟ 8 379
ΘΕΜΕΛΙΩΔΕΙΣ ΑΛΓΕΒΡΙΚΟΙ ΧΕΙΡΙΣΜΟΙ
8.1 ΕΙΣΑΓΩΓΗ. 379
8.2 ΑΝΑΚΥΚΛΩΣΕΙΣ 380
8.3 ΠΕΡΙΒΑΛΛΟΝ ΧΕΙΡΙΣΜΟΥ. 383
8.4 ΘΕΜΕΛΙΩΔΕΙΣ ΑΛΓΕΒΡΙΚΕΣ ΠΡΑΞΕΙΣ 385
8.4.1 ΕΝΩΣΗ. 386
8.4.2 ΤΟΜΗ. 387
8.4.3 ΔΙΑΦΟΡΑ 388
8.4.4 ΕΠΙΛΟΓΗ. 389
8.4.5 ΠΡΟΒΟΛΗ. 391
8.4.6 ΣΥΝΔΕΣΗ. 392
8.4.7 ΔΙΑΙΡΕΣΗ 394
8.4.8 ΓΙΝΟΜΕΝΟ 395
8.5 ΟΡΙΣΜΟΣ ΥΠΟΣΧΗΜΑΤΩΝ 397
8.6 ΕΝΑΛΛΑΚΤΙΚΑ ΣΥΝΟΛΑ ΠΡΑΞΕΩΝ. 400
8.7 ΙΣΟΔΥΝΑΜΙΑ ΑΛΓΕΒΡΙΚΩΝ ΠΡΑΞΕΩΝ 402
8.8 ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΕΠΕΡΩΤΗΣΕΩΝ 409
ΚΕΦΑΛΑΙΟ 9 413
ΛΟΓΙΚΟΙ ΕΛΕΓΧΟΙ ΚΑΙ ΣΥΝΘΕΣΗ ΠΙΝΑΚΩΝ
9.1 ΜΕΤΟΝΟΜΑΣΙΑ ΣΤΟΙΧΕΙΩΝ 413
9.2 ΑΥΤΟΣΥΝΔΕΣΗ 416
9.3 ΤΡΙΑΔΙΚΗ ΛΟΓΙΚΗ 418
9.4 ΦΡΑΣΕΙΣ ΕΛΕΓΧΟΥ ΤΙΜΩΝ. 420
9.5 ΕΝΩΣΗ ΠΙΝΑΚΩΝ 428
9.6 ΤΟΜΗ ΠΙΝΑΚΩΝ 430
9.7 ΔΙΑΦΟΡΑ ΠΙΝΑΚΩΝ 431
9.8 ΕΠΙΛΟΓΗ ΠΛΕΙΑΔΩΝ 432
9.9 ΠΡΟΒΟΛΗ ΣΤΗΛΩΝ 433
9.10 ΣΥΝΔΕΣΗ ΠΙΝΑΚΩΝ 434
9.11 ΚΑΡΤΕΣΙΑΝΟ ΓΙΝΟΜΕΝΟ 439
ΚΕΦΑΛΑΙΟ 10 441
ΔΙΚΤΥΩΤΗ ΓΛΩΣΣΑ ΒΑΣΗΣ
10.1 ΕΙΣΑΓΩΓΗ 441
10.2 ΔΟΜΗ ΛΟΓΙΚΟΥ ΣΧΗΜΑΤΟΣ 443
10.3 ΤΑΞΙΝΟΜΗΣΗ ΕΓΓΡΑΦΩΝ 448
10.4 ΕΝΤΑΞΗ ΕΓΓΡΑΦΩΝ ΣΕ ΣΥΝΟΛΑ 450
10.5 ΕΠΙΛΟΓΗ ΣΥΝΟΛΟΥ. 454
10.6 ΟΡΙΣΜΟΣ ΥΠΟΣΧΗΜΑΤΟΣ 457
10.7 ΧΕΙΡΙΣΜΟΣ ΕΓΓΡΑΦΩΝ 458
10.8 ΟΛΟΚΛΗΡΩΜΕΝΟ ΠΑΡΑΔΕΙΓΜΑ 465
10.8.1 ΛΟΓΙΚΟ ΣΧΗΜΑ 465
10.8.2 ΛΟΓΙΚΟ ΥΠΟΣΧΗΜΑ 471
ΚΕΦΑΛΑΙΟ 11 473
ΠΑΡΟΝ ΚΑΙ ΜΕΛΛΟΝ
11.1 ΕΙΣΑΓΩΓΗ 473
11.2 ΔΥΝΑΜΙΚΗ ΚΛΗΣΗ CLI ΚΑΙ ODBC 474
11.2.1 Η ΕΞΕΛΙΞΗ TOY ODBC 475
11.2.2 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ TOY ODBC 477
11.2.3 ΕΝΑΛΛΑΚΤΙΚΕΣ ΠΡΟΣΕΓΓΙΣΕΙΣ 481
11.2.4 ΕΠΙΠΕΑΑ ΣΥΜΒΑΤΟΤΗΤΑΣ API 483
11.2.5 ΕΠΙΠΕΔΑ ΣΥΜΒΑΤΟΤΗΤΑΣ SQL 485
11.2.6 ΤΥΠΟΙ ΟΔΗΓΩΝ ODBC 487
11.2.7 ΑΞΙΟΠΟΙΗΣΗ ΠΟΛΛΑΠΛΩΝ ΣΧΗΜΑ ΤΩΝ 488
11.2.8 ΠΑΡΑΔΕΙΓΜΑ ΕΦΑΡΜΟΓΗΣ ODBC 489
11.2.9 MFC ΚΑΙ ODBC 491
11.2.10 ODBC ΚΑΙ OLE 492
11.3 ΔΗΜΙΟΥΡΓΙΑ ΕΝΟΤΗΤΩΝ PSM 493
11.3.1 ΕΝΤΟΛΕΣ ΤΥΠΟΥ PSM. 495
11.3.2 ΠΑΡΑΔΕΙΓΜΑΤΑ ΤΥΠΟΥ PSM. 504
11.4 ΔΙΕΓΕΡΤΙΚΕΣ ΔΙΑΔΙΚΑΣΙΕΣ 506
11.5 ΑΝΑΔΡΟΜΙΚΕΣ ΣΥΝΔΕΣΕΙΣ 5/0
11.6 ΤΟ ΜΕΛΛΟΝ 513
ΠΑΡΑΡΤΗΜΑ A 517
ΓΡΑΜΜΑΤΙΚΗ ΤΗΣ SQL
Α.1 ΓΕΝΙΚΟΙ ΟΡΙΣΜΟΙ 518
Α.2 ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ 520
Α.3 ΟΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ. 522
Α.4 ΣΥΝΘΕΣΗ ΠΙΝΑΚΩΝ 527
Α.5 ΠΕΡΙΟΡΙΣΜΟΙ 528
Α.6 ΕΝΟΤΗΤΕΣ ΛΟΓΙΣΜΙΚΟΥ. 530
Α.7 ΣΥΝΔΕΣΗ ΜΕ ΤΗ ΒΑΣΗ ΚΑΙ ΣΥΝΑΛΛΑΓΕΣ. 530
Α.8 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ. 532
Α.9 ΛΟΓΙΚΕΣ ΣΥΝΘΗΚΕΣ 533
Λ. 10 ΔΥΝΑΜΙΚΑ ΟΡΙΖΟΜΕΝΕΣ ΦΡΑΣΕΙΣ 535
ΠΑΡΑΡΤΗΜΑ Β 539
ΠΑΡΑΔΕΙΓΜΑΤΑ ΕΠΙΚΛΗΣΗΣΕΝΤΟΑΩΝ SQL
Β.1 ΣΥΝΘΕΣΗ ΕΝΤΟΛΩΝ – ΕΝΕΣΕΙΣ 539
Β.2 ΠΑΡΑΔΕΙΓΜΑ ΤΑ ΣΕ ASP.NET. 540
Β. 3 ΠΑΡΑΔΕΙΓΜΑ ΣΕ Java 544
Β.4 ΠΑΡΑΔΕΙΓΜΑ ΔΙΑΔΙΚΑΣΙΑΣ SQL 552
ΠΑΡΑΡΤΗΜΑ Γ 555
ΚΩΔΙΚΟΙ ΣΦΑΛΜΑΤΩΝ SQL
ΒΙΒΛΙΟΓΡΑΦΙΑ 559
ΑΚΡΩΝΥΜΙΑ 565
ΕΥΡΕΤΗΡΙΟ 569