Βάσεις Δεδομένων

Γιαννακουδάκης Εμμανουήλ

 

A΄ Έκδοση

 

Εκδότης: Μπένου Ε.
Μορφή: Μαλακό εξώφυλλο
Αριθμός σελίδων: 1024
Κωδικός ISBN: 978-960-359-114-6
Διαστάσεις: 17 × 24 εκ.
Κωδ. Εύδοξος: 112694420

Η σχεδίαση και ο προγραμματισμός σύγχρονων πληροφοριακών συστημάτων, γενικώς, στηρίζεται σε καθιερωμένες λογικές και φυσικές μονάδες συσχέτισης και αποθήκευσης στοιχείων, οι οποίες σχηματίζουν μια ιεραρχία. Οι μονάδες αυτές είναι το πεδίο που χρησιμοποιείται για τη σύνθεση εγγραφών, οι οποίες με τη σειρά τους χρησιμοποιούνται για τη δημιουργία μιας μεγαλύτερης μονάδας, που είναι το αρχείο. Οι εφαρμογές που στηρίζονται σε παραδοσιακές γλώσσες 3ης γενιάς συνήθως θεωρούν το αρχείο ως την ανώτατη "μονολιθική" μονάδα σύνδεσης και επεξεργασίας δεδομένων. Η ιεραρχία αυτή, βεβαίως, περιορίζει σε μεγάλο βαθμό την ευελιξία, καθώς και τη δυναμική επέκταση των εφαρμογών. Κυρίως, όμως, η ιεραρχία αυτή δεν επιτρέπει τη δυναμική σύνθεση οντοτήτων και εννοιολογικών εγγραφών, έτσι ώστε να εξασφαλίζεται η εξατομικευμένη εξυπηρέτηση των χρηστών.

Τα συστήματα βάσεων δεδομένων δεν καταργούν τις παραπάνω τρεις μονάδες θεωρώντας τις απαρχαιωμένες έννοιες, αλλά, αντιθέτως, τις επεκτείνουν, καθιερώνοντας υψηλότερες λογικές ενότητες, όπως είναι το λογικό σχήμα (ένα κατονομασμένο σύνολο τύπων εγγραφών), το υποσχήμα (ένα κατονομασμένο ιδεατό σύνολο πεδίων) και ο κατάλογος (ένα κατονομασμένο σύνολο σχημάτων). Παράλληλα, τα σύγχρονα συστήματα βάσεων δεδομένων προσφέρουν εντολές υψηλού επιπέδου για τον προσδιορισμό λογικών και φυσικών δομών, καθώς επίσης και για το χειρισμό εννοιολογικών εγγραφών (εγγραφών που είναι πολύ κοντά στο επίπεδο αναφοράς του χρήστη). Επίσης, τόσο οι ειδικοί της Πληροφορικής όσο και οι λοιποί χρήστες είναι πλέον σε θέση να καλύψουν όλες τις ανάγκες επεξεργασίας πληροφοριών ενός οργανισμού μέσα από μια ολοκληρωμένη, οργανωμένη και μεθοδική προσέγγιση.

Έτσι, λοιπόν, τα συστήματα βάσεων δεδομένων χρησιμοποιούν τις έννοιες "πεδίο" (άλλως στήλη), "εγγραφή" (άλλως πλειάδα) και "αρχείο" (άλλως πίνακας), χωρίς απαραίτητα να απαιτούν την επίκληση αυτών από τους χρήστες. Απώτερος σκοπός των συστημάτων βάσεων δεδομένων είναι να υποστηρίξουν τη λειτουργία τόσο λογικών χειρισμών – ανεξάρτητα από χειρισμούς αποθήκευσης – όσο και φυσικών χειρισμών – ανεξάρτητα από λογικούς χειρισμούς. Το σύστημα διαχείρισης βάσεων δεδομένων (DataBase Management System – DBMS) είναι το αναγκαίο λογισμικό για το σχεδιασμό, για το χειρισμό και για τη συντήρηση της βάσης δεδομένων, δηλαδή των στοιχείων ενός οργανισμού, συμπεριλαμβανομένων και κατάλληλων στοιχείων ελέγχου.

Όπως συνέβη με τις γλώσσες 3ης γενιάς (π.χ. C, Java, FORTRAN, COBOL και Pascal), οι οποίες απετέλεσαν το επόμενο εξελικτικό βήμα από τους συμβολομεταφραστές (assembly) και από τις γλώσσες χαμηλού επιπέδου, έτσι και στην περίπτωση των βάσεων δεδομένων το DBMS, πράγματι, αποτελεί ένα αναγκαίο προχωρημένο βήμα από τις γλώσσες 3ης γενιάς. Η διαφορά είναι ότι, ενώ τόσο οι γλώσσες χαμηλού επιπέδου όσο και οι γλώσσες 3ης γενιάς προσφέρουν μόνο διαδικασιακές εντολές (δηλαδή εντολές για την υλοποίηση αλγορίθμων), ένα σύγχρονο DBMS προσφέρει παράλληλα και μη διαδικασιακές εντολές (δηλαδή, εντολές που βασίζονται κυρίως στη σχεσιακή άλγεβρα και στο σχεσιακό λογισμό). Η μη διαδικασιακή προσέγγιση στην ανάπτυξη πληροφοριακών συστημάτων, απλούστατα, επιτρέπει τη δήλωση του «τι πρέπει να γίνει» και όχι του «πώς θα γίνει».

