SlideShare a Scribd company logo
1 of 23
Download to read offline
Βάσεις Δεδομένων Ι - 02
Σχεσιακό Πρότυπο Δεδομένων
(Relational Data Model)
(σύντομη παρουσίαση)
Τύποι Δεδομένων
Φώτης Κόκκορας (MSc/PhD)
Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 2 - Βάσεις Δεδομένων Ι
Τι είναι τα Πρότυπα Δεδομένων;
 Είναι σημειογραφικά συστήματα που χρησιμοποιούμε για την περιγραφή δεδομένων.
 Τα πιο σημαντικά πρότυπα στα συστήματα βάσεων δεδομένων είναι το σχεσιακό πρότυπο
και το πρότυπο των ημιδομημένων δεδομένων.
 Τα πρότυπα δεδομένων περιλαμβάνουν 3 βασικά συστατικά:
 Δομή Δεδομένων
 ΔΕΝ εννοούμε τις δομές δεδομένων του προγραμματισμού αλλά εννοιολογικά πρότυπα.
 Στο σχεσιακό πρότυπο η κύρια δομή δεδομένων είναι η σχέση/relation (ή πίνακας/table).
 Στο πρότυπο ημιδομημένων δεδομένων η κύρια δομή δεδομένων είναι οι ιεραρχικά
φωλιασμένες ετικέτες (tags), με κλασικό αντιπρόσωπο τα XML δένδρα.
 Πράξεις επί των Δεδομένων
 Στις γλώσσες προγραμματισμού: πράξεις είναι οτιδήποτε μπορεί να προγραμματιστεί!
 Στο σχεσιακό πρότυπο έχουμε κύρια πράξεις πάνω σε πίνακες (σχεσιακή άλγεβρα) όπως π.χ.
επιλογή των γραμμών που έχουν δεδομένη τιμή σε δεδομένη στήλη.
 Στο πρότυπο ημιδομημένων δεδομένων ακολουθούμε διαδρομές στο δένδρο, ζητάμε την τιμή
δεδομένου κόμβου, κτλ
 Το πλήθος των επιτρεπτών πράξεων είναι μικρό. Αυτό οδηγεί σε απλές γλώσσες (πχ η SQL)
 Περιορισμοί στα Δεδομένα
 Στο σχεσιακό πρότυπο οι περιορισμοί μπορεί να είναι π.χ. στις δυνατές τιμές μιας στήλης.
 Στο πρότυπο ημιδομημένων δεδομένων μπορεί πχ κάποιος τύπος κόμβου να πρέπει να περιέχει
δεδομένους άλλους κόμβους, πιθανώς και με συγκεκριμένη σειρά, κτλ.
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 3 - Βάσεις Δεδομένων Ι
Πρότυπα Δεδομένων (συνέχεια)
 Υπάρχουν και άλλα, λιγότερο διαδεδομένα πρότυπα δεδομένων στις ΒΔ όπως το
αντικειμενοστραφές σχεσιακό πρότυπο όπου:
 οι τιμές που αποθηκεύονται μπορεί να είναι σύνθετες δομές παρά απλοί αριθμοί και
αλφαριθμητικά (που είπαμε ότι ισχύει στις σχεσιακές ΒΔ)
 οι σχέσεις μπορεί να συνοδεύονται από μεθόδους (methods) όπως π.χ. στη C++
 Είναι γεγονός ότι τα ημιδομημένα πρότυπα είναι πιο ευέλικτα από το σχεσιακό,
ειδικά αν αναλογιστεί κανείς ότι στο ιεραρχικό πρότυπο μπορεί να ενσωματωθούν
και δομές γράφων, που είναι πολύ χρήσιμες. Όμως, το σχεσιακό πρότυπο είναι
περισσότερο διαδεδομένο καθώς:
 παρέχει αποδοτικούς τρόπους πρόσβασης σε τεράστιους όγκους δεδομένων
 η απλότητα του μοντέλου και το περιορισμένο πλήθος πράξεων στα δεδομένα έχουν
οδηγήσει σε απλές γλώσσες προγραμματισμού που επιτρέπουν στους προγραμματιστές να
μπορούν με απλές εντολές να κάνουν σχεδόν τα πάντα.
 λίγες γραμμές κώδικα SQL ισοδυναμούν με εκατοντάδες γραμμές C
 το περιορισμένο ρεπερτόριο εντολών της SQL μας επιτρέπει να γράψουμε αλγορίθμους
βελτιστοποίησης των ερωτημάτων έτσι ώστε να προγραμματίζουμε με περισσότερο
κατανοητή για εμάς σύνταξη αλλά τελικά να εκτελείται ο βέλτιστα διατυπωμένος για
τον Η/Υ κώδικας.
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 4 - Βάσεις Δεδομένων Ι
Βασικές Αρχές Σχεσιακού Προτύπου (1/5)
 Η βασική δομή δεδομένων είναι ο πίνακας (table) δύο διαστάσεων που ονομάζεται
σχέση (relation). Για παράδειγμα έστω η σχέση Movies (ταινίες):
title year length genre
Gone with the Wind 1939 231 drama
Star Wars 1977 124 sciFi
Wayne's World 1992 95 comedy
 κάθε γραμμή αφορά σε μία ταινία
 κάθε στήλη αφορά σε μια ιδιότητα ταινίας
 Όπως θα δούμε παρακάτω, σχέσεις θεωρούνται επίσης και:
 τα αποτελέσματα ερωτήσεων (queries) – είναι και αυτά προσωρινοί πίνακες
 οι όψεις (views) – σχέσεις που υπολογίζονται όταν χρειάζονται ή και από πριν
 Οι στήλες μιας σχέσης ονομάζονται γνωρίσματα (attributes) (ή στήλες-columns)
 προσδιορίζουν το είδος πληροφορίας της εκάστοτε στήλης
 στο παράδειγμα: title, year, length (διάρκεια της ταινίας), genre (είδος ταινίας, π.χ. θρίλερ)
 Θεωρητικά, η σειρά των γνωρισμάτων δεν παίζει ρόλο (γιατί είναι σύνολο/set). Στην πράξη
όμως πρέπει να τη γνωρίζουμε και αυτή καθορίζεται από το schema.
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 5 - Βάσεις Δεδομένων Ι
Βασικές Αρχές Σχεσιακού Προτύπου (2/5)
 Tο όνομα της σχέσης και το σύνολο των γνωρισμάτων της ονομάζονται σχήμα
(schema) (στον πληθυντικό σχήματα – schemata).
 ο τρόπος κωδικοποίησης ενός σχήματος είναι ο ακόλουθος
π.χ. Movies(title, year, length, genre)
 το όνομα της σχέσης συνηθίζεται να το γράφουμε με κεφαλαίο πρώτο γράμμα
 το όνομα των γνωρισμάτων συνηθίζεται να το γράφουμε με μικρούς (πεζούς) χαρακτήρες
 Σε μια ΒΔ συνήθως έχουμε πολλές σχέσεις (σχήματα)! Το σύνολο των σχημάτων
μιας ΒΔ ονομάζεται σχήμα της ΒΔ (database schema).
 Πρακτικά, ο ορισμός μια ΒΔ σημαίνει να ορίσουμε το schema της και αποτελεί τη
σημαντικότερη εργασία σε ένα project που περιλαμβάνει ΒΔ.
 Οι γραμμές μιας σχέσης ονομάζονται πλειάδες (tuples) ή γραμμές (rows) ή
εγγραφές (records)
 τρόπος γραφής μιας πλειάδας: (Star Wars, 1977, 124, scifi)
 πρέπει όμως να λέμε και σε ποια σχέση ανήκει! (εδώ στην σχέση Ταινίες)
 Σε κάθε γνώρισμα μιας σχέσης αντιστοιχεί ένα πεδίο τιμών δηλαδή ένας
συγκεκριμένος πρωταρχικός τύπος, συνήθως αλφαριθμητικό ή αριθμός.
 δεν προβλέπεται αποθήκευση σύνθετων τύπων (όπως λίστες, πίνακες, κτλ) μέσα σε γνώρισμα
 στην καταγραφή του σχήματος μπορούμε να συμπεριλάβουμε και τύπους, ως εξής:
π.χ. Movies(title:string, year:integer, length:integer, genre:string)
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 6 - Βάσεις Δεδομένων Ι
Βασικές Αρχές Σχεσιακού Προτύπου (3/5)
 Προεπιλεγμένη τιμή (default) είναι η τιμή που χρησιμοποιείται σε μια στήλη αν δεν
γνωρίζουμε κάποια άλλη τιμή. Αν δεν έχουμε ορίσει default, τότε είναι το NULL.
 η προεπιλεγμένη τιμή μπορεί να υπολογίζεται τη στιγμή που χρειάζεται, όπως π.χ. με την
τρέχουσα ημερομηνία και ώρα.
Ισοδυναμία Αναπαραστάσεων
 Οι σχέσεις είναι σύνολα (sets) και όχι κατάλογοι – άρα η σειρά των πλειάδων δεν
παίζει ρόλο. Επίσης δεν παίζει ρόλο η σειρά των γνωρισμάτων αλλά (όπως
ειπώθηκε) για πρακτικούς λόγους υιοθετούμε μια δεδομένη σειρά καθώς αυτή
καθορίζει και τη σειρά των στηλών του πίνακα.
Στιγμιότυπα Σχέσεων
 Το σύνολο των πλειάδων μιας σχέσης αποτελεί ένα στιγμιότυπο (instance) αυτής
της σχέσης. πχ. ο πίνακας στη διαφάνεια 4 είναι ένα στιγμιότυπο της σχέσης Movies.
 Στην πορεία του χρόνου, καθώς π.χ. προσθέτουμε ταινίες στη σχέση Movies, προκύπτουν νέα
στιγμιότυπα! Τα συμβατικά DBMS όμως διατηρούν μόνο μία εκδοχή της σχέσης: τις
πλειάδες που βρίσκονται στη σχέση τώρα! Αυτό είναι το λεγόμενο τρέχον στιγμιότυπο.
 Υπάρχουν και οι χρονικές βάσεις δεδομένων που τηρούν παρελθούσες εκδοχές των δεδομένων!
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 7 - Βάσεις Δεδομένων Ι
Βασικές Αρχές Σχεσιακού Προτύπου (4/5)
 Κλειδιά Σχέσεων: το κλειδί (key) είναι ένα σύνολο γνωρισμάτων (συνήθως ένα
μόνο γνώρισμα) της σχέσης για το οποίο δεν επιτρέπεται να υπάρχουν πλειάδες που
να έχουν ίδια τιμή στα γνωρίσματα του κλειδιού. Για παράδειγμα:
 στη σχέση Φοιτητής, ο αριθμός μητρώου είναι κλειδί! (κάθε φοιτητής έχει διαφορετικό ΑΜ)
 στη σχέση Movies, έστω ότι ο συνδυασμός title και year είναι κλειδί (τα υπογραμμίζουμε).
