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

 

 

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

 

Α΄ Έκδοση

 

 

Εκδότης: Μπένου Ε.

 

Μορφή: Μαλακό εξώφυλλο

 

Αριθμός σελίδων: 1024

 

Κωδικός ISBN: 9789603591146

 

Διαστάσεις: 24 × 17 εκ.

 

Κωδ. Εύδοξος: 41959734

 

Έτος έκδοσης: 2014

 

 

 

 

 

 

 ► παρουσίαση

Η σχεδίαση και ο προγραμματισμός σύγχρονων πληροφοριακών συστημάτων, γενικώς, στηρίζεται σε καθιερωμένες λογικές και φυσικές μονάδες συσχέτισης και αποθήκευσης στοιχείων, οι οποίες σχηματίζουν μια ιεραρχία. Οι μονάδες αυτές είναι το πεδίο που χρησιμοποιείται για τη σύνθεση εγγραφών, οι οποίες με τη σειρά τους χρησιμοποιούνται για τη δημιουργία μιας μεγαλύτερης μονάδας, που είναι το αρχείο. Οι εφαρμογές που στηρίζονται σε παραδοσιακές γλώσσες 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