Λαμβανομένων υπόψη της καθιέρωσης αυτής της υψηλότερης έννοιας του μη διαδικασιακού προγραμματισμού και της αποδοχής των τριών επιπέδων σχεδίασης μιας βάσης (εννοιολογικό, λογικό, και φυσικό), καθώς επίσης και της αποδοχής των εννοιών του σχήματος, υποσχήματος και φυσικού σχήματος από όλες ανεξαιρέτως τις κατηγορίες των χρηστών, θεωρείται πλέον αξίωμα ότι δεν νοείται ανάπτυξη εφαρμογών και πληροφοριακών συστημάτων, γενικώς, χωρίς τη χρήση ενός DBMS.

Η βιβλιογραφία σήμερα έχει κατακλυστεί από πληθώρα επιστημονικών εργασιών πάνω στο θέμα αυτό, καθώς και πάνω στις ποικιλόμορφες εφαρμογές των βάσεων δεδομένων, γενικώς. Ωστόσο, ελάχιστα βιβλία αναφέρονται και στα τρία επίπεδα, καθώς και στα αντίστοιχα μοντέλα δεδομένων (δηλαδή, στους εναλλακτικούς τρόπους σύνδεσης διαφορετικών τύπων λογικών και φυσικών εγγραφών). Παράλληλα, τα περισσότερα βιβλία δεν περιλαμβάνουν παραδείγματα που προέρχονται από πραγματικά περιβάλλοντα εφαρμογών, με αποτέλεσμα ο χρήστης να μην είναι σε θέση να εκτιμήσει τον τρόπο με τον οποίο ένα σύγχρονο DBMS αντιμετωπίζει το χειρισμό μιας βάσης δεδομένων.

Το βιβλίο αυτό καλύπτει τα προαναφερόμενα θέματα, παρουσιάζοντας την αρχιτεκτονική ενός σύγχρονου συστήματος λογισμικού διαχείρισης βάσεων δεδομένων και τα διάφορα επίπεδα στα οποία εφαρμόζεται, ανεξάρτητα από τυχόν λογισμικό που πωλείται σήμερα στην αγορά και το οποίο κατά ένα μεγάλο ποσοστό δεν βασίζεται σε διεθνώς αποδεκτά πρότυπα. Ο θεμελιώδης σκοπός του βιβλίου αυτού είναι να απομυθοποιήσει τις έννοιες που υπεισέρχονται σε όλα τα επίπεδα μιας βάσης και, ταυτόχρονα, να εξηγήσει με τον απλούστερο δυνατό τρόπο και με πραγματικά παραδείγματα τα σημαντικότερα μοντέλα δεδομένων, που είναι τα ακόλουθα: (α) ιεραρχικό, (β) δικτυωτό, και (γ) σχεσιακό.

Η έμφαση δίνεται στο σχεσιακό και στο δικτυωτό μοντέλο, επειδή αυτά προσφέρουν ένα πιο ευέλικτο και ολοκληρωμένο περιβάλλον για την πλειοψηφία των εφαρμογών. Επιπροσθέτως, το δικτυωτό πρότυπο χρησιμοποιεί ιεραρχικές δομές για να αναπαραστήσει δίκτυα και, κατά συνέπεια, υπερκαλύπτει τις βασικές δομές όλων των κατηγοριών των ιεραρχικών περιβαλλόντων των οργανισμών.

Όλες ανεξαιρέτως οι περιπτώσεις στηλών, πινάκων, συσχετίσεων και σχημάτων αναλύονται με βάση πραγματικά παραδείγματα και με πραγματικές εντολές του DBMS. Η παρουσίαση αποφεύγει περιττές και μακροσκελείς εισαγωγές στις επιμέρους έννοιες, ενώ, παράλληλα, γίνεται με ευθείες, πρακτικές και ακριβείς αναφορές πάνω στο "τι είναι", "πώς λειτουργεί" και "πώς μπορεί να εφαρμοστεί". Οι έννοιες και η μέθοδος παρουσίασης είναι τελείως ανεξάρτητες από το υλισμικό (hardware), καθώς και από τα υπάρχοντα στην αγορά DBMS. Ο αναγνώστης που θα κατανοήσει και θα κάνει κτήμα του την ύλη που παρουσιάζεται εδώ, θα είναι σε θέση να αξιολογήσει την επάρκεια οποιουδήποτε λογισμικού βάσης δεδομένων, ασχέτως του εάν αυτό προσφέρεται σε έναν μικροϋπολογιστή, σε ένα σταθμό εργασίας ή σε ένα μεγάλο σύστημα. Επιπλέον, οι πρότυπες εντολές ΙSO που περιγράφονται προσφέρουν ένα μέτρο σύγκρισης με εμπορικά διαθέσιμα πακέτα λογισμικού.

Όσον αφορά τα πρότυπα, ο διεθνής οργανισμός τυποποίησης ISO (International Standards Organization) έχει υιοθετήσει τη σχεσιακή γλώσσα βάσης δεδομένων RDL (Relational Database Language), άλλως γνωστή ως SQL (Structured Query Language), και τη δικτυωτή γλώσσα βάσης δεδομένων NDL (Network Database Language). Όλες οι εντολές των γλωσσών αυτών παρουσιάζονται σε συνάρτηση με τα επιμέρους προβλήματα που επιλύουν, έτσι ώστε να κατανοούνται από τον αναγνώστη πλήρως (α) τα δεδομένα εισόδου, (β) το ακριβές συντακτικό και ο ρόλος των επιμέρους φράσεων κάθε εντολής, (γ) οι σχέσεις κάθε εντολής με άλλες, (δ) ο τρόπος έκδοσης και εκτέλεσης κάθε εντολής, και (ε) τα αποτελέσματα που παράγονται.