π.χ. Movies(title, year, length, genre)
 Θεωρούμε ότι δεν θα υπάρξουν ταινίες που θα κυκλοφορήσουν την ίδια χρονιά με ίδιο τίτλο!
 το year μόνο του δεν μπορεί να είναι κλειδί γιατί σε μια χρονιά κυκλοφορούν πολλές ταινίες!
 το title μόνο του δεν μπορεί να είναι κλειδί γιατί υπάρχουν ταινίες που έχουν ίδιο τίτλο
 ΠΡΟΣΟΧΗ: το κλειδί δεν ορίζεται με βάση το τρέχον στιγμιότυπο (δηλ. τα παρόντα
δεδομένα) αλλά με βάση τα πιθανά στιγμιότυπα, δηλ. αυτά που θα προκύψουν μελλοντικά
όταν θα καταχωρηθούν επιπλέον πλειάδες (δεδομένα).
 Συχνά δεν είναι εύκολο να οριστούν κλειδιά και επειδή τα σύνθετα κλειδιά με πολλά
γνωρίσματα είναι δύσχρηστα, ορίζουμε τεχνητά κλειδιά (artificial keys).
 Τα τεχνητά κλειδιά συνήθως παίρνουν αυτόματα αριθμητικές τιμές 1, 2, 3, κ.ο.κ.
 ΠΡΟΣΟΧΗ: Η υιοθέτηση από μέρους μας ως κλειδιού ενός γνωρίσματος του
οποίου η τιμή ΔΕΝ ελέγχεται 100% από εμάς, μακροπρόθεσμα εμπεριέχει ρίσκο!
 Έτσι εξηγείται γιατί κάθε φορέας έχει δικό του κωδικό (Αστ/κή Ταυτότητα, ΑΦΜ, ΑΜΚΑ,
Τηλεφωνία, κτλ). Δεν είναι έτσι εξαρτημένος από τρίτους.
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 8 - Βάσεις Δεδομένων Ι
Βασικές Αρχές Σχεσιακού Προτύπου (5/5)
Παράδειγμα Σχέσης - Σύνοψη
title year length genre
Gone with the Wind 1939 231 drama
Star Wars 1977 124 sciFi
Wayne's World 1992 95 comedy
 Όνομα Σχέσης: Movies
 Γνωρίσματα: 4 – title, year, length, genre
 Σχήμα: Movies(title, year, length, genre)
 Κλειδί: (title, year) (τα υπογραμμίζουμε στη σχέση)
 Πλειάδες: 3
 Πεδία Τιμών: Movies(title:string, year:integer, length:integer, genre:string)
Τονίζεται ξανά ότι αν και οι τίτλοι στις 3 ταινίες του παραπάνω στιγμιότυπου της σχέ-
σης Movies είναι διαφορετικοί, δε σημαίνει ότι μόνος του ο τίτλος μπορεί να αποτελέ-
σει κλειδί. Δεν αποφασίζουμε το κλειδί με βάση το τρέχον στιγμιότυπο αλλά με βάση
το πιθανό μελλοντικό στιγμιότυπο (όταν δηλαδή θα καταχωρηθούν επιπλέον ταινίες).
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 9 - Βάσεις Δεδομένων Ι
Τύποι Δεδομένων - Αλφαριθμητικά
Να τονιστεί ότι κάθε υλοποίηση RDBMS πιθανώς να ακολουθεί τη δική της οδό ως προς τον ακρι-
βή ορισμό των τύπων δεδομένων που υιοθετεί. Παρακάτω γίνεται αναφορά στους βασικούς τύπους
δεδομένων που πάνω-κάτω υπάρχουν σε όλα τα RDBMS και γίνεται επιπλέον ειδική αναφορά στις
όποιες ιδιαιτερότητες του MySQL RDBMS. Ανάλογα με την πλατφόρμα στην οποία δουλεύετε, να
συμβουλεύστε την τεκμηρίωσή της (documentation, manuals).
Για MySQL δείτε εδώ: http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html
 Αλφαριθμητικά σταθερού μήκους: CHAR(N) όπου Ν ακέραιος ως 255
 Τα χρησιμοποιούμε σε περιπτώσεις που το μήκος των δεδομένων που θέλουμε να καταχω-
ρούμε είναι το πολύ Ν χαρακτήρες και δεν υπάρχει μεγάλη απόκλιση από αυτό το μήκος.
 Λέμε σταθερού μήκους γιατί ότι και να καταχωρηθεί σε μια στήλη τέτοιου τύπου, θα
καταλάβει χώρο Ν χαρακτήρων. Οπότε:
 ο αριθμός ταυτότητας είναι ένα καλό παράδειγμα: έχει μήκος 8 πάντα
 ο τίτλος ταινίας δεν είναι καλό παράδειγμα! υπάρχει μεγάλο εύρος τιμών στο πιθανό μήκος του
 Αλφαριθμητικά μεταβλητού μήκους: VARCHAR(N) όπου Ν ακέραιος ως βλ. επόμενο slide
 Χρήση σε περιπτώσεις που το μήκος των δεδομένων που θέλουμε να καταχωρούμε είναι το