Το βιβλίο δίνει έμφαση στη χρήση εντολών της SQL, καθότι η γλώσσα αυτή έχει εδραιωθεί σε παγκόσμιο επίπεδο, με αποτέλεσμα να μην υπάρχει σχεδόν καμία άλλη αντίπαλη γλώσσα. Οι κυριότεροι λόγοι επικράτησης της SQL είναι η φιλική διεπαφή που προσφέρει στο χρήστη, αφού όλα τα στοιχεία επεξεργασίας εντάσσονται μέσα σε απλούς πίνακες δύο διαστάσεων, καθώς επίσης και το γεγονός ότι η γλώσσα αυτή στηρίζεται στη σχεσιακή άλγεβρα, πράγμα που εξασφαλίζει συνέπεια, αξιοπιστία και σαφήνεια στο χειρισμό των πινάκων. Στο Παράρτημα Α παρουσιάζεται το συντακτικό όλων των εντολών και των επιμέρους φράσεων της SQL, στο Παράρτημα Β παρουσιάζονται παραδείγματα εντολών σε MS ASP.NET, και στο Παράρτημα Γ παρουσιάζονται οι τυποποιημένοι κωδικοί σφαλμάτων της SQL.

Η ύλη του βιβλίου καλύπτει τις ακόλουθες περιοχές και θεματικές ενότητες:

(α) ΒΑΣΙΚΕΣ ΑΡΧΕΣ: Αρχεία, μετα-αρχεία και προγράμματα 3ης γενιάς, στοιχειώδεις λειτουργίες (δημιουργία, εισαγωγή, διαγραφή, τροποποίηση, και ανάκτηση), πολυγλωσσικά σύνολα χαρακτήρων, ασφάλεια πινάκων, όψεων, συνόλων χαρακτήρων και πεδίων δεδομένων.

(β) ΤΑ ΤΡΙΑ ΑΡΧΙΤΕΚΤΟΝΙΚΑ ΕΠΙΠΕΔΑ: λογικό σχήμα, λογικό υποσχήμα, εσωτερικό σχήμα, πρότυπο λογισμικό και η βάση, φιλοξενούσα γλώσσα, κατηγορίες χρηστών.

(γ) ΔΟΜΕΣ ΚΑΙ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ: συσχετίσεις και κλειδιά, ιεραρχικό, δικτυωτό και σχεσιακό μοντέλο, σχεσιακή ορολογία, κανονικοποίηση σχέσεων.

(δ) ΔΙΑΚΗΡΥΞΕΙΣ ΑΡΧΩΝ: κανόνες τρίτης γενιάς, κανόνες αντικειμενοστρεφούς μοντέλου, τύποι δεδομένων, συναρτήσεις, ακεραιότητα εγγραφών, σύνθεση του λογικού σχήματος.

(ε) ΠΟΛΥΣΧΗΜΑΤΙΚΕΣ ΒΑΣΕΙΣ: σχήμα, μετα-σχήμα, κατάλογος σχημάτων, λεξικό δεδομένων, η δομή της φιλοξενούσας γλώσσας, προσωρινοί πίνακες, δρομείς, διαδικασίες, τεχνικές σύνδεσης με τη βάση, σύνοδοι, συναλλαγές, έλεγχος σφαλμάτων. (στ) ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ & ΣΧΕΣΙΑΚΟΣ ΛΟΓΙΣΜΟΣ: βασικοί ορισμοί, σχεσιακή άλγεβρα, σχεσιακός λογισμός, σχεσιακός λογισμός πλειάδων (TRC), σχεσιακός λογισμός ορισμάτων (DRC), συμπερασματικός λογισμός, λογικές ισοδυναμίες, ανακυκλώσεις.

(ζ) ΑΛΓΕΒΡΙΚΟΙ ΧΕΙΡΙΣΜΟΙ ΠΙΝΑΚΩΝ: ένωση, τομή, διαφορά, επιλογή, προβολή, σύνδεση, διαίρεση, γινόμενο, εναλλακτικά σύνολα πράξεων, ισοδυναμία αλγεβρικών πράξεων, βελτιστοποίηση επερωτήσεων.

(η) ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΒΑΣΕΩΝ: ανάλυση οντοτήτων, τύποι συσχετίσεων, υλοποίηση συσχετίσεων, κανονικοποίηση, συναρτησιακή εξάρτηση, (β) μεταβατική εξάρτηση, και (γ) εξάρτηση πολλαπλών τιμών (πλειότιμων), κανονικές μορφές.

(θ) ΛΟΓΙΚΟΙ ΕΛΕΓΧΟΙ: μετονομασία στοιχείων, αποσύνδεση, τριαδική λογική, φράσεις ελέγχου τιμών, αλγεβρικοί χειρισμοί πινάκων με τη χρήση της SQL.

(ι) ΔΙΚΤΥΩΤΗ ΓΛΩΣΣΑ ΒΑΣΗΣ: δομή του λογικού σχήματος, σύνολο, ιδιοκτήτης, μέλος, ταξινόμηση, ένταξη εγγραφών σε σύνολα, επιλογή συνόλου, υποσχήμα, χειρισμός εγγραφών.

(κ) ΠΑΡΟΝ ΚΑΙ ΜΕΛΛΟΝ: δυναμική κλήση διαδικασιών, CLI (Call Level Interface) και ODBC (Open DataBase Connectivity), επίπεδα συμβατότητας API (Application Programming Interface), επίπεδα συμβατότητας SQL, τύποι οδηγών ODBC, ενότητες τύπου PSM (Persistent Stored Module), πυροδοτικές διαδικασίες, αναδρομικές συνδέσεις, ένα νέο πλαίσιο ορισμού δεδομένων.

(λ) ΑΣΚΗΣΕΙΣ & ΛΥΣΕΙΣ: στην ενότητα αυτή παρουσιάζουμε ασκήσεις και τις λύσεις αυτών, καλύπτοντας βασικές έννοιες των βάσεων δεδομένων.