πολύ Ν χαρακτήρες και υπάρχει μεγάλη απόκλιση από αυτό το μήκος στα μήκη των αλφαριθ-
μητικών που καταχωρούνται. Σε MySQL, αν Ν>255 τότε γίνεται TEXT (βλ. slide #10)
 Δηλαδή, ο τύπος VARCHAR είναι πιο οικονομικός σε αποθηκευτικό χώρο από τον CHAR. O
δεύτερος όμως είναι πιο γρήγορα διαχειρίσιμος από το RDBMS (λόγω του σταθερού μήκους!).
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 10 - Βάσεις Δεδομένων Ι
Τύποι Δεδομένων – Αλφαριθμητικά & Binary
 Η μέγιστη τιμή του N στον τύπο varchar είναι 65535 αλλά αν η εγγραφή
περιλαμβάνει και άλλες στήλες, η πραγματική μέγιστη τιμή είναι 65535 μείον τα
bytes που καταλαμβάνουν οι υπόλοιπες στήλες.
 TEXT: για μεγάλα non-binary αλφαριθμητικά (http://dev.mysql.com/doc/refman/5.0/en/string-types.html)
 παραλλαγές του:
 TINYTEXT (28
bytes = 255 χαρακτήρες),
 TEXT (216
bytes = 64KΒ),
 MEDIUMTEXT (224
bytes = 2GB),
 LARGETEXT (232
bytes = 4GB)
 BINARY(n) και VARBINARY(n) για αλληλουχίες bit (binary αλφαριθμητικά) μήκους ως n
 στη λογική των τύπων CHAR και VARCHAR
 BLOB: (Binary Large Object) για binary αλφαριθμητικά και γενικά binary data (πχ εικόνες)
 παραλλαγές του (σε παρόμοια λογική με το TEXT):
 TINYBLOB,
 BLOB,
 MEDIUMBLOB,
 LARGEBLOB
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 11 - Βάσεις Δεδομένων Ι
Τύποι Δεδομένων - Αλφαριθμητικά
 Έστω η λέξη 'ποδήλατο'
 σε γνώρισμα τύπου varchar(12) θα αποθηκευτεί ακριβώς η λέξη
'ποδήλατο'
 σε γνώρισμα τύπου char(12) θα αποθηκευτεί η λέξη και 4 κενά
(spaces): 'ποδήλατο '
 ΠΡΟΣΟΧΗ: Αν επιχειρήσουμε να αποθηκεύσουμε αλφαριθμητικό μεγαλύτερο
από το διαθέσιμο χώρο, οι επιπλέον χαρακτήρες χάνονται!
 Τεχνικές Λεπτομέρειες:
 Στη γλώσσα SQL τα αλφαριθμητικά οριοθετούνται με μονά εισαγωγικά (και όχι με διπλά
που συνηθίζεται στον προγραμματισμό).
 Σε MySQL, αν κάποιος χαρακτήρας του αλφαριθμητικού είναι το μονό εισαγωγικό τότε
πρέπει να μπει escaped. Αυτό σημαίνει να βάλουμε αριστερά του τον χαρακτήρα 
(backslash).
 πχ. το 'Jane's World' σε μια έκφραση SQL θα γραφεί ως 'Jane's World'
 ΠΡΟΣΟΧΗ: Δεν γίνεται σε όλα τα RDBMS με τον ίδιο τρόπο!
 Δείτε προσεκτικά τα γραφόμενα σε επόμενα slides (#16, #17) με τίτλο:
 Binary και non-Binary Τύποι Αλφαριθμητικών
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 12 - Βάσεις Δεδομένων Ι
Τύποι Δεδομένων – Boolean και Ακέραιοι
 BOOLEAN: για λογικές τιμές TRUE (ή 1), FALSE (ή 0)
 INT ή INTEGER για
ακεραίους. Ανάλογα με το
εύρος τιμών των αριθμών
που θα αποθηκεύσουμε
ίσως είναι καλύτερα μια
εξειδίκευση αυτού του
τύπου (βλ. πίνακα δεξιά με
τι ισχύει σε MySQL).
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 13 - Βάσεις Δεδομένων Ι
Τύποι Δεδομένων – Δεκαδικοί Αριθμοί
 Αριθμοί με υποδιαστολή:
 Σταθερής υποδιαστολής (ή ακριβούς τιμής): τύπος DECIMAL (ή NUMERIC)
 η αναπαράσταση αριθμών με τύπο DECIMAL είναι ακριβής και μαθηματικές
πράξεις με αυτούς είναι επίσης ακριβείς. Για παράδειγμα, αν προσθέσουμε 1000 φορές το 0.001
θα πάρουμε 1 και όχι κάποιο δεκαδικό πολύ κοντά στο 1 (όπως πχ 0.9999999999999)
 χρησιμοποιούνται όταν είναι σημαντικό να υπάρχει ακριβής αναπαράσταση αριθμών, όπως
για παράδειγμα σε χρηματικά ποσά (fixed-point types ή exact value types).
 σύνταξη: DECIMAL(n,d) – όπου n το πλήθος των ψηφίων εκ των οποίων d είναι τα δεκαδικά
 γενικά ισχύει 0≤d≤n και ειδικότερα σε MySQL το dμπορεί να είναι από 0 ως 30.
 Παραδείγματα: το 1234.56 απαιτεί δήλωση DECIMAL(6,2) (6 ψηφία, τα 2 δεκαδικά) ενώ μια
δήλωση DECIMAL(5,2) επιτρέπει αριθμούς από -999.99 ως 999.99 (5 ψηφία, τα 2 δεκαδικά)
 Κινητής υποδιαστολής (ή προσεγγιστικής τιμής): τύποι FLOAT (ή REAL)
 σε MySQL επιτρέπεται δήλωση ψηφίων όπως στον τύπο DECIMAL αλλά για λόγους
συμβατότητας με άλλες πλατφόρμες καλύτερα να το αποφεύγετε
 η αναπαράσταση αριθμών με τύπους κινητής υποδιαστολής δεν είναι ακριβής (floating-point
types ή approximate value types) και γι αυτό πρέπει να αποφεύγονται συγκρίσεις ισότητας
 πχ σε FLOAT(7,4) αποθηκεύονται αριθμοί ως 999.9999. Αν επιχειρήσουμε να αποθηκεύσουμε τον αριθμό
999.00009 θα αποθηκευτεί 999.0001
 o τύπος DOUBLE χρησιμοποιείται για δεκαδικούς υψηλότερης ακρίβειας καθώς δεσμεύει
διπλάσια bytes αποθηκευτικού χώρου (8 έναντι 4)
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 14 - Βάσεις Δεδομένων Ι
Τύποι Δεδομένων - Ημερομηνίες
 Χρονικά Δεδομένα:
 Ο τύπος DATETIME πχ.'2012-10-15 12:25:59.5' δηλ συνδυασμός ημ/νίας και ώρας
 κωδικοποίηση: YYYY-MM-DD HH:MM:SS
 υποστηρίζει τιμές από 1000-01-01 00:00:00 ως 9999-12-31 23:59:59
 O τύπος DATE είναι κατάλληλος όταν δεν ενδιαφέρει η ώρα
 κωδικοποίηση: YYYY-MM-DD
 υποστηρίζει τιμές από 1000-01-01 ως 9999-12-31
 Ο τύπος TIME είναι κατάλληλος όταν δεν ενδιαφέρει η ημερομηνία
 κωδικοποίηση: ΗΗ:ΜΜ:SS (ώρες:λεπτά:δεύτερα)
 υποστηρίζει τιμές από -838:59:59 ως 838:59:59
 Ο τύπος TIMESTAMP χρησιμοποιείται για να καταγράφεται η χρονική στιγμή δημιουργίας (ή
και μεταβολής, σε πρόσφατες εκδόσεις MySQL) μιας εγγραφής σε ένα πίνακα!
 Παλιά, ο τύπος TIMESTAMP έπρεπε να συνοδεύεται από την default τιμή current_timestamp.
Πλέον μπαίνει αυτόματα το: current_timestamp on update current_timestamp
 Χρήσιμο τύπος για λειτουργίες καταγραφής (auditing), όταν δηλαδή θέλουμε να καταγράψουμε
αυτόματα πχ πότε έγινε μια καταχώριση σε ένα πίνακα.
 YEAR: Ειδικός τύπος για έτη (με δύο ή τέσσερα ψηφία). Είναι ακέραιος 1 byte.
 εύρος τιμών σε τετραψήφια εκδοχή: από 1901 ως 2155
 εύρος τιμών σε διψήφια εκδοχή: 70 ως 69 εννοώντας δηλαδή 1970 ως 2069
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 15 - Βάσεις Δεδομένων Ι
Τύποι Δεδομένων – Σύνολα Τιμών
 ENUM: αλφαριθμητικός τύπος αλλά με τις δυνατές τιμές του να προέρχονται από το
κλειστό σύνολο τιμών που ορίζεται κατά τη φάση δήλωσης του τύπου (ή NULL).
 π.χ. αν θέλουμε ένα γνώρισμα με όνομα size να παίρνει τιμές small, medium ή large τότε
θα το δηλώσουμε ως εξής: size ENUM('small', 'medium', 'large')
 σε MySQL, το σύνολο τιμών μπορεί να περιέχει ως 216
τιμές (65535)
 SET: αλφαριθμητικός τύπος αλλά με τις δυνατές τιμές του να είναι το κενό αλφαριθ-
μητικό (empty string '') ή οποιοσδήποτε συνδυασμός στοιχείων (χωρισμένα με
κόμμα) από το σύνολο τιμών που ορίζεται κατά τη φάση δήλωσης του τύπου.
 π.χ. η ακόλουθη δήλωση για το γνώρισμα test: test SET('one', 'two') NOT NULL
επιτρέπει την καταχώριση τιμών όπως: '', 'one', 'two', 'one,two'
 το σύνολο επιτρεπτών τιμών δέχεται ως 64 στοιχεία, το πολύ
---==! ΠΡΟΣΟΧΗ !==---
 Για τις απαιτήσεις μνήμης των διαφόρων τύπων δεδομένων αλλά και
τις τυχόν ιδιαιτερότητες στην υλοποίησή τους στο εκάστοτε RDBMS,
να συμβουλεύεστε την τεκμηρίωση του εκάστοτε συστήματος. Για MySQL δείτε τη
σελίδα: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 16 - Βάσεις Δεδομένων Ι
Binary και non-Binary Τύποι Αλφαριθμητικών (1/2)
τα παρακάτω αφορούν στην υλοποίηση του MySQL Server
(είναι αρκετά τεχνικές έννοιες αλλά βασικές για όποιο θέλει να γίνει 'pro')
 Non-binary string data types: CHAR, VARCHAR, TEXT (και παραλλαγές του)
 εδώ υπάρχουν οι έννοιες character set και collation
 character set: το σύνολο χαρακτήρων που υποστηρίζονται – επίσης καθορίζει το πόσα bytes
αποθηκευτικού χώρου καταλαμβάνει κάθε χαρακτήρας καθώς υπάρχουν χαρακτήρες του ενός
byte αλλά και χαρακτήρες πολλών bytes (multi-byte characters) και μάλιστα σταθερού ή
μεταβλητού αριθμού bytes.
 π.χ. το utf8 Unicode σύνολο χαρακτήρων χρειάζεται 1 ως 3 bytes ανά χαρακτήρα
 collation: καθορίζει την σειρά ταξινόμησης των χαρακτήρων σε ένα character set και έτσι
χρησιμοποιείται στις συγκρίσεις αλφαριθμητικών.
 Επίσης καθορίζει το κατά πόσο τα αλφαριθμητικά θα θεωρούνται case-sensitive ή case-insensitive και
αυτό φαίνεται στο όνομα του collation (π.χ. utf8_general_ci, utf8_general_cs).
 Το collation μπορεί να είναι και binary (π.χ. utf8_bin) στην οποία περίπτωση η σειρά των χαρακτήρων
καθορίζεται από την τιμή των byte και όχι το τι αναπαριστούν (πχ το 'a' ως byte value είναι το 61). Άρα
ένα binary collation είναι υποχρεωτικά case-sensitive γιατί π.χ. τα byte values των 'A' και 'a' διαφέρουν!
 Binary string data types: BINARY, VARBINARY, BLOB (και παραλλαγές του)
 τα binary strings ΔΕΝ έχουν character set και collation καθώς πρόκειται για αλληλουχίες από
byte values – άρα είναι case-sensitive καθώς τα byte values πεζών και κεφαλαίων διαφέρουν
 δεν υπάρχει η έννοια του multi-byte χαρακτήρα – το string είναι αλληλουχία από byte values!
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 17 - Βάσεις Δεδομένων Ι
Binary και non-Binary Τύποι Αλφαριθμητικών (2/2)
Τι τύπο αλφαριθμητικού να χρησιμοποιήσω?
 Αν πρόκειται να αποθηκεύσουμε δεδομένα που είναι κείμενο (πχ ονόματα,
ειδησεογραφία, καταχωρήσεις σε κάποιο blog, περιγραφές προϊόντων, κτλ)
τότε πρέπει να επιλέξουμε ένα non-binary string data type, δηλαδή CHAR,
VARCHAR, TEXT (και τις παραλλαγές του).
 Σε MySQL server (αντίθετα απ'ότι σε άλλα RDBMS), η σύγκριση τέτοιων αλφα-
ριθμητικών γίνεται χωρίς διάκριση μικρών-κεφαλαίων. Αν θέλουμε διάκριση
τότε βάζουμε στο πεδίο και τη ρύθμιση BINARY (βλ. slide 20, το BIN checkbox)
 Αν πρόκειται να αποθηκεύσουμε δεδομένα τα οποία δεν είναι κείμενο αλλά
αλληλουχίες από bytes (όπως πχ τα δεδομένα που συνιστούν μια εικόνα) τότε
πρέπει να επιλέξουμε κάποιο τύπο binary string, δηλαδή: BINARY, VARBINARY, BLOB
(και τις παραλλαγές του).
 Με αυστηρή θεώρηση στο θέμα οικονομίας αποθηκευτικού χώρου, η επιλογή multi-
byte συνόλου χαρακτήρων όταν η δουλειά μπορεί να γίνει και με single byte
character set, αποτελεί σπατάλη χώρου! Για παράδειγμα, έστω ο τύπος CHAR(10):
 καταλαμβάνει 10 bytes αποθηκευτικού χώρου σε single-byte character set όπως πχ σε latin1
 καταλαμβάνει 30 bytes αποθηκευτικού χώρου σε multi-byte character set (πχ σε utf8 3 byte)
Πηγή: http://www.ovaistariq.net/632/understanding-mysql-binary-and-non-binary-string-data-types/
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 18 - Βάσεις Δεδομένων Ι
SQL – Structured Query Language
Δομημένη Γλώσσα Ερωτήσεων
 Με βάση τη χρήση διακρίνουμε δύο κύρια μέρη:
 DDL: Data Definition Language (Γλώσσα Δήλωσης των Δεδομένων)
περιλαμβάνει τις εντολές για δημιουργία και διαχείριση βάσεων δεδομένων (κατασκευή
πινάκων, ευρετηρίων, μεταβολές στα γνωρίσματα πινάκων, κτλ)
 τις χρησιμοποιούμε αρχικά στη σχεδίαση και μετέπειτα σε εργασίες συντήρησης
 DQL: Data Query Languare (Γλώσσα Ερωτήσεων στα Δεδομένα)
περιλαμβάνει τις εντολές για δημιουργία ερωτήσεων
 τις χρησιμοποιούμε από τη στιγμή που η ΒΔ μπαίνει σε παραγωγική χρήση
Θα δούμε στη συνέχεια παραδείγματα εντολών
από το κομμάτι DDL της SQL.
 Oι εντολές που θα δείτε στα επόμενα slides, στο εργαστήριο προκύπτουν ως
αποτέλεσμα της χρήσης του Workbench. Μπορείτε όμως να δημιουργήσετε μια
άδεια database και να δοκιμάσετε πάνω της τις παρακάτω εντολές γράφοντάς τες
με το χέρι στον sql editor και εκτελώντας τες.
 Θα δούμε περισσότερη SQL σε μελλοντικά μαθήματα και εργαστήρια.
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 19 - Βάσεις Δεδομένων Ι
Παραδείγματα SQL (DDL)
CREATE TABLE Movies (
title char(100),
year INT,
length INT,
genre char(10),
studioName char(30),
producerC int
);
CREATE TABLE MovieStars (
name char(30),
address varchar(255),
gender char(1) DEFAULT '?',
birthdate date
);
(το κόκκινο δεν είναι υποχρεωτικό)
DROP TABLE Movies; ALTER TABLE MovieStar ADD phone char(16);
προσθήκηκαιδιαγραφήγνωρισμάτων ALTER TABLE MovieStar DROP birthdate;
CREATE TABLE MovieStars (
name char(30) PRIMARY KEY,
address varchar(255),
gender char(1),
birthdate date
);
CREATE TABLE MovieStars (
name char(30),
address varchar(255),
gender char(1),
birthdate date,
PRIMARY KEY (name)
);
 Όταν ορίζουμε πρωτεύον κλειδί σε σχέση, ταυτόχρονα δημιουργείται εξ ορισμού ένα
ευρετήριο (το PRIMARY INDEX).
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 20 - Βάσεις Δεδομένων Ι
Ρυθμίσεις Γνωρισμάτων σε Workbench (1/2)
(για τα πρώτα εργαστήρια)
 Σε αυτό το παράδειγμα, δείτε την επίδραση που έχουν στον παραγόμενο SQL κώδικα
τα διάφορα στοιχεία της διεπαφής του MySQL Workbench για τη ρύθμιση στηλών.
CREATE TABLE Table1 (
demoColumn1 INT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
demoColumn2 VARCHAR(45) BINARY NOT NULL DEFAULT 'abcd',
PRIMARY KEY (demoColumn1, demoColumn2),
UNIQUE INDEX demoColumn_UNIQUE (demoColumn1 ASC),
UNIQUE INDEX demoColumn2_UNIQUE (demoColumn2 ASC) );
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 21 - Βάσεις Δεδομένων Ι
Ρυθμίσεις Γνωρισμάτων σε Workbench (2/2)
(τα επόμενα αφορούν στην εικόνα του slide #20)
(για τα πρώτα εργαστήρια)
 PK: ορίζουμε ότι το γνώρισμα συμμετέχει στον ορισμό του πρωτεύοντος κλειδιού
του πίνακα (Primary Key). Το πρωτεύον κλειδί είναι πάντα ΕΝΑ αλλά μπορεί να
αποτελείται από περισσότερα από ένα γνωρίσματα.
 NN: ορίσουμε ότι το γνώρισμα δεν θα μείνει χωρίς τιμή (Not Null). Τα γνωρίσματα
που συμμετέχουν στο πρωτεύον κλειδί υποχρεωτικά πρέπει να έχουν τιμή (γι'αυτό το
NN τους τσεκάρεται αυτόματα).
 UQ: ζητάμε ευρετήριο τύπου UNIQUE στο γνώρισμα (βλέπε και επόμενο slide).
 BIN: ζητάμε τα πεζά και κεφαλαία γράμματα να θεωρούνται διαφορετικά, σε πεδία
τύπου CHAR, VARCHAR και TEXT (και τις παραλλαγές του)
 UN: ζητάμε μόνο θετικούς (unsigned) ακεραίους. Αφορά σε πεδία τύπου INT (και
τις παραλλαγές του). Επηρεάζει το επιτρεπτό εύρος τιμών (βλέπε slide #12).
 ZF: ρύθμιση μορφοποίησης (αγνοήστε την!)
 AI: ζητάμε το γνώρισμα (τύπου INT ή παραλλαγών αυτού) να παίρνει αυτόματα
τιμές (Auto Incremental). Πολύ χρήσιμο καθώς μέσω αυτής της ρύθμισης
φτιάχνουμε τεχνητά πρωτεύοντα κλειδιά!
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 22 - Βάσεις Δεδομένων Ι
Ευρετήρια (Indexes) & Workbench
(για τα πρώτα εργαστήρια)
 Στην καρτέλα Columns στο Workbench (βλ. slide 20) τα checkboxes UQ ορίζουν
ευρετήριο στο εκάστοτε γνώρισμα, που όμως είναι τύπου UNIQUE, δηλαδή δεν θα
επιτρέπονται ίδιες τιμές σε αυτό το γνώρισμα, σε διαφορετικές πλειάδες.
 π.χ. αν το πεδίο είναι για καταχώριση του επώνυμου, δεν θα επιτρέπονται ίδια επώνυμα!
 μην το μπερδεύετε με το PRIMARY INDEX που προκύπτει από τον ορισμό κλειδιού
 Υπάρχει δυνατότητα ορισμού επιπλέον τύπων ευρετηρίου στην καρτέλα Indexes.
Στην διπλανή εικόνα π.χ. ορίζεται
ένα απλό (μίας στήλης) ευρετήριο
τύπου INDEX που (σε αντίθεση με το
τύπου UNIQUE) επιτρέπει ίδιες τιμές
στο γνώρισμα stuSurname.
 Τα ευρετήρια επιταχύνουν τις
αναζητήσεις (select) αλλά επιβρα-
δύνουν τις μεταβολές (insert,
update, delete)
 Περισσότερα στo PDF 06.
Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 23 - Βάσεις Δεδομένων Ι
Μετά το εργαστήριο 03,
όποιος δεν μπορεί να χειριστεί άνετα το Workbench
για εργασίες σαν αυτές που περιλαμβάνουν
οι ασκήσεις των εργαστηρίων 02 και 03,
καλύτερα να μην έρχεται στο εργαστήριο!

More Related Content

What's hot

Γ' Γυμνασίου Κύμα και Ενέργεια
Γ' Γυμνασίου Κύμα και ΕνέργειαΓ' Γυμνασίου Κύμα και Ενέργεια
Γ' Γυμνασίου Κύμα και ΕνέργειαHIOTELIS IOANNIS
 
φόρμα σεναρίου
φόρμα σεναρίουφόρμα σεναρίου
φόρμα σεναρίουvagmag12
 
τεχνικες διαφοροποιημενης διδασκαλιας στο μαθημα της φυσικης
τεχνικες διαφοροποιημενης διδασκαλιας  στο μαθημα της φυσικηςτεχνικες διαφοροποιημενης διδασκαλιας  στο μαθημα της φυσικης
τεχνικες διαφοροποιημενης διδασκαλιας στο μαθημα της φυσικηςtakshmou
 
mySQL Workbench Guide (στα Ελληνικά)
mySQL Workbench Guide (στα Ελληνικά)mySQL Workbench Guide (στα Ελληνικά)
mySQL Workbench Guide (στα Ελληνικά)Fotis Kokkoras
 
Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1marygeorg
 
ΣΕΝΑΡΙΟ Β1.4 ΠΥΘΑΓΟΡΕΙΟ ΘΕΩΡΗΜΑ
ΣΕΝΑΡΙΟ Β1.4 ΠΥΘΑΓΟΡΕΙΟ ΘΕΩΡΗΜΑΣΕΝΑΡΙΟ Β1.4 ΠΥΘΑΓΟΡΕΙΟ ΘΕΩΡΗΜΑ
ΣΕΝΑΡΙΟ Β1.4 ΠΥΘΑΓΟΡΕΙΟ ΘΕΩΡΗΜΑpliakas
 
3o Κεφάλαιο Γεωμετρίας Α΄ Λυκείου
3o Κεφάλαιο Γεωμετρίας Α΄ Λυκείου3o Κεφάλαιο Γεωμετρίας Α΄ Λυκείου
3o Κεφάλαιο Γεωμετρίας Α΄ ΛυκείουΜάκης Χατζόπουλος
 
Tροφικές σχέσεις και ροή ενέργειας
Tροφικές σχέσεις και ροή ενέργειαςTροφικές σχέσεις και ροή ενέργειας
Tροφικές σχέσεις και ροή ενέργειαςDespina Setaki
 
ΑΕΠΠ: 21ο Φύλλο Ασκήσεων
ΑΕΠΠ: 21ο Φύλλο ΑσκήσεωνΑΕΠΠ: 21ο Φύλλο Ασκήσεων
ΑΕΠΠ: 21ο Φύλλο ΑσκήσεωνNikos Michailidis
 
αεππ κεφαλαιο 1ο.ppt
αεππ   κεφαλαιο 1ο.pptαεππ   κεφαλαιο 1ο.ppt
αεππ κεφαλαιο 1ο.pptht101
 
ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΠΟΥΚΑΜΙΣΑΣ 2015
ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΠΟΥΚΑΜΙΣΑΣ 2015ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΠΟΥΚΑΜΙΣΑΣ 2015
ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΠΟΥΚΑΜΙΣΑΣ 2015Anastasios Timotheidis
 
συνολο τιμων συναρτησησ
συνολο τιμων συναρτησησσυνολο τιμων συναρτησησ
συνολο τιμων συναρτησησChristos Loizos
 
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΚεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΙωάννου Γιαννάκης
 
φυσικη γ γυμνασιου
φυσικη γ γυμνασιουφυσικη γ γυμνασιου
φυσικη γ γυμνασιουHIOTELIS IOANNIS
 
Η ΕΥΚΛΕΙΔΕΙΑ ΚΑΙ ΟΙ ΑΛΛΕΣ ΓΕΩΜΕΤΡΙΕΣ
Η ΕΥΚΛΕΙΔΕΙΑ ΚΑΙ ΟΙ ΑΛΛΕΣ ΓΕΩΜΕΤΡΙΕΣΗ ΕΥΚΛΕΙΔΕΙΑ ΚΑΙ ΟΙ ΑΛΛΕΣ ΓΕΩΜΕΤΡΙΕΣ
Η ΕΥΚΛΕΙΔΕΙΑ ΚΑΙ ΟΙ ΑΛΛΕΣ ΓΕΩΜΕΤΡΙΕΣΚΩΣΤΑΣ ΓΚΑΒΕΡΑΣ
 

What's hot (20)

Γ' Γυμνασίου Κύμα και Ενέργεια
Γ' Γυμνασίου Κύμα και ΕνέργειαΓ' Γυμνασίου Κύμα και Ενέργεια
Γ' Γυμνασίου Κύμα και Ενέργεια
 
φόρμα σεναρίου
φόρμα σεναρίουφόρμα σεναρίου
φόρμα σεναρίου
 
τεχνικες διαφοροποιημενης διδασκαλιας στο μαθημα της φυσικης
τεχνικες διαφοροποιημενης διδασκαλιας  στο μαθημα της φυσικηςτεχνικες διαφοροποιημενης διδασκαλιας  στο μαθημα της φυσικης
τεχνικες διαφοροποιημενης διδασκαλιας στο μαθημα της φυσικης
 
mySQL Workbench Guide (στα Ελληνικά)
mySQL Workbench Guide (στα Ελληνικά)mySQL Workbench Guide (στα Ελληνικά)
mySQL Workbench Guide (στα Ελληνικά)
 
Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1
 
ΣΕΝΑΡΙΟ Β1.4 ΠΥΘΑΓΟΡΕΙΟ ΘΕΩΡΗΜΑ
ΣΕΝΑΡΙΟ Β1.4 ΠΥΘΑΓΟΡΕΙΟ ΘΕΩΡΗΜΑΣΕΝΑΡΙΟ Β1.4 ΠΥΘΑΓΟΡΕΙΟ ΘΕΩΡΗΜΑ
ΣΕΝΑΡΙΟ Β1.4 ΠΥΘΑΓΟΡΕΙΟ ΘΕΩΡΗΜΑ
 
ερωτήσεις θεωρίας φυσικής γ γυμνασίου
ερωτήσεις θεωρίας φυσικής γ γυμνασίουερωτήσεις θεωρίας φυσικής γ γυμνασίου
ερωτήσεις θεωρίας φυσικής γ γυμνασίου
 
3o Κεφάλαιο Γεωμετρίας Α΄ Λυκείου
3o Κεφάλαιο Γεωμετρίας Α΄ Λυκείου3o Κεφάλαιο Γεωμετρίας Α΄ Λυκείου
3o Κεφάλαιο Γεωμετρίας Α΄ Λυκείου
 
Tροφικές σχέσεις και ροή ενέργειας
Tροφικές σχέσεις και ροή ενέργειαςTροφικές σχέσεις και ροή ενέργειας
Tροφικές σχέσεις και ροή ενέργειας
 
ΑΕΠΠ: 21ο Φύλλο Ασκήσεων
ΑΕΠΠ: 21ο Φύλλο ΑσκήσεωνΑΕΠΠ: 21ο Φύλλο Ασκήσεων
ΑΕΠΠ: 21ο Φύλλο Ασκήσεων
 
αεππ κεφαλαιο 1ο.ppt
αεππ   κεφαλαιο 1ο.pptαεππ   κεφαλαιο 1ο.ppt
αεππ κεφαλαιο 1ο.ppt
 
ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΠΟΥΚΑΜΙΣΑΣ 2015
ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΠΟΥΚΑΜΙΣΑΣ 2015ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΠΟΥΚΑΜΙΣΑΣ 2015
ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ ΠΟΥΚΑΜΙΣΑΣ 2015
 
συνολο τιμων συναρτησησ
συνολο τιμων συναρτησησσυνολο τιμων συναρτησησ
συνολο τιμων συναρτησησ
 
ΑΕΠΠ - Λογικές Εκφράσεις
ΑΕΠΠ - Λογικές ΕκφράσειςΑΕΠΠ - Λογικές Εκφράσεις
ΑΕΠΠ - Λογικές Εκφράσεις
 
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΚεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
 
ΑΕΠΠ - μάθημα 29
ΑΕΠΠ - μάθημα 29ΑΕΠΠ - μάθημα 29
ΑΕΠΠ - μάθημα 29
 
φυσικη γ γυμνασιου
φυσικη γ γυμνασιουφυσικη γ γυμνασιου
φυσικη γ γυμνασιου
 
Η ΕΥΚΛΕΙΔΕΙΑ ΚΑΙ ΟΙ ΑΛΛΕΣ ΓΕΩΜΕΤΡΙΕΣ
Η ΕΥΚΛΕΙΔΕΙΑ ΚΑΙ ΟΙ ΑΛΛΕΣ ΓΕΩΜΕΤΡΙΕΣΗ ΕΥΚΛΕΙΔΕΙΑ ΚΑΙ ΟΙ ΑΛΛΕΣ ΓΕΩΜΕΤΡΙΕΣ
Η ΕΥΚΛΕΙΔΕΙΑ ΚΑΙ ΟΙ ΑΛΛΕΣ ΓΕΩΜΕΤΡΙΕΣ
 
53
5353
53
 
πολυμέσα β γυμνασιου
πολυμέσα β γυμνασιουπολυμέσα β γυμνασιου
πολυμέσα β γυμνασιου
 

Recently uploaded

Επίσκεψη στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη              στο 11ο Γυμνάσιο ΠάτραςΕπίσκεψη              στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη στο 11ο Γυμνάσιο ΠάτραςDimitra Mylonaki
 
9.SPSS και δείκτες περιγραφικής στατιστικής.pdf
9.SPSS και δείκτες περιγραφικής στατιστικής.pdf9.SPSS και δείκτες περιγραφικής στατιστικής.pdf
9.SPSS και δείκτες περιγραφικής στατιστικής.pdfssuser2f8893
 
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptxΠασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx36dimperist
 
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξειςΓιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξειςΟΛΓΑ ΤΣΕΧΕΛΙΔΟΥ
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008Θεόδωρος Μαραγκούλας
 
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptxAthina Tziaki
 
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptxΠασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx36dimperist
 
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docxΗ Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docxeucharis
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο Χρύσα Παπακωνσταντίνου
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2οΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2οΧρύσα Παπακωνσταντίνου
 
Μαθητικά συμβούλια .
Μαθητικά συμβούλια                                  .Μαθητικά συμβούλια                                  .
Μαθητικά συμβούλια .Dimitra Mylonaki
 
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑΜια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑDimitra Mylonaki
 
Μαθητικές καταλήψεις
Μαθητικές                                  καταλήψειςΜαθητικές                                  καταλήψεις
Μαθητικές καταλήψειςDimitra Mylonaki
 
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνηΣουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνηTheodora Chandrinou
 
Επίσκεψη στο 12ο Γυμνάσιο Πάτρας
Επίσκεψη          στο 12ο Γυμνάσιο ΠάτραςΕπίσκεψη          στο 12ο Γυμνάσιο Πάτρας
Επίσκεψη στο 12ο Γυμνάσιο ΠάτραςDimitra Mylonaki
 
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptxΠασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx36dimperist
 
Επίσκεψη στο 10ο Γυμνάσιο Πάτρας
Επίσκεψη          στο 10ο Γυμνάσιο ΠάτραςΕπίσκεψη          στο 10ο Γυμνάσιο Πάτρας
Επίσκεψη στο 10ο Γυμνάσιο ΠάτραςDimitra Mylonaki
 

Recently uploaded (20)

Επίσκεψη στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη              στο 11ο Γυμνάσιο ΠάτραςΕπίσκεψη              στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη στο 11ο Γυμνάσιο Πάτρας
 
ΙΣΤΟΡΙΑ Γ΄ ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024
ΙΣΤΟΡΙΑ Γ΄ ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024ΙΣΤΟΡΙΑ Γ΄ ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024
ΙΣΤΟΡΙΑ Γ΄ ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024
 
9.SPSS και δείκτες περιγραφικής στατιστικής.pdf
9.SPSS και δείκτες περιγραφικής στατιστικής.pdf9.SPSS και δείκτες περιγραφικής στατιστικής.pdf
9.SPSS και δείκτες περιγραφικής στατιστικής.pdf
 
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptxΠασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
 
Σεβασμός .
Σεβασμός                                   .Σεβασμός                                   .
Σεβασμός .
 
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξειςΓιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008
 
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
 
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptxΠασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
 
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docxΗ Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2οΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
 
Μαθητικά συμβούλια .
Μαθητικά συμβούλια                                  .Μαθητικά συμβούλια                                  .
Μαθητικά συμβούλια .
 
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑΜια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
 
Μαθητικές καταλήψεις
Μαθητικές                                  καταλήψειςΜαθητικές                                  καταλήψεις
Μαθητικές καταλήψεις
 
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνηΣουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
 
Επίσκεψη στο 12ο Γυμνάσιο Πάτρας
Επίσκεψη          στο 12ο Γυμνάσιο ΠάτραςΕπίσκεψη          στο 12ο Γυμνάσιο Πάτρας
Επίσκεψη στο 12ο Γυμνάσιο Πάτρας
 
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptxΠασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
 
Επίσκεψη στο 10ο Γυμνάσιο Πάτρας
Επίσκεψη          στο 10ο Γυμνάσιο ΠάτραςΕπίσκεψη          στο 10ο Γυμνάσιο Πάτρας
Επίσκεψη στο 10ο Γυμνάσιο Πάτρας
 
ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024
ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ  : ΕΠΑΝΑΛΗΨΗ 2024ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ  : ΕΠΑΝΑΛΗΨΗ 2024
ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024
 

02 - Σχεσιακό Μοντέλο (Βασικές Έννοιες) - Τύποι Δεδομένων

  • 1. Βάσεις Δεδομένων Ι - 02 Σχεσιακό Πρότυπο Δεδομένων (Relational Data Model) (σύντομη παρουσίαση) Τύποι Δεδομένων Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας
  • 2. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 2 - Βάσεις Δεδομένων Ι Τι είναι τα Πρότυπα Δεδομένων;  Είναι σημειογραφικά συστήματα που χρησιμοποιούμε για την περιγραφή δεδομένων.  Τα πιο σημαντικά πρότυπα στα συστήματα βάσεων δεδομένων είναι το σχεσιακό πρότυπο και το πρότυπο των ημιδομημένων δεδομένων.  Τα πρότυπα δεδομένων περιλαμβάνουν 3 βασικά συστατικά:  Δομή Δεδομένων  ΔΕΝ εννοούμε τις δομές δεδομένων του προγραμματισμού αλλά εννοιολογικά πρότυπα.  Στο σχεσιακό πρότυπο η κύρια δομή δεδομένων είναι η σχέση/relation (ή πίνακας/table).  Στο πρότυπο ημιδομημένων δεδομένων η κύρια δομή δεδομένων είναι οι ιεραρχικά φωλιασμένες ετικέτες (tags), με κλασικό αντιπρόσωπο τα XML δένδρα.  Πράξεις επί των Δεδομένων  Στις γλώσσες προγραμματισμού: πράξεις είναι οτιδήποτε μπορεί να προγραμματιστεί!  Στο σχεσιακό πρότυπο έχουμε κύρια πράξεις πάνω σε πίνακες (σχεσιακή άλγεβρα) όπως π.χ. επιλογή των γραμμών που έχουν δεδομένη τιμή σε δεδομένη στήλη.  Στο πρότυπο ημιδομημένων δεδομένων ακολουθούμε διαδρομές στο δένδρο, ζητάμε την τιμή δεδομένου κόμβου, κτλ  Το πλήθος των επιτρεπτών πράξεων είναι μικρό. Αυτό οδηγεί σε απλές γλώσσες (πχ η SQL)  Περιορισμοί στα Δεδομένα  Στο σχεσιακό πρότυπο οι περιορισμοί μπορεί να είναι π.χ. στις δυνατές τιμές μιας στήλης.  Στο πρότυπο ημιδομημένων δεδομένων μπορεί πχ κάποιος τύπος κόμβου να πρέπει να περιέχει δεδομένους άλλους κόμβους, πιθανώς και με συγκεκριμένη σειρά, κτλ.
  • 3. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 3 - Βάσεις Δεδομένων Ι Πρότυπα Δεδομένων (συνέχεια)  Υπάρχουν και άλλα, λιγότερο διαδεδομένα πρότυπα δεδομένων στις ΒΔ όπως το αντικειμενοστραφές σχεσιακό πρότυπο όπου:  οι τιμές που αποθηκεύονται μπορεί να είναι σύνθετες δομές παρά απλοί αριθμοί και αλφαριθμητικά (που είπαμε ότι ισχύει στις σχεσιακές ΒΔ)  οι σχέσεις μπορεί να συνοδεύονται από μεθόδους (methods) όπως π.χ. στη C++  Είναι γεγονός ότι τα ημιδομημένα πρότυπα είναι πιο ευέλικτα από το σχεσιακό, ειδικά αν αναλογιστεί κανείς ότι στο ιεραρχικό πρότυπο μπορεί να ενσωματωθούν και δομές γράφων, που είναι πολύ χρήσιμες. Όμως, το σχεσιακό πρότυπο είναι περισσότερο διαδεδομένο καθώς:  παρέχει αποδοτικούς τρόπους πρόσβασης σε τεράστιους όγκους δεδομένων  η απλότητα του μοντέλου και το περιορισμένο πλήθος πράξεων στα δεδομένα έχουν οδηγήσει σε απλές γλώσσες προγραμματισμού που επιτρέπουν στους προγραμματιστές να μπορούν με απλές εντολές να κάνουν σχεδόν τα πάντα.  λίγες γραμμές κώδικα SQL ισοδυναμούν με εκατοντάδες γραμμές C  το περιορισμένο ρεπερτόριο εντολών της SQL μας επιτρέπει να γράψουμε αλγορίθμους βελτιστοποίησης των ερωτημάτων έτσι ώστε να προγραμματίζουμε με περισσότερο κατανοητή για εμάς σύνταξη αλλά τελικά να εκτελείται ο βέλτιστα διατυπωμένος για τον Η/Υ κώδικας.
  • 4. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 4 - Βάσεις Δεδομένων Ι Βασικές Αρχές Σχεσιακού Προτύπου (1/5)  Η βασική δομή δεδομένων είναι ο πίνακας (table) δύο διαστάσεων που ονομάζεται σχέση (relation). Για παράδειγμα έστω η σχέση Movies (ταινίες): title year length genre Gone with the Wind 1939 231 drama Star Wars 1977 124 sciFi Wayne's World 1992 95 comedy  κάθε γραμμή αφορά σε μία ταινία  κάθε στήλη αφορά σε μια ιδιότητα ταινίας  Όπως θα δούμε παρακάτω, σχέσεις θεωρούνται επίσης και:  τα αποτελέσματα ερωτήσεων (queries) – είναι και αυτά προσωρινοί πίνακες  οι όψεις (views) – σχέσεις που υπολογίζονται όταν χρειάζονται ή και από πριν  Οι στήλες μιας σχέσης ονομάζονται γνωρίσματα (attributes) (ή στήλες-columns)  προσδιορίζουν το είδος πληροφορίας της εκάστοτε στήλης  στο παράδειγμα: title, year, length (διάρκεια της ταινίας), genre (είδος ταινίας, π.χ. θρίλερ)  Θεωρητικά, η σειρά των γνωρισμάτων δεν παίζει ρόλο (γιατί είναι σύνολο/set). Στην πράξη όμως πρέπει να τη γνωρίζουμε και αυτή καθορίζεται από το schema.
  • 5. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 5 - Βάσεις Δεδομένων Ι Βασικές Αρχές Σχεσιακού Προτύπου (2/5)  Tο όνομα της σχέσης και το σύνολο των γνωρισμάτων της ονομάζονται σχήμα (schema) (στον πληθυντικό σχήματα – schemata).  ο τρόπος κωδικοποίησης ενός σχήματος είναι ο ακόλουθος π.χ. Movies(title, year, length, genre)  το όνομα της σχέσης συνηθίζεται να το γράφουμε με κεφαλαίο πρώτο γράμμα  το όνομα των γνωρισμάτων συνηθίζεται να το γράφουμε με μικρούς (πεζούς) χαρακτήρες  Σε μια ΒΔ συνήθως έχουμε πολλές σχέσεις (σχήματα)! Το σύνολο των σχημάτων μιας ΒΔ ονομάζεται σχήμα της ΒΔ (database schema).  Πρακτικά, ο ορισμός μια ΒΔ σημαίνει να ορίσουμε το schema της και αποτελεί τη σημαντικότερη εργασία σε ένα project που περιλαμβάνει ΒΔ.  Οι γραμμές μιας σχέσης ονομάζονται πλειάδες (tuples) ή γραμμές (rows) ή εγγραφές (records)  τρόπος γραφής μιας πλειάδας: (Star Wars, 1977, 124, scifi)  πρέπει όμως να λέμε και σε ποια σχέση ανήκει! (εδώ στην σχέση Ταινίες)  Σε κάθε γνώρισμα μιας σχέσης αντιστοιχεί ένα πεδίο τιμών δηλαδή ένας συγκεκριμένος πρωταρχικός τύπος, συνήθως αλφαριθμητικό ή αριθμός.  δεν προβλέπεται αποθήκευση σύνθετων τύπων (όπως λίστες, πίνακες, κτλ) μέσα σε γνώρισμα  στην καταγραφή του σχήματος μπορούμε να συμπεριλάβουμε και τύπους, ως εξής: π.χ. Movies(title:string, year:integer, length:integer, genre:string)
  • 6. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 6 - Βάσεις Δεδομένων Ι Βασικές Αρχές Σχεσιακού Προτύπου (3/5)  Προεπιλεγμένη τιμή (default) είναι η τιμή που χρησιμοποιείται σε μια στήλη αν δεν γνωρίζουμε κάποια άλλη τιμή. Αν δεν έχουμε ορίσει default, τότε είναι το NULL.  η προεπιλεγμένη τιμή μπορεί να υπολογίζεται τη στιγμή που χρειάζεται, όπως π.χ. με την τρέχουσα ημερομηνία και ώρα. Ισοδυναμία Αναπαραστάσεων  Οι σχέσεις είναι σύνολα (sets) και όχι κατάλογοι – άρα η σειρά των πλειάδων δεν παίζει ρόλο. Επίσης δεν παίζει ρόλο η σειρά των γνωρισμάτων αλλά (όπως ειπώθηκε) για πρακτικούς λόγους υιοθετούμε μια δεδομένη σειρά καθώς αυτή καθορίζει και τη σειρά των στηλών του πίνακα. Στιγμιότυπα Σχέσεων  Το σύνολο των πλειάδων μιας σχέσης αποτελεί ένα στιγμιότυπο (instance) αυτής της σχέσης. πχ. ο πίνακας στη διαφάνεια 4 είναι ένα στιγμιότυπο της σχέσης Movies.  Στην πορεία του χρόνου, καθώς π.χ. προσθέτουμε ταινίες στη σχέση Movies, προκύπτουν νέα στιγμιότυπα! Τα συμβατικά DBMS όμως διατηρούν μόνο μία εκδοχή της σχέσης: τις πλειάδες που βρίσκονται στη σχέση τώρα! Αυτό είναι το λεγόμενο τρέχον στιγμιότυπο.  Υπάρχουν και οι χρονικές βάσεις δεδομένων που τηρούν παρελθούσες εκδοχές των δεδομένων!
  • 7. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 7 - Βάσεις Δεδομένων Ι Βασικές Αρχές Σχεσιακού Προτύπου (4/5)  Κλειδιά Σχέσεων: το κλειδί (key) είναι ένα σύνολο γνωρισμάτων (συνήθως ένα μόνο γνώρισμα) της σχέσης για το οποίο δεν επιτρέπεται να υπάρχουν πλειάδες που να έχουν ίδια τιμή στα γνωρίσματα του κλειδιού. Για παράδειγμα:  στη σχέση Φοιτητής, ο αριθμός μητρώου είναι κλειδί! (κάθε φοιτητής έχει διαφορετικό ΑΜ)  στη σχέση Movies, έστω ότι ο συνδυασμός title και year είναι κλειδί (τα υπογραμμίζουμε). π.χ. Movies(title, year, length, genre)  Θεωρούμε ότι δεν θα υπάρξουν ταινίες που θα κυκλοφορήσουν την ίδια χρονιά με ίδιο τίτλο!  το year μόνο του δεν μπορεί να είναι κλειδί γιατί σε μια χρονιά κυκλοφορούν πολλές ταινίες!  το title μόνο του δεν μπορεί να είναι κλειδί γιατί υπάρχουν ταινίες που έχουν ίδιο τίτλο  ΠΡΟΣΟΧΗ: το κλειδί δεν ορίζεται με βάση το τρέχον στιγμιότυπο (δηλ. τα παρόντα δεδομένα) αλλά με βάση τα πιθανά στιγμιότυπα, δηλ. αυτά που θα προκύψουν μελλοντικά όταν θα καταχωρηθούν επιπλέον πλειάδες (δεδομένα).  Συχνά δεν είναι εύκολο να οριστούν κλειδιά και επειδή τα σύνθετα κλειδιά με πολλά γνωρίσματα είναι δύσχρηστα, ορίζουμε τεχνητά κλειδιά (artificial keys).  Τα τεχνητά κλειδιά συνήθως παίρνουν αυτόματα αριθμητικές τιμές 1, 2, 3, κ.ο.κ.  ΠΡΟΣΟΧΗ: Η υιοθέτηση από μέρους μας ως κλειδιού ενός γνωρίσματος του οποίου η τιμή ΔΕΝ ελέγχεται 100% από εμάς, μακροπρόθεσμα εμπεριέχει ρίσκο!  Έτσι εξηγείται γιατί κάθε φορέας έχει δικό του κωδικό (Αστ/κή Ταυτότητα, ΑΦΜ, ΑΜΚΑ, Τηλεφωνία, κτλ). Δεν είναι έτσι εξαρτημένος από τρίτους.
  • 8. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 8 - Βάσεις Δεδομένων Ι Βασικές Αρχές Σχεσιακού Προτύπου (5/5) Παράδειγμα Σχέσης - Σύνοψη title year length genre Gone with the Wind 1939 231 drama Star Wars 1977 124 sciFi Wayne's World 1992 95 comedy  Όνομα Σχέσης: Movies  Γνωρίσματα: 4 – title, year, length, genre  Σχήμα: Movies(title, year, length, genre)  Κλειδί: (title, year) (τα υπογραμμίζουμε στη σχέση)  Πλειάδες: 3  Πεδία Τιμών: Movies(title:string, year:integer, length:integer, genre:string) Τονίζεται ξανά ότι αν και οι τίτλοι στις 3 ταινίες του παραπάνω στιγμιότυπου της σχέ- σης Movies είναι διαφορετικοί, δε σημαίνει ότι μόνος του ο τίτλος μπορεί να αποτελέ- σει κλειδί. Δεν αποφασίζουμε το κλειδί με βάση το τρέχον στιγμιότυπο αλλά με βάση το πιθανό μελλοντικό στιγμιότυπο (όταν δηλαδή θα καταχωρηθούν επιπλέον ταινίες).
  • 9. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 9 - Βάσεις Δεδομένων Ι Τύποι Δεδομένων - Αλφαριθμητικά Να τονιστεί ότι κάθε υλοποίηση RDBMS πιθανώς να ακολουθεί τη δική της οδό ως προς τον ακρι- βή ορισμό των τύπων δεδομένων που υιοθετεί. Παρακάτω γίνεται αναφορά στους βασικούς τύπους δεδομένων που πάνω-κάτω υπάρχουν σε όλα τα RDBMS και γίνεται επιπλέον ειδική αναφορά στις όποιες ιδιαιτερότητες του MySQL RDBMS. Ανάλογα με την πλατφόρμα στην οποία δουλεύετε, να συμβουλεύστε την τεκμηρίωσή της (documentation, manuals). Για MySQL δείτε εδώ: http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html  Αλφαριθμητικά σταθερού μήκους: CHAR(N) όπου Ν ακέραιος ως 255  Τα χρησιμοποιούμε σε περιπτώσεις που το μήκος των δεδομένων που θέλουμε να καταχω- ρούμε είναι το πολύ Ν χαρακτήρες και δεν υπάρχει μεγάλη απόκλιση από αυτό το μήκος.  Λέμε σταθερού μήκους γιατί ότι και να καταχωρηθεί σε μια στήλη τέτοιου τύπου, θα καταλάβει χώρο Ν χαρακτήρων. Οπότε:  ο αριθμός ταυτότητας είναι ένα καλό παράδειγμα: έχει μήκος 8 πάντα  ο τίτλος ταινίας δεν είναι καλό παράδειγμα! υπάρχει μεγάλο εύρος τιμών στο πιθανό μήκος του  Αλφαριθμητικά μεταβλητού μήκους: VARCHAR(N) όπου Ν ακέραιος ως βλ. επόμενο slide  Χρήση σε περιπτώσεις που το μήκος των δεδομένων που θέλουμε να καταχωρούμε είναι το πολύ Ν χαρακτήρες και υπάρχει μεγάλη απόκλιση από αυτό το μήκος στα μήκη των αλφαριθ- μητικών που καταχωρούνται. Σε MySQL, αν Ν>255 τότε γίνεται TEXT (βλ. slide #10)  Δηλαδή, ο τύπος VARCHAR είναι πιο οικονομικός σε αποθηκευτικό χώρο από τον CHAR. O δεύτερος όμως είναι πιο γρήγορα διαχειρίσιμος από το RDBMS (λόγω του σταθερού μήκους!).
  • 10. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 10 - Βάσεις Δεδομένων Ι Τύποι Δεδομένων – Αλφαριθμητικά & Binary  Η μέγιστη τιμή του N στον τύπο varchar είναι 65535 αλλά αν η εγγραφή περιλαμβάνει και άλλες στήλες, η πραγματική μέγιστη τιμή είναι 65535 μείον τα bytes που καταλαμβάνουν οι υπόλοιπες στήλες.  TEXT: για μεγάλα non-binary αλφαριθμητικά (http://dev.mysql.com/doc/refman/5.0/en/string-types.html)  παραλλαγές του:  TINYTEXT (28 bytes = 255 χαρακτήρες),  TEXT (216 bytes = 64KΒ),  MEDIUMTEXT (224 bytes = 2GB),  LARGETEXT (232 bytes = 4GB)  BINARY(n) και VARBINARY(n) για αλληλουχίες bit (binary αλφαριθμητικά) μήκους ως n  στη λογική των τύπων CHAR και VARCHAR  BLOB: (Binary Large Object) για binary αλφαριθμητικά και γενικά binary data (πχ εικόνες)  παραλλαγές του (σε παρόμοια λογική με το TEXT):  TINYBLOB,  BLOB,  MEDIUMBLOB,  LARGEBLOB
  • 11. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 11 - Βάσεις Δεδομένων Ι Τύποι Δεδομένων - Αλφαριθμητικά  Έστω η λέξη 'ποδήλατο'  σε γνώρισμα τύπου varchar(12) θα αποθηκευτεί ακριβώς η λέξη 'ποδήλατο'  σε γνώρισμα τύπου char(12) θα αποθηκευτεί η λέξη και 4 κενά (spaces): 'ποδήλατο '  ΠΡΟΣΟΧΗ: Αν επιχειρήσουμε να αποθηκεύσουμε αλφαριθμητικό μεγαλύτερο από το διαθέσιμο χώρο, οι επιπλέον χαρακτήρες χάνονται!  Τεχνικές Λεπτομέρειες:  Στη γλώσσα SQL τα αλφαριθμητικά οριοθετούνται με μονά εισαγωγικά (και όχι με διπλά που συνηθίζεται στον προγραμματισμό).  Σε MySQL, αν κάποιος χαρακτήρας του αλφαριθμητικού είναι το μονό εισαγωγικό τότε πρέπει να μπει escaped. Αυτό σημαίνει να βάλουμε αριστερά του τον χαρακτήρα (backslash).  πχ. το 'Jane's World' σε μια έκφραση SQL θα γραφεί ως 'Jane's World'  ΠΡΟΣΟΧΗ: Δεν γίνεται σε όλα τα RDBMS με τον ίδιο τρόπο!  Δείτε προσεκτικά τα γραφόμενα σε επόμενα slides (#16, #17) με τίτλο:  Binary και non-Binary Τύποι Αλφαριθμητικών
  • 12. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 12 - Βάσεις Δεδομένων Ι Τύποι Δεδομένων – Boolean και Ακέραιοι  BOOLEAN: για λογικές τιμές TRUE (ή 1), FALSE (ή 0)  INT ή INTEGER για ακεραίους. Ανάλογα με το εύρος τιμών των αριθμών που θα αποθηκεύσουμε ίσως είναι καλύτερα μια εξειδίκευση αυτού του τύπου (βλ. πίνακα δεξιά με τι ισχύει σε MySQL).
  • 13. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 13 - Βάσεις Δεδομένων Ι Τύποι Δεδομένων – Δεκαδικοί Αριθμοί  Αριθμοί με υποδιαστολή:  Σταθερής υποδιαστολής (ή ακριβούς τιμής): τύπος DECIMAL (ή NUMERIC)  η αναπαράσταση αριθμών με τύπο DECIMAL είναι ακριβής και μαθηματικές πράξεις με αυτούς είναι επίσης ακριβείς. Για παράδειγμα, αν προσθέσουμε 1000 φορές το 0.001 θα πάρουμε 1 και όχι κάποιο δεκαδικό πολύ κοντά στο 1 (όπως πχ 0.9999999999999)  χρησιμοποιούνται όταν είναι σημαντικό να υπάρχει ακριβής αναπαράσταση αριθμών, όπως για παράδειγμα σε χρηματικά ποσά (fixed-point types ή exact value types).  σύνταξη: DECIMAL(n,d) – όπου n το πλήθος των ψηφίων εκ των οποίων d είναι τα δεκαδικά  γενικά ισχύει 0≤d≤n και ειδικότερα σε MySQL το dμπορεί να είναι από 0 ως 30.  Παραδείγματα: το 1234.56 απαιτεί δήλωση DECIMAL(6,2) (6 ψηφία, τα 2 δεκαδικά) ενώ μια δήλωση DECIMAL(5,2) επιτρέπει αριθμούς από -999.99 ως 999.99 (5 ψηφία, τα 2 δεκαδικά)  Κινητής υποδιαστολής (ή προσεγγιστικής τιμής): τύποι FLOAT (ή REAL)  σε MySQL επιτρέπεται δήλωση ψηφίων όπως στον τύπο DECIMAL αλλά για λόγους συμβατότητας με άλλες πλατφόρμες καλύτερα να το αποφεύγετε  η αναπαράσταση αριθμών με τύπους κινητής υποδιαστολής δεν είναι ακριβής (floating-point types ή approximate value types) και γι αυτό πρέπει να αποφεύγονται συγκρίσεις ισότητας  πχ σε FLOAT(7,4) αποθηκεύονται αριθμοί ως 999.9999. Αν επιχειρήσουμε να αποθηκεύσουμε τον αριθμό 999.00009 θα αποθηκευτεί 999.0001  o τύπος DOUBLE χρησιμοποιείται για δεκαδικούς υψηλότερης ακρίβειας καθώς δεσμεύει διπλάσια bytes αποθηκευτικού χώρου (8 έναντι 4)
  • 14. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 14 - Βάσεις Δεδομένων Ι Τύποι Δεδομένων - Ημερομηνίες  Χρονικά Δεδομένα:  Ο τύπος DATETIME πχ.'2012-10-15 12:25:59.5' δηλ συνδυασμός ημ/νίας και ώρας  κωδικοποίηση: YYYY-MM-DD HH:MM:SS  υποστηρίζει τιμές από 1000-01-01 00:00:00 ως 9999-12-31 23:59:59  O τύπος DATE είναι κατάλληλος όταν δεν ενδιαφέρει η ώρα  κωδικοποίηση: YYYY-MM-DD  υποστηρίζει τιμές από 1000-01-01 ως 9999-12-31  Ο τύπος TIME είναι κατάλληλος όταν δεν ενδιαφέρει η ημερομηνία  κωδικοποίηση: ΗΗ:ΜΜ:SS (ώρες:λεπτά:δεύτερα)  υποστηρίζει τιμές από -838:59:59 ως 838:59:59  Ο τύπος TIMESTAMP χρησιμοποιείται για να καταγράφεται η χρονική στιγμή δημιουργίας (ή και μεταβολής, σε πρόσφατες εκδόσεις MySQL) μιας εγγραφής σε ένα πίνακα!  Παλιά, ο τύπος TIMESTAMP έπρεπε να συνοδεύεται από την default τιμή current_timestamp. Πλέον μπαίνει αυτόματα το: current_timestamp on update current_timestamp  Χρήσιμο τύπος για λειτουργίες καταγραφής (auditing), όταν δηλαδή θέλουμε να καταγράψουμε αυτόματα πχ πότε έγινε μια καταχώριση σε ένα πίνακα.  YEAR: Ειδικός τύπος για έτη (με δύο ή τέσσερα ψηφία). Είναι ακέραιος 1 byte.  εύρος τιμών σε τετραψήφια εκδοχή: από 1901 ως 2155  εύρος τιμών σε διψήφια εκδοχή: 70 ως 69 εννοώντας δηλαδή 1970 ως 2069
  • 15. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 15 - Βάσεις Δεδομένων Ι Τύποι Δεδομένων – Σύνολα Τιμών  ENUM: αλφαριθμητικός τύπος αλλά με τις δυνατές τιμές του να προέρχονται από το κλειστό σύνολο τιμών που ορίζεται κατά τη φάση δήλωσης του τύπου (ή NULL).  π.χ. αν θέλουμε ένα γνώρισμα με όνομα size να παίρνει τιμές small, medium ή large τότε θα το δηλώσουμε ως εξής: size ENUM('small', 'medium', 'large')  σε MySQL, το σύνολο τιμών μπορεί να περιέχει ως 216 τιμές (65535)  SET: αλφαριθμητικός τύπος αλλά με τις δυνατές τιμές του να είναι το κενό αλφαριθ- μητικό (empty string '') ή οποιοσδήποτε συνδυασμός στοιχείων (χωρισμένα με κόμμα) από το σύνολο τιμών που ορίζεται κατά τη φάση δήλωσης του τύπου.  π.χ. η ακόλουθη δήλωση για το γνώρισμα test: test SET('one', 'two') NOT NULL επιτρέπει την καταχώριση τιμών όπως: '', 'one', 'two', 'one,two'  το σύνολο επιτρεπτών τιμών δέχεται ως 64 στοιχεία, το πολύ ---==! ΠΡΟΣΟΧΗ !==---  Για τις απαιτήσεις μνήμης των διαφόρων τύπων δεδομένων αλλά και τις τυχόν ιδιαιτερότητες στην υλοποίησή τους στο εκάστοτε RDBMS, να συμβουλεύεστε την τεκμηρίωση του εκάστοτε συστήματος. Για MySQL δείτε τη σελίδα: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
  • 16. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 16 - Βάσεις Δεδομένων Ι Binary και non-Binary Τύποι Αλφαριθμητικών (1/2) τα παρακάτω αφορούν στην υλοποίηση του MySQL Server (είναι αρκετά τεχνικές έννοιες αλλά βασικές για όποιο θέλει να γίνει 'pro')  Non-binary string data types: CHAR, VARCHAR, TEXT (και παραλλαγές του)  εδώ υπάρχουν οι έννοιες character set και collation  character set: το σύνολο χαρακτήρων που υποστηρίζονται – επίσης καθορίζει το πόσα bytes αποθηκευτικού χώρου καταλαμβάνει κάθε χαρακτήρας καθώς υπάρχουν χαρακτήρες του ενός byte αλλά και χαρακτήρες πολλών bytes (multi-byte characters) και μάλιστα σταθερού ή μεταβλητού αριθμού bytes.  π.χ. το utf8 Unicode σύνολο χαρακτήρων χρειάζεται 1 ως 3 bytes ανά χαρακτήρα  collation: καθορίζει την σειρά ταξινόμησης των χαρακτήρων σε ένα character set και έτσι χρησιμοποιείται στις συγκρίσεις αλφαριθμητικών.  Επίσης καθορίζει το κατά πόσο τα αλφαριθμητικά θα θεωρούνται case-sensitive ή case-insensitive και αυτό φαίνεται στο όνομα του collation (π.χ. utf8_general_ci, utf8_general_cs).  Το collation μπορεί να είναι και binary (π.χ. utf8_bin) στην οποία περίπτωση η σειρά των χαρακτήρων καθορίζεται από την τιμή των byte και όχι το τι αναπαριστούν (πχ το 'a' ως byte value είναι το 61). Άρα ένα binary collation είναι υποχρεωτικά case-sensitive γιατί π.χ. τα byte values των 'A' και 'a' διαφέρουν!  Binary string data types: BINARY, VARBINARY, BLOB (και παραλλαγές του)  τα binary strings ΔΕΝ έχουν character set και collation καθώς πρόκειται για αλληλουχίες από byte values – άρα είναι case-sensitive καθώς τα byte values πεζών και κεφαλαίων διαφέρουν  δεν υπάρχει η έννοια του multi-byte χαρακτήρα – το string είναι αλληλουχία από byte values!
  • 17. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 17 - Βάσεις Δεδομένων Ι Binary και non-Binary Τύποι Αλφαριθμητικών (2/2) Τι τύπο αλφαριθμητικού να χρησιμοποιήσω?  Αν πρόκειται να αποθηκεύσουμε δεδομένα που είναι κείμενο (πχ ονόματα, ειδησεογραφία, καταχωρήσεις σε κάποιο blog, περιγραφές προϊόντων, κτλ) τότε πρέπει να επιλέξουμε ένα non-binary string data type, δηλαδή CHAR, VARCHAR, TEXT (και τις παραλλαγές του).  Σε MySQL server (αντίθετα απ'ότι σε άλλα RDBMS), η σύγκριση τέτοιων αλφα- ριθμητικών γίνεται χωρίς διάκριση μικρών-κεφαλαίων. Αν θέλουμε διάκριση τότε βάζουμε στο πεδίο και τη ρύθμιση BINARY (βλ. slide 20, το BIN checkbox)  Αν πρόκειται να αποθηκεύσουμε δεδομένα τα οποία δεν είναι κείμενο αλλά αλληλουχίες από bytes (όπως πχ τα δεδομένα που συνιστούν μια εικόνα) τότε πρέπει να επιλέξουμε κάποιο τύπο binary string, δηλαδή: BINARY, VARBINARY, BLOB (και τις παραλλαγές του).  Με αυστηρή θεώρηση στο θέμα οικονομίας αποθηκευτικού χώρου, η επιλογή multi- byte συνόλου χαρακτήρων όταν η δουλειά μπορεί να γίνει και με single byte character set, αποτελεί σπατάλη χώρου! Για παράδειγμα, έστω ο τύπος CHAR(10):  καταλαμβάνει 10 bytes αποθηκευτικού χώρου σε single-byte character set όπως πχ σε latin1  καταλαμβάνει 30 bytes αποθηκευτικού χώρου σε multi-byte character set (πχ σε utf8 3 byte) Πηγή: http://www.ovaistariq.net/632/understanding-mysql-binary-and-non-binary-string-data-types/
  • 18. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 18 - Βάσεις Δεδομένων Ι SQL – Structured Query Language Δομημένη Γλώσσα Ερωτήσεων  Με βάση τη χρήση διακρίνουμε δύο κύρια μέρη:  DDL: Data Definition Language (Γλώσσα Δήλωσης των Δεδομένων) περιλαμβάνει τις εντολές για δημιουργία και διαχείριση βάσεων δεδομένων (κατασκευή πινάκων, ευρετηρίων, μεταβολές στα γνωρίσματα πινάκων, κτλ)  τις χρησιμοποιούμε αρχικά στη σχεδίαση και μετέπειτα σε εργασίες συντήρησης  DQL: Data Query Languare (Γλώσσα Ερωτήσεων στα Δεδομένα) περιλαμβάνει τις εντολές για δημιουργία ερωτήσεων  τις χρησιμοποιούμε από τη στιγμή που η ΒΔ μπαίνει σε παραγωγική χρήση Θα δούμε στη συνέχεια παραδείγματα εντολών από το κομμάτι DDL της SQL.  Oι εντολές που θα δείτε στα επόμενα slides, στο εργαστήριο προκύπτουν ως αποτέλεσμα της χρήσης του Workbench. Μπορείτε όμως να δημιουργήσετε μια άδεια database και να δοκιμάσετε πάνω της τις παρακάτω εντολές γράφοντάς τες με το χέρι στον sql editor και εκτελώντας τες.  Θα δούμε περισσότερη SQL σε μελλοντικά μαθήματα και εργαστήρια.
  • 19. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 19 - Βάσεις Δεδομένων Ι Παραδείγματα SQL (DDL) CREATE TABLE Movies ( title char(100), year INT, length INT, genre char(10), studioName char(30), producerC int ); CREATE TABLE MovieStars ( name char(30), address varchar(255), gender char(1) DEFAULT '?', birthdate date ); (το κόκκινο δεν είναι υποχρεωτικό) DROP TABLE Movies; ALTER TABLE MovieStar ADD phone char(16); προσθήκηκαιδιαγραφήγνωρισμάτων ALTER TABLE MovieStar DROP birthdate; CREATE TABLE MovieStars ( name char(30) PRIMARY KEY, address varchar(255), gender char(1), birthdate date ); CREATE TABLE MovieStars ( name char(30), address varchar(255), gender char(1), birthdate date, PRIMARY KEY (name) );  Όταν ορίζουμε πρωτεύον κλειδί σε σχέση, ταυτόχρονα δημιουργείται εξ ορισμού ένα ευρετήριο (το PRIMARY INDEX).
  • 20. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 20 - Βάσεις Δεδομένων Ι Ρυθμίσεις Γνωρισμάτων σε Workbench (1/2) (για τα πρώτα εργαστήρια)  Σε αυτό το παράδειγμα, δείτε την επίδραση που έχουν στον παραγόμενο SQL κώδικα τα διάφορα στοιχεία της διεπαφής του MySQL Workbench για τη ρύθμιση στηλών. CREATE TABLE Table1 ( demoColumn1 INT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, demoColumn2 VARCHAR(45) BINARY NOT NULL DEFAULT 'abcd', PRIMARY KEY (demoColumn1, demoColumn2), UNIQUE INDEX demoColumn_UNIQUE (demoColumn1 ASC), UNIQUE INDEX demoColumn2_UNIQUE (demoColumn2 ASC) );
  • 21. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 21 - Βάσεις Δεδομένων Ι Ρυθμίσεις Γνωρισμάτων σε Workbench (2/2) (τα επόμενα αφορούν στην εικόνα του slide #20) (για τα πρώτα εργαστήρια)  PK: ορίζουμε ότι το γνώρισμα συμμετέχει στον ορισμό του πρωτεύοντος κλειδιού του πίνακα (Primary Key). Το πρωτεύον κλειδί είναι πάντα ΕΝΑ αλλά μπορεί να αποτελείται από περισσότερα από ένα γνωρίσματα.  NN: ορίσουμε ότι το γνώρισμα δεν θα μείνει χωρίς τιμή (Not Null). Τα γνωρίσματα που συμμετέχουν στο πρωτεύον κλειδί υποχρεωτικά πρέπει να έχουν τιμή (γι'αυτό το NN τους τσεκάρεται αυτόματα).  UQ: ζητάμε ευρετήριο τύπου UNIQUE στο γνώρισμα (βλέπε και επόμενο slide).  BIN: ζητάμε τα πεζά και κεφαλαία γράμματα να θεωρούνται διαφορετικά, σε πεδία τύπου CHAR, VARCHAR και TEXT (και τις παραλλαγές του)  UN: ζητάμε μόνο θετικούς (unsigned) ακεραίους. Αφορά σε πεδία τύπου INT (και τις παραλλαγές του). Επηρεάζει το επιτρεπτό εύρος τιμών (βλέπε slide #12).  ZF: ρύθμιση μορφοποίησης (αγνοήστε την!)  AI: ζητάμε το γνώρισμα (τύπου INT ή παραλλαγών αυτού) να παίρνει αυτόματα τιμές (Auto Incremental). Πολύ χρήσιμο καθώς μέσω αυτής της ρύθμισης φτιάχνουμε τεχνητά πρωτεύοντα κλειδιά!
  • 22. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 22 - Βάσεις Δεδομένων Ι Ευρετήρια (Indexes) & Workbench (για τα πρώτα εργαστήρια)  Στην καρτέλα Columns στο Workbench (βλ. slide 20) τα checkboxes UQ ορίζουν ευρετήριο στο εκάστοτε γνώρισμα, που όμως είναι τύπου UNIQUE, δηλαδή δεν θα επιτρέπονται ίδιες τιμές σε αυτό το γνώρισμα, σε διαφορετικές πλειάδες.  π.χ. αν το πεδίο είναι για καταχώριση του επώνυμου, δεν θα επιτρέπονται ίδια επώνυμα!  μην το μπερδεύετε με το PRIMARY INDEX που προκύπτει από τον ορισμό κλειδιού  Υπάρχει δυνατότητα ορισμού επιπλέον τύπων ευρετηρίου στην καρτέλα Indexes. Στην διπλανή εικόνα π.χ. ορίζεται ένα απλό (μίας στήλης) ευρετήριο τύπου INDEX που (σε αντίθεση με το τύπου UNIQUE) επιτρέπει ίδιες τιμές στο γνώρισμα stuSurname.  Τα ευρετήρια επιταχύνουν τις αναζητήσεις (select) αλλά επιβρα- δύνουν τις μεταβολές (insert, update, delete)  Περισσότερα στo PDF 06.
  • 23. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ – ΤΕΙ Θεσσαλίας - 23 - Βάσεις Δεδομένων Ι Μετά το εργαστήριο 03, όποιος δεν μπορεί να χειριστεί άνετα το Workbench για εργασίες σαν αυτές που περιλαμβάνουν οι ασκήσεις των εργαστηρίων 02 και 03, καλύτερα να μην έρχεται στο εργαστήριο!