Το βιβλίο θα είναι χρήσιμο σε όλους εκείνους που θέλουν να απο-κτήσουν σύγχρονη, εμπεριστατωμένη και ολοκληρωμένη γνώση πάνω στο θέμα του λογισμικού των βάσεων δεδομένων, καθώς και να κατανοήσουν τη σχετική ορολογία και τις τεχνικές ανάπτυξης εφαρμογών. Επειδή η ύλη του βιβλίου δεν προϋποθέτει γνώση των συστημάτων βάσεων δεδομένων, αλλά στοιχειώδη γνώση υπολογιστών και προγραμματισμού, συνιστάται σε:

(α) Προπτυχιακούς φοιτητές ΑΕΙ και ΤΕΙ.

(β) Μεταπτυχιακούς φοιτητές που επιθυμούν να χρησιμοποιήσουν το λογισμικό της βάσης ως εργαλείο για το χειρισμό δεδομένων.

(γ) Προγραμματιστές που πρόκειται να αρχίσουν να προγραμματίζουν κάτω από ένα περιβάλλον DBMS.

(δ) Αναλυτές συστημάτων που αναλαμβάνουν να εκτιμήσουν τη σκοπιμότητα εισαγωγής ενός DBMS σε έναν οργανισμό.

(ε) Διαχειριστές βάσεων δεδομένων που επιθυμούν να αποκτήσουν επαρκή και ολοκληρωμένη γνώση γύρω από την αρχιτεκτονική των βάσεων δεδομένων, τις σχετικές με αυτή δομές και ενότητες λογισμικού, καθώς και τις τεχνικές όσον αφορά την εγκατάσταση και τη συντήρηση της βάσης.

(στ) Διευθυντές Μηχανογράφησης που πρόκειται να αξιολογήσουν προτάσεις για μηχανογράφηση ή μηχανοργάνωση και να καθορίσουν κατάλληλες διοικητικές θέσεις για την αποτελεσματική υποστήριξη τόσο της βάσης δεδομένων όσο και ολόκληρου του πληροφοριακού συστήματος.

Εμμανουήλ Ι. Γιαννακουδάκης

eyan@aueb.gr

http://www.aueb.gr/Users/yannakoudakis/greek/

Περιεχόμενα

ΠΡΟΛΟΓΟΣ 15
ΚΕΦΑΛΑΙΟ 1: ΑΡΧΕΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 23
1.1 ΔΕΔΟΜΕΝΑ ΚΑΙ ΠΛΗΡΟΦΟΡΙΕΣ 23
1.2 ΕΠΙΚΟΙΝΩΝΙΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΕ ΑΡΧΕΙΟ 30
1.3 ΕΠΙΚΟΙΝΩΝΙΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΕ ΜΕΤΑ-ΑΡΧΕΙΟ 37
1.4 ΠΡΟΣ ΕΝΑ ΣΥΣΤΗΜΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ 44
1.4.1 Η ΕΝΝΟΙΟΛΟΓΙΚΗ ΑΡΧΗ 52
1.4.2 Η ΑΡΧΗ ΤΗΣ ΑΥΤΑΡΚΕΙΑΣ 52
1.5 ΛΟΓΙΣΜΙΚΟ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ 52
1.5.1 ΕΝΤΟΛΗ CREATE TABLE 54
1.5.2 ΕΝΤΟΛΗ ALTER TABLE 60
1.5.3 ΕΝΤΟΛΗ DROP TABLE 62
1.5.4 ΕΝΤΟΛΗ INSERT INTO TABLE 62
1.5.5 ΕΝΤΟΛΗ UPDATE TABLE 65
1.5.6 ΕΝΤΟΛΗ DELETE FROM TABLE 67
1.5.7 ΕΝΤΟΛΗ SELECT FROM TABLE 68
1.6 ΣΥΝΟΛΑ ΧΑΡΑΚΤΗΡΩΝ 74
1.6.1 ΟΡΙΣΜΟΣ ΣΥΝΟΛΟΥ ΧΑΡΑΚΤΗΡΩΝ 76
1.6.2 ΟΡΙΣΜΟΣ ΔΙΑΤΑΞΙΝΟΜΙΚΗΣ ΣΕΙΡΑΣ 78
1.6.3 ΟΡΙΣΜΟΣ ΚΑΝΟΝΩΝ ΜΕΤΑΤΡΟΠΗΣ 79
1.6.4 ΣΥΝΑΡΤΗΣΕΙΣ ΣΥΜΒΟΛΟΣΕΙΡΩΝ 80
1.7 ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ 82
1.7.1 ΠΙΝΑΚΕΣ ΚΑΙ ΟΨΕΙΣ 82
1.7.2 ΠΕΔΙΑ ΟΡΙΣΜΟΥ ΚΑΙ ΣΥΝΟΛΑ ΧΑΡΑΚΤΗΡΩΝ 86
1.8 ΠΕΡΙΛΗΨΗ 87
ΚΕΦΑΛΑΙΟ 2: ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ ΒΑΣΗΣ 91
2.1 ΑΡΧΕΣ ΑΝΕΞΑΡΤΗΣΙΑΣ ΔΕΔΟΜΕΝΩΝ
2.2 ΦΥΣΙΚΗ ΑΝΕΞΑΡΤΗΣΙΑ 95
2.3 ΛΟΓΙΚΗ ΑΝΕΞΑΡΤΗΣΙΑ 99
2.4 ΠΡΟΤΥΠΟ ΛΟΓΙΣΜΙΚΟ ΚΑΙ Η ΒΑΣΗ 101
2.5 ΦΙΛΟΞΕΝΟΥΣΑ ΓΛΩΣΣΑ 107
2.6 ΤΡΙΑ ΑΡΧΙΤΕΚΤΟΝΙΚΑ ΕΠΙΠΕΔΑ 111
2.6.1 ΛΟΓΙΚΟ ΣΧΗΜΑ 113
2.6.2  ΛΟΓΙΚΟ ΥΠΟΣΧΗΜΑ 117
2.6.3 ΕΣΩΤΕΡΙΚΟ ΣΧΗΜΑ 122
2.7 ΔΥΝΑΜΙΚΗ ΣΥΝΘΕΣΗ ΕΝΤΟΛΩΝ 127
2.8 ΔΥΝΑΜΙΚΗ ΚΛΗΣΗ CLI 130
2.9 ΚΑΤΗΓΟΡΙΕΣ ΧΡΗΣΤΩΝ 132
2.9.1 ΔΙΑΧΕΙΡΙΣΤΗΣ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ 134
2.9.2 ΜΗΧΑΝΙΚΟΣ ΛΟΓΙΣΜΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ 136
2.9.3 ΑΝΑΛΥΤΗΣ ΕΦΑΡΜΟΓΩΝ 137
2.9.4 ΠΡΟΓΡΑΜΜΑΤΙΣΤΗΣ ΕΦΑΡΜΟΓΩΝ 138
2.9.5 ΓΕΝΙΚΟΣ ΧΡΗΣΤΗΣ 139
2.10 ΟΛΟΚΛΗΡΩΣΗ ΛΟΓΙΣΜΙΚΟΥ 140
2.11 ΠΕΡΙΛΗΨΗ 146
ΚΕΦΑΛΑΙΟ 3: ΔΟΜΕΣ ΚΑΙ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ 149
3.1 ΕΙΣΑΓΩΓΗ 149
3.2 ΣΥΝΔΕΣΗ ΣΤΟΙΧΕΙΩΝ 151
3.3 ΔΟΜΕΣ ΚΑΙ ΣΥΣΧΕΤΙΣΕΙΣ 157
3.3.1 ΔΟΜΕΣ ΜΕ ΚΛΕΙΔΙΑ 157
3.3.2 ΔΟΜΕΣ ΔΕΝΔΡΩΝ 168
3.4 ΙΕΡΑΡΧΙΚΑ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ 171
3.5 ΔΙΚΤΥΩΤΑ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ 176
3.6 ΣΧΕΣΙΑΚΑ ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ 188
3.6.1 ΣΧΕΣΙΑΚΗ ΟΡΟΛΟΓΙΑ 190
3.6.2 ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΣΧΕΣΙΑΚΩΝ ΜΟΝΤΕΛΩΝ 192
3.6.3 ΘΕΩΡΗΤΙΚΟ ΠΛΑΙΣΙΟ 198
3.7 ΠΕΡΙΛΗΨΗ 203
ΚΕΦΑΛΑΙΟ 4: ΔΙΑΚΗΡΥΞΕΙΣ ΑΡΧΩΝ 207
4.1 ΕΙΣΑΓΩΓΗ 207
4.2 ΚΑΝΟΝΕΣ CODD: ΠΡΩΤΗ ΕΚΔΟΣΗ 209
4.3 ΚΑΝΟΝΕΣ CODD: ΔΕΥΤΕΡΗ ΕΚΔΟΣΗ 215
4.4 ΚΑΝΟΝΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΜΟΝΤΕΛΟΥ 224
4.5 ΚΑΝΟΝΕΣ ΤΡΙΤΗΣ ΓΕΝΙΑΣ 228
4.6 ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ 231
4.7 ΣΥΝΑΡΤΗΣΕΙΣ 242
4.8 ΑΚΕΡΑΙΟΤΗΤΑ ΕΓΓΡΑΦΩΝ 253
4.8.1 ΠΕΡΙΟΡΙΣΜΟΙ 255
4.8.2 ΠΕΔΙΑ ΤΙΜΩΝ 264
4.9 ΜΕΤΑΤΡΟΠΕΣ ΚΑΙ ΣΥΓΚΡΙΣΕΙΣ 269
4.10 ΣΥΝΘΕΣΗ ΣΧΗΜΑΤΟΣ 274
ΚΕΦΑΛΑΙΟ 5: ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΒΑΣΕΩΝ 283
5.1 ΕΙΣΑΓΩΓΗ 283 5.2 ΤΥΠΟΙ ΣΥΣΧΕΤΙΣΕΩΝ 285
5.2.1 ΑΝΤΙΜΕΤΩΠΙΣΗ ΣΥΣΧΕΤΙΣΕΩΝ 1:1 286
5.2.2 ΑΝΤΙΜΕΤΩΠΙΣΗ ΣΥΣΧΕΤΙΣΕΩΝ 1:M 287
5.2.3 ΑΝΤΙΜΕΤΩΠΙΣΗ ΣΥΣΧΕΤΙΣΕΩΝ M:M 289
5.3 ΛΕΙΤΟΥΡΓΙΚΕΣ ΑΝΩΜΑΛΙΕΣ 291
5.3.1 ΑΝΩΜΑΛΙΕΣ ΑΠΟ ΕΙΣΑΓΩΓΗ 291
5.3.2 ΑΝΩΜΑΛΙΕΣ ΑΠΟ ΤΡΟΠΟΠΟΙΗΣΗ 291
5.3.3 ΑΝΩΜΑΛΙΕΣ ΑΠΟ ΔΙΑΓΡΑΦΗ 292
5.4 ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΣΧΕΣΕΩΝ 293
5.4.1 ΣΥΝΑΡΤΗΣΙΑΚΗ ΕΞΑΡΤΗΣΗ 294
5.4.2 ΜΕΤΑΒΑΤΙΚΗ ΕΞΑΡΤΗΣΗ 299
5.4.3 ΕΞΑΡΤΗΣΗ ΠΟΛΛΑΠΛΩΝ ΤΙΜΩΝ 301
5.5 ΥΛΟΠΟΙΗΣΗ ΣΥΣΧΕΤΙΣΕΩΝ 304
5.6 ΚΑΝΟΝΙΚΕΣ ΜΟΡΦΕΣ 306
5.6.1 ΠΡΩΤΗ ΚΑΝΟΝΙΚΗ ΜΟΡΦΗ (1NF) 309
5.6.2 ΔΕΥΤΕΡΗ ΚΑΝΟΝΙΚΗ ΜΟΡΦΗ (2NF) 311
5.6.3 ΤΡΙΤΗ ΚΑΝΟΝΙΚΗ ΜΟΡΦΗ (3NF) 316
5.6.4 ΤΕΤΑΡΤΗ ΚΑΝΟΝΙΚΗ ΜΟΡΦΗ (4NF) 328
5.6.5 ΠΕΜΠΤΗ ΚΑΝΟΝΙΚΗ ΜΟΡΦΗ (5NF) 337
5.6.6 ΠΕΔΙΟ-ΚΛΕΙΔΙ ΚΑΝΟΝΙΚΗ ΜΟΡΦΗ (DKNF) 342
5.7 ΟΛΟΚΛΗΡΩΜΕΝΟ ΠΑΡΑΔΕΙΓΜΑ 347
5.7.1 ΑΝΑΛΥΣΗ ΟΝΤΟΤΗΤΩΝ 350
5.7.2 ΑΝΑΛΥΣΗ ΣΥΣΧΕΤΙΣΕΩΝ 352
5.7.3 ΔΗΜΙΟΥΡΓΙΑ ΛΟΓΙΚΟΥ ΜΟΝΤΕΛΟΥ 357
5.7.4 ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΣΧΗΜΑΤΟΣ 360
5.7.5 ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΚΟΥ ΣΧΗΜΑΤΟΣ 366
5.7.6 ΔΗΜΙΟΥΡΓΙΑ ΛΕΞΙΚΟΥ ΔΕΔΟΜΕΝΩΝ 370
5.7.7 ΔΗΜΙΟΥΡΓΙΑ ΥΠΟΣΧΗΜΑΤΟΣ 373
5.7.8 ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΥΠΟΣΧΗΜΑΤΟΣ 375
5.7.9 ΥΛΟΠΟΙΗΣΗ ΥΠΟΣΧΗΜΑΤΟΣ 376
5.8 ΠΕΡΙΛΗΨΗ 378
ΚΕΦΑΛΑΙΟ 6: ΠΟΛΥΣΧΗΜΑΤΙΚΕΣ ΒΑΣΕΙΣ 381
6.1 ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ 381
6.2 ΜΕΤΑ-ΣΧΗΜΑΤΑ 384
6.2.1 ΜΕΤΑ-ΣΤΟΙΧΕΙΑ ΤΟΥ INFORMATION_SCHEMA 385
6.3 ΛΕΞΙΚΟ ΔΕΔΟΜΕΝΩΝ 386
6.3.1 ΣΤΟΧΟΙ ΚΑΙ ΣΚΟΠΟΙ 386
6.3.2 ΤΟ ΛΕΞΙΚΟ ΚΑΙ Η ΒΑΣΗ 392
6.4 ΦΙΛΟΞΕΝΟΥΣΑ ΓΛΩΣΣΑ 399
6.4.1 ΕΝΣΩΜΑΤΩΣΗ ΕΝΤΟΛΩΝ SQL 400
6.4.2 ΣΥΝΘΕΣΗ ΕΝΟΤΗΤΩΝ 404
6.4.3 ΑΝΤΙΣΤΟΙΧΙΑ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ 405
6.5 ΠΡΟΣΩΡΙΝΟΙ ΠΙΝΑΚΕΣ 408
6.5.1 ΔΗΛΩΣΗ ΠΡΟΣΩΡΙΝΩΝ ΠΙΝΑΚΩΝ 408
6.5.2 ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΣΩΡΙΝΩΝ ΠΙΝΑΚΩΝ 411
6.6 ΔΡΟΜΕΙΣ 413
6.6.1 ΔΗΜΙΟΥΡΓΙΑ ΔΡΟΜΕΩΝ 415
6.6.2 ΑΝΟΙΓΜΑ ΔΡΟΜΕΩΝ 418
6.6.3 ΚΛΕΙΣΙΜΟ ΔΡΟΜΕΩΝ 418
6.6.4 ΠΡΟΣΠΕΛΑΣΗ ΠΛΕΙΑΔΩΝ ΔΡΟΜΕΩΝ 418
6.6.5 ΔΙΑΓΡΑΦΗ ΠΛΕΙΑΔΩΝ ΔΡΟΜΕΩΝ 420
6.6.6 ΤΡΟΠΟΠΟΙΗΣΗ ΠΛΕΙΑΔΩΝ ΔΡΟΜΕΩΝ 421
6.7 ΔΙΑΔΙΚΑΣΙΕΣ 423
6.8 ΣΥΝΔΕΣΗ ΜΕ ΤΗ ΒΑΣΗ 428
6.8.1 ΣΥΝΔΕΣΗ ΜΕ ΕΞΥΠΗΡΕΤΗΤΗ 428
6.8.2 ΕΠΙΛΟΓΗ ΣΥΝΔΕΣΗΣ 429
6.8.3 ΔΙΑΚΟΠΗ ΣΥΝΔΕΣΗΣ 430
6.9 ΣΥΝΟΔΟΙ 430
6.10 ΣΥΝΑΛΛΑΓΕΣ 431
6.10.1 ΔΕΣΜΕΥΣΗ ΤΡΟΠΟΠΟΙΗΣΕΩΝ 432
6.10.2 ΑΚΥΡΩΣΗ ΤΡΟΠΟΠΟΙΗΣΕΩΝ 433
6.10.3 ΠΡΟΕΤΟΙΜΑΣΙΑ ΝΕΑΣ ΣΥΝΑΛΛΑΓΗΣ 433
6.10.4 ΕΝΕΡΓΟΠΟΙΗΣΗ ΠΕΡΙΟΡΙΣΜΩΝ 435
6.10.5 ΤΑΥΤΟΧΡΟΝΙΣΜΟΣ 437
6.11 ΕΛΕΓΧΟΣ ΣΦΑΛΜΑΤΩΝ 441
6.11.1 ΕΝΤΟΛΗ WHENEVER  443
6.11.2 ΕΝΤΟΛΗ GET DIAGNOSTICS   446
ΚΕΦΑΛΑΙΟ 7: ΠΑΡΑΔΕΙΓΜΑ ΣΥΝΔΕΣΗΣ ΜΕ ΤΗ ΒΑΣΗ 451
7.1 ΛΟΓΙΚΟ ΣΧΗΜΑ 451
7.2 ΛΟΓΙΚΟ ΥΠΟΣΧΗΜΑ 454
7.3 ΟΡΙΣΜΟΣ ΕΝΟΤΗΤΑΣ 456
7.4 ΦΙΛΟΞΕΝΟΥΣΑ ΓΛΩΣΣΑ C – MODULE 461
7.5 ΦΙΛΟΞΕΝΟΥΣΑ ΓΛΩΣΣΑ C – EXEC 465
ΚΕΦΑΛΑΙΟ 8: ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ & ΣΧΕΣΙΑΚΟΣ ΛΟΓΙΣΜΟΣ  471
8.1 ΕΙΣΑΓΩΓΗ 471
8.2 ΣΥΜΒΟΛΙΣΜΟΣ 473
8.3 ΣΥΜΠΕΡΑΣΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ 476
8.4 ΑΝΑΚΥΚΛΩΣΕΙΣ 485
8.5 ΣΧΕΣΙΑΚΟΣ ΛΟΓΙΣΜΟΣ 488
8.5.1 ΣΧΕΣΙΑΚΟΣ ΛΟΓΙΣΜΟΣ TRC 491
8.5.2 ΣΧΕΣΙΑΚΟΣ ΛΟΓΙΣΜΟΣ DRC 500
8.6 ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΛΓΕΒΡΑΣ ΚΑΙ ΛΟΓΙΣΜΟΥ 510
ΚΕΦΑΛΑΙΟ 9: ΘΕΜΕΛΙΩΔΕΙΣ ΑΛΓΕΒΡΙΚΕΣ ΠΡΑΞΕΙΣ 523
9.1 ΕΙΣΑΓΩΓΗ 523
9.2 ΘΕΜΕΛΙΩΔΕΙΣ ΑΛΓΕΒΡΙΚΕΣ ΠΡΑΞΕΙΣ 527
9.2.1 ΕΝΩΣΗ 527
9.2.2 ΤΟΜΗ 529
9.2.3 ΔΙΑΦΟΡΑ 531
9.2.4 ΕΠΙΛΟΓΗ 533
9.2.5 ΠΡΟΒΟΛΗ 537
9.2.6 ΣΥΝΔΕΣΗ 539
9.2.7 ΔΙΑΙΡΕΣΗ 549
9.2.8 ΓΙΝΟΜΕΝΟ 552
9.3 ΥΠΟΣΧΗΜΑΤΑ – ΜΕΤΟΝΟΜΑΣΙΕΣ 554
9.4 ΕΝΑΛΛΑΚΤΙΚΑ ΣΥΝΟΛΑ ΠΡΑΞΕΩΝ 562
9.5 ΙΣΟΔΥΝΑΜΙΑ ΑΛΓΕΒΡΙΚΩΝ ΠΡΑΞΕΩΝ 565
9.6 ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΕΠΕΡΩΤΗΣΕΩΝ 572
9.7 ΚΑΛΕΣ ΠΡΑΚΤΙΚΕΣ ΣΧΕΔΙΑΣΗΣ 575
ΚΕΦΑΛΑΙΟ 10: ΛΟΓΙΚΟΙ ΕΛΕΓΧΟΙ ΚΑΙ ΣΥΝΘΕΣΗ ΠΙΝΑΚΩΝ   583
10.1 ΜΕΤΟΝΟΜΑΣΙΑ ΣΤΟΙΧΕΙΩΝ 583
10.2 ΑΥΤΟΣΥΝΔΕΣΗ 586
10.3 ΤΡΙΑΔΙΚΗ ΛΟΓΙΚΗ 588
10.4 ΦΡΑΣΕΙΣ ΕΛΕΓΧΟΥ ΤΙΜΩΝ 590
10.5 ΕΝΩΣΗ ΠΙΝΑΚΩΝ 600
10.6 ΤΟΜΗ ΠΙΝΑΚΩΝ 601
10.7 ΔΙΑΦΟΡΑ ΠΙΝΑΚΩΝ 602
10.8 ΕΠΙΛΟΓΗ ΠΛΕΙΑΔΩΝ 603
10.9 ΠΡΟΒΟΛΗ ΣΤΗΛΩΝ 604
10.10 ΣΥΝΔΕΣΗ ΠΙΝΑΚΩΝ 605
10.11 ΚΑΡΤΕΣΙΑΝΟ ΓΙΝΟΜΕΝΟ 612
10.12 ΠΡΑΚΤΙΚΑ ΠΑΡΑΔΕΙΓΜΑΤΑ 613
ΚΕΦΑΛΑΙΟ 11: ΔΙΚΤΥΩΤΗ ΓΛΩΣΣΑ ΒΑΣΗΣ  627
11.1 ΕΙΣΑΓΩΓΗ 627
11.2 ΔΟΜΗ ΛΟΓΙΚΟΥ ΣΧΗΜΑΤΟΣ 629
11.3 ΤΑΞΙΝΟΜΗΣΗ ΕΓΓΡΑΦΩΝ 635
11.4 ΕΝΤΑΞΗ ΕΓΓΡΑΦΩΝ ΣΕ ΣΥΝΟΛΑ 638
11.5 ΕΠΙΛΟΓΗ ΣΥΝΟΛΟΥ 642
11.6 ΟΡΙΣΜΟΣ ΥΠΟΣΧΗΜΑΤΟΣ 645
11.7 ΧΕΙΡΙΣΜΟΣ ΕΓΓΡΑΦΩΝ 646
11.8 ΟΛΟΚΛΗΡΩΜΕΝΟ ΠΑΡΑΔΕΙΓΜΑ 654
11.8.1 ΛΟΓΙΚΟ ΣΧΗΜΑ 654
11.8.2 ΛΟΓΙΚΟ ΥΠΟΣΧΗΜΑ 660
ΚΕΦΑΛΑΙΟ 12: ΠΑΡΟΝ ΚΑΙ ΜΕΛΛΟΝ  663
12.1 ΕΙΣΑΓΩΓΗ 663
12.2 ΔΥΝΑΜΙΚΗ ΚΛΗΣΗ CLI ΚΑΙ ODBC 664
12.2.1 Η ΕΞΕΛΙΞΗ ΤΟΥ ODBC 666
12.2.2 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ODBC 668
12.2.3 ΕΝΑΛΛΑΚΤΙΚΕΣ ΠΡΟΣΕΓΓΙΣΕΙΣ 672
12.2.4 ΕΠΙΠΕΔΑ ΣΥΜΒΑΤΟΤΗΤΑΣ API 674
12.2.5 ΕΠΙΠΕΔΑ ΣΥΜΒΑΤΟΤΗΤΑΣ SQL 676
12.2.6 ΤΥΠΟΙ ΟΔΗΓΩΝ ODBC 678
12.2.7 ΠΟΛΛΑΠΛΑ ΣΧΗΜΑΤΑ 680
12.2.8 ΠΑΡΑΔΕΙΓΜΑ ΕΦΑΡΜΟΓΗΣ ODBC 681
12.2.9 MFC ΚΑΙ ODBC 683
12.2.10 ODBC ΚΑΙ OLE 684
12.3 ΔΗΜΙΟΥΡΓΙΑ ΕΝΟΤΗΤΩΝ PSM 685
12.3.1 ΕΝΤΟΛΕΣ ΤΥΠΟΥ PSM 687
12.3.2 ΠΑΡΑΔΕΙΓΜΑΤΑ ΤΥΠΟΥ PSM 696
12.4 ΠΥΡΟΔΟΤΙΚΕΣ ΔΙΑΔΙΚΑΣΙΕΣ 698
12.5 ΑΝΑΔΡΟΜΙΚΕΣ ΣΥΝΔΕΣΕΙΣ 702
12.6 ΤΟ ΜΕΛΛΟΝ 706
ΚΕΦΑΛΑΙΟ 13: ΑΣΚΗΣΕΙΣ & ΛΥΣΕΙΣ  709
ΠΑΡΑΡΤΗΜΑ Α: ΓΡΑΜΜΑΤΙΚΗ ΤΗΣ SQL  951
Α.1 ΓΕΝΙΚΟΙ ΟΡΙΣΜΟΙ 952
Α.2 ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ 954
Α.3 ΟΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ 957
Α.4 ΣΥΝΘΕΣΗ ΠΙΝΑΚΩΝ 961
Α.5 ΠΕΡΙΟΡΙΣΜΟΙ 963
Α.6 ΕΝΟΤΗΤΕΣ ΛΟΓΙΣΜΙΚΟΥ 964
Α.7 ΣΥΝΔΕΣΗ ΜΕ ΤΗ ΒΑΣΗ ΚΑΙ ΣΥΝΑΛΛΑΓΕΣ 965
Α.8 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ 966
Α.9 ΛΟΓΙΚΕΣ ΣΥΝΘΗΚΕΣ 968
Α.10 ΔΥΝΑΜΙΚΑ ΟΡΙΖΟΜΕΝΕΣ ΦΡΑΣΕΙΣ 97
ΠΑΡΑΡΤΗΜΑ Β: ΠΑΡΑΔΕΙΓΜΑΤΑ ΕΠΙΚΛΗΣΗΣ ΕΝΤΟΛΩΝ SQL  973
Β.1 ΣΥΝΘΕΣΗ ΕΝΤΟΛΩΝ – ΕΝΕΣΕΙΣ 973
Β.2 ΠΑΡΑΔΕΙΓΜΑΤΑ ΣΕ ASP.NET 975
Β.3 ΠΑΡΑΔΕΙΓΜΑ ΣΕ Java 978
Β.4 ΠΑΡΑΔΕΙΓΜΑ ΔΙΑΔΙΚΑΣΙΑΣ SQL 986
ΠΑΡΑΡΤΗΜΑ Γ: ΚΩΔΙΚΟΙ ΣΦΑΛΜΑΤΩΝ SQL  989
ΒΙΒΛΙΟΓΡΑΦΙΑ 993
ΑΚΡΩΝΥΜΙΑ 1000
ΕΥΡΕΤΗΡΙΟ 1003