SlideShare a Scribd company logo
1 of 12
Download to read offline
- 1/12 -
Φώτης Κόκκορας, Καθ. Εφαρμογών
TEI Θεσσαλίας
Τμήμα Μηχανικών Πληροφορικής ΤΕ
411 10, Λάρισα
e-mail: fkokkoras@teilar.gr
Έκδοση 2.7.2 (16/02/2016)
Οδηγίες Βασικής Χρήσης του MySQL Workbench
Στις επόμενες σελίδες υπάρχει ένας αποσπασματικός οδηγός χρήσης του MySQL Workbench. Ο
οδηγός σε καμία περίπτωση δεν είναι πλήρης. Οι φοιτητές θα πρέπει να εξοικειωθούν με την εφαρ-
μογή μέσω των εργαστηριακών ασκήσεων και με επιπλέον προσωπική ενασχόληση. Για την ακρί-
βεια, το παρόν διανέμεται κύρια επειδή υπάρχουν φοιτητές που έχουν παρακολουθήσει σε παλαιό-
τερο εξάμηνο και επιθυμούν να δουλέψουν τις εργαστηριακές ασκήσεις μόνοι τους. Η σωστή χρή-
ση του οδηγού προϋποθέτει κατανόηση βασικών εννοιών Θεωρίας Βάσεων Δεδομένων.
To MySQL Workbench (http://dev.mysql.com/downloads/tools/workbench/) είναι μια γραφική διε-
παφή για την εύκολη χρήση του MySQL Server και επιτρέπει τριών ειδών εργασίες:
 Διαχείριση του MySQL Server (πχ δημιουργία χρηστών, απονομή δικαιωμάτων σε χρήστες, κτλ.)
 Σχεδίαση σχεσιακών βάσεων δεδομένων (δημιουργία πινάκων, συσχετίσεων μεταξύ τους, κτλ.)
 Δημιουργία και εκτέλεση SQL ερωτημάτων, όψεων, διαδικασιών, κτλ σε βάσεις δεδομένων.
Από τις τρεις αυτές ομάδες ενεργειών, η πρώτη και η τρίτη απαιτούν να τρέχει ήδη ο MySQL Server
καθώς το MySQL Workbench στέλνει τις εντολές του χρήστη στον MySQL Server για να εκτελεστούν εκεί.
Αντίθετα, οι λειτουργίες σχεδίασης (δεύτερη ομάδα) δεν εμπλέκουν τον MySQL Server.
Ο MySQL Server του XAMPP 5.6.12
Πρόσφατες εκδόσεις του XAMPP χρησιμοποιούν αντί του MySQL Server τον server MariaDB. Δεν είναι
γνωστό αυτή τη στιγμή αν ο παρών οδηγός για το MySQL Workbench λειτουργεί εξίσου και με MariaDB.
Η συμβουλή προς το παρόν είναι η χρήση παλαιότερης έκδοσης XAMPP (με MySQL) ή η εγκατάσταση
ξεχωριστού MySQL Server (όχι δηλ. διαμέσου του XAMPP). Η τελευταία έκδοση XAMPP με MySQL είναι
η 5.6.12. Άρα χρειάζεστε1
το xampp-win32-5.6.12-0-VC11-installer.exe από εδώ:
https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/5.6.12/
Εγκατάσταση
Για τις ανάγκες του μαθήματος, θεωρούμε τον MySQL Server μιας XAMPP εγκατάστασης καθώς ο οδη-
γός αφορά στα μαθήματα Βάσεων Δεδομένων και
Προγραμματισμού Εφαρμογών Διαδικτύου. Η εγκατά-
σταση του XAMPP δεν έχει κάποια ιδιαίτερη δυσκολία.
Επιλέξτε ΜΟΝΟ τα υποσυστήματα που βλέπετε στην
εικόνα αριστερά. Ο default φά-
κελος εγκατάστασης του XAMPP
είναι ο C:xampp και δεν έχετε
λόγο να τον αλλάξετε. Επιπρό-
σθετα δεν θα χρειαστείτε ούτε
τα περί BitNami που εμφανίζει ο
εγκαταστάτης του XAMPP στη συνέχεια (uncheck το
"Learn more..." – βλ. δεξιά εικόνα).
1
Αν θέλετε μπορείτε να εγκαταστήσετε ξεχωριστά τα Apache, MySQL Server και PHP, με τις αυτόνομες διανομές τους. Έτσι
έχετε απόλυτο έλεγχο στο τι θα βάλετε, πλην όμως παίρνει περισσότερο χρόνο (φυσικά είναι πολύ καλό για να μάθετε).
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 2/12
Εκκίνηση και troubleshooting
Μετά την εγκατάσταση, τρέχετε την εφαρμογή XAMPP Control Panel. Ο MySQL Server ξεκινά με το κου-
μπί Start (βλ. Εικόνα 1) και σταματά με το ίδιο κουμπί (που στο μεταξύ γίνεται Stop). Αν ο MySQL Server
δεν ξεκινά, τότε πιθανότατα έχετε ήδη εγκατεστημένο τον MySQL Server και το XAMPP Control Panel
δεν μπορεί να εντοπίσει τον MySQL Server του XAMPP. Για να το επιβεβαιώσετε, εκκινήστε την εφαρ-
μογή ελέγχου των services (υπηρεσίες) που τρέχουν στο παρασκήνιο των Windows (Εικόνα 2). Ψάξτε
για την υπηρεσία mySQL και σταματήστε την με το Stop ώστε στη στήλη Status (βλ. Εικόνα 2) να μην
γράφει κάτι.
Εικόνα 1: Το XAMPP Control Panel.
Εικόνα 2: Services σε Windows 7.
Εφόσον το πρόβλημα είναι το παραπάνω, μετά το σταμάτημα της υπηρεσίας MySQL, για να εκκινή-
σετε τον MySQL Server του XAMPP, πηγαίνετε στον φάκελο C:xampp και τρέξτε το
mysql_start.bat. Θα δείτε το παράθυρο που απεικονίζεται στην Εικόνα 3 (μην το κλείσετε!!!):
Εικόνα 3: Εκκίνηση του MySQL Server του XAMPP, μέσω του mysql_start.bat.
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 3/12
Ελαχιστοποιείστε το παράθυρο αυτό – στη συνέχεια θα δουλέψετε στο MySQL Workbench. Όταν
τελειώσετε, θα πρέπει να κλείσετε τον MySQL Server τρέχοντας το αρχείο mysql_stop.bat.
ΑΡΑ: αν δεν υπάρχει άλλη εγκατάσταση MySQL Server στο PC σας, θα ανοιγοκλείνετε τον MySQL
Server του XAMPP μέσω του XAMPP Control Panel. Αν όμως υπάρχει άλλη εγκατάσταση MySQL server,
θα πρέπει να σταματάτε τη λειτουργία του και να ανοιγοκλείνετε τον MySQL Server του XAMPP μέσω
των δύο αρχείων *.bat που προαναφέρθηκαν.
Στη συνέχεια θα δούμε συνοπτικά τις βασικές λειτουργίες
του MySQL Workbench.
Εγκατάσταση MySQL Workbench
Θα βρείτε την τελευταία έκδοση της εφαρμογής στη διεύθυνση:
http://dev.mysql.com/downloads/workbench/
Πάρτε την 32 bit έκδοση, ακόμη κι αν έχετε Windows 64 bit καθώς μόνο αυτή μπορεί να μιλήσει με τον
32bit MySQL server του XAMPP!.
Η εφαρμογή εξελίσσεται συνεχώς οπότε είναι καλό να έχετε την τελευταία έκδοση. Μπορείτε να κά-
νετε εγκατάσταση τυχόν νέας έκδοσης πάνω από την παλιά (στον ίδιο φάκελο) χωρίς πρόβλημα.
Το Workbench έχει κάποια προαπαιτούμενα για να τρέξει. Αυτά περιγράφονται στην παραπάνω
ιστοσελίδα (στο σημείο MySQL Workbench Prerequisites) – φροντίστε να τα εγκαταστήσετε αν το
Workbench αρνείται να εγκατασταθεί/τρέξει. Η εγκατάσταση δεν έχει κάποια ιδιαίτερη δυσκολία.
Σύνδεση Workbench με MySQL Server
Όπως είπαμε, με εξαίρεση τη σχεδίαση βάσεων δεδομένων, το Workbench απαιτεί να συνδεθεί σε έναν
MySQL Server. Μετά την εκκίνηση του Workbench για πρώτη φορά, βλέπετε την Εικόνα 4:
Εικόνα 4: Το παράθυρο του MySQL Workbench.
Πατήστε το κουμπί δημιουργίας νέας σύνδεσης, δώστε ένα Connection Name (π.χ. myConnection)
και πατήστε το κουμπί Test Connection. Θα πρέπει να δείτε το παράθυρο στην Εικόνα 5.
Πατήστε ΟΚ να κλείσουν τα 2 παράθυρα. Πλέον είστε έτοιμοι ...για όλα. Η σύνδεση που φτιάξατε θα
παραμείνει στο χώρο εργασίας του Workbench (βλ. δεξιά) και πλέον μπορείτε να χρησιμοποιείτε αυτή
κάθε φορά που θέλετε να συνδεθείτε στον MySQL Server.
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 4/12
Εικόνα 5: Σύνδεση Workbench με MySQL Server μέσω του user root.
ΠΡΟΣΟΧΗ: το Workbench συνδέεται στον serv-
er μέσω του λογαριασμού root που είναι ο ad-
ministrator (διαχειριστής) του MySQL Server. Αρ-
χικά (για ευκολία), ο χρήστης root ΔΕΝ έχει ορι-
σμένο password. Μπορείτε για τις ανάγκες του
μαθήματος να τον αφήσετε χωρίς password. Σε
πραγματικές συνθήκες όμως πρέπει να ορίσετε
password διαφορετικά ο MySQL Server σας είναι
τρομερά εκτεθειμένος!!! Επίσης αργότερα θα μά-
θετε ότι ο root δεν είναι κατάλληλος για τις πε-
ριπτώσεις τελικής χρήσης (deployment).
Data Μodeling (σχεδίαση της database2)
Η σχεδίαση της βάσης δεδομένων ξεκινά επιλέγοντας το κουμπάκι με το (+) στην αρχική οθόνη του
Workbench. Στη συνέχεια κάντε double click στο εικονίδιο Add Diagram στο πάνω μέρος και θα πάρετε
το αποτέλεσμα που βλέπετε στην Εικόνα 6.
Μπορείτε να αποκρύψετε το δεξί sidebar (1) για να έχετε περισσότερο χώρο σχεδίασης. Ορίζετε πί-
νακες και συσχετίσεις ξένων κλειδιών (foreign keys) με τα κουμπιά (3) και (4) του toolbar, όπως φαίνε-
ται στην Εικόνα 6. Προσέξτε ιδιαίτερα το (4) – είναι το τελευταίο κουμπάκι στο toolbar – όταν δεν φαί-
νεται όλο το toolbar μπορεί να κάνετε λάθος καθώς θα είναι κρυμμένο!
Η database που έχετε αρχικά ονομάζεται mydb (βλ. (2) σε Εικόνα 6). Αυτό αλλάζει με δεξί κλικ στο
όνομα της db στο Catalog Tree (βλ. Εικόνα 7), επιλογή του Edit Schema και αλλαγή του ονόματος στο
πεδίο Name. Συμβουλή: Χρησιμοποιήστε πεζούς λατινικούς χαρακτήρες και κάτω παύλα αντί για κενό.
2
Δεν είναι απαραίτητο να "τρέχει" ο MySQL Server για να λειτουργήσει το τμήμα σχεδίασης του MySQL Workbench.
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 5/12
Εικόνα 6: Παράθυρο σχεδίασης database (database schema design – ΟΧΙ E-R διάγραμμα!)
Στο πεδίο Collation ρυθμίζουμε τα character set και collation που θα ισχύουν στους πίνακες της da-
tabase, αν δεν το ορίσουμε ρητά σε αυτούς. Character set είναι το σύνολο χαρακτήρων που υποστηρί-
ζονται (π.χ. utf8 Unicode). Το Collation καθορίζει την σειρά ταξινόμησης των χαρακτήρων σε ένα
character set, άρα επηρεάζει τις ταξινομήσεις αλφαριθμητικών. Τυπική ρύθμιση για υποστήριξη πολυ-
γλωσσίας είναι το utf8_general_ci (το ci είναι από το case insensitive). Περισσότερα στα slides θεωρίας.
Εικόνα 7: Μετονομασία database και ρύθμιση character set και collation.
Σχεδίαση Πινάκων
Αφού εισάγουμε πίνακα/table στο χώρο σχεδίασης (βλ. (3) Εικόνα 6), κάνουμε διπλό κλικ πάνω του για
να τον ρυθμίσουμε. Φανερώστε τις κρυμμένες ρυθμίσεις (1) και ορίστε όνομα (Table Name) και πιθα-
νώς Collation (αν θέλετε να αλλάξετε το default που σας δίνει η database). Στο Engine (2) να έχετε
InnoDB – είναι η σύγχρονη database μηχανή "κάτω από το καπό της MySQL" που αντικαθιστά την παλιά
ISAM και υποστηρίζει μεταξύ άλλων συναλλαγές (transactions) και κανόνες ακεραιότητας δεδομένων
(referential integrity constraints). Ενδείκνυται εμφατικά η χρήση της InnoDB σε νέες databases (προσοχή
στο Google – το web είναι γεμάτο με αναφορές στην παλιά μηχανή ISAM).
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 6/12
Εικόνα 8: Βασικές ρυθμίσεις πίνακα.
Μπορείτε να ορίσετε δύο στήλες (3), όπως στο παράδειγμα στην Εικόνα 8. Βάλτε τις ρυθμίσεις που
βλέπετε – θα τις εξηγήσουμε παρακάτω. Προσέξτε ότι θεωρητικά υπάρχουν πάρα πολλά πράγματα που
μπορεί να ρυθμίσει κανείς. Δείτε πόσα tabs υπάρχουν στο κάτω μέρος (4) - θα τα δούμε σταδιακά.
Για τα ονόματα στηλών (και για να κάνετε τη ζωή σας εύκολη), χρησιμοποιείστε λατινικούς χαρακτή-
ρες και κάτω παύλα αντί για κενό. Αποφεύγετε τα greeklish για ονόματα πεδίων – ανοίξτε ένα λεξικό και
βρείτε την αγγλική λέξη της έννοιας που θέλετε. Μια διαδεδομένη τακτική για ευανάγνωστο όνομα
πολλών λέξεων είναι η χρήση κεφαλαίου γράμματος εσωτερικά, π.χ. firstName, dateOfBirth.
Για τους τύπους δεδομένων θα ακούσετε αναλυτικά στη θεωρία. Εδώ βάλτε ότι βλέπετε στην Εικόνα
8. INT είναι ακέραιος ενώ varchar(45) αλφαριθμητικό ως 45 χαρακτήρες. Γενικά τα γνωρίσματα (attrib-
utes ή στήλες/columns) του πίνακα τα ορίζουμε και τα ρυθμίζουμε όπως απαιτεί η εφαρμογή που θέ-
λουμε να φτιάξουμε. Η σειρά τους (αν αλλάξαμε γνώμη) αλλάζει με σύρσιμο ενώ διαγράφονται εύκολα
με right click και μετά Delete Selected.
Για να δούμε τώρα τι είναι όλα αυτά τα checkboxes που υπάρχουν σε κάθε γνώρισμα.
 PK: δηλώνουμε ότι το γνώρισμα συμμετέχει στον ορισμό του πρωτεύοντος κλειδιού του πίνακα
(Primary Key). Το πρωτεύον κλειδί πρακτικά είναι ΕΝΑ αλλά μπορεί να αποτελείται από περισσό-
τερα από ένα γνωρίσματα. Οι στήλες που ορίζουν το πρωτεύον κλειδί δεν μπορεί να μην έχουν
τιμή (γι αυτό όταν ορίζετε το PK επιλέγεται και το NN).
 NN: δηλώνουμε ότι το γνώρισμα πρέπει να έχει τιμή (Not Null). Τα γνωρίσματα που συμμετέχουν
στο πρωτεύον κλειδί υποχρεωτικά πρέπει να έχουν τιμή (το NN τους επιλέγεται αυτόματα).
 UQ: ζητάμε ευρετήριο τύπου UNIQUE στο γνώρισμα, δηλ. δεν μπορεί να υπάρχουν δύο εγγραφές
με ίδια τιμή σε αυτό το γνώρισμα. Το NULL επιτρέπεται σε στήλη με ευρετήριο UQ. Για παράδειγ-
μα, σε πίνακα φοιτητών με πρωτεύον κλειδί τον αριθμό μητρώου μπορούμε να έχουμε ευρετήριο
UQ στον αριθμό ταυτότητας (ή στο email) που είναι μοναδικά για κάθε φοιτητή. Μην συγχέετε το
πρωτεύον κλειδί με το ευρετήριο UNIQUE. Το πρωτεύον κλειδί εξ ορισμού επιτρέπει μόνο μονα-
δικές (και όχι NULL) τιμές και δεν απαιτεί να βάλετε και τη ρύθμιση UQ. Ο ρόλος των ευρετηρίων
γενικά, είναι να επιταχύνουν τις ερωτήσεις SELECT (καθυστερούν όμως τις INSERT και UPDATE!).
Άρα σκεφτείτε αν πρόκειται να κάνετε αναζητήσεις με αυτή τη στήλη ή αν ο πίνακας θα μεταβάλ-
λεται συνεχώς. Δευτερευόντως τα χρησιμοποιούμε για να εξασφαλίσουμε μοναδικές τιμές. Εκτός
από UNIQUE, υπάρχουν και άλλοι τύπου ευρετηρίων (δείτε στο tab Indexes – βλ. (4) Εικόνα 8).
 BIN: σε πεδία τύπου CHAR, VARCHAR και TEXT (και τις παραλλαγές του) ζητάμε τα πεζά και κεφα-
λαία γράμματα να θεωρούνται διαφορετικά – περισσότερα στη θεωρία.
 UN: ζητάμε μόνο θετικούς (unsigned) ακεραίους. Αφορά σε πεδία τύπου INT (και τις παραλλαγές
του). Επηρεάζει το επιτρεπτό εύρος τιμών. Π.χ. αντί για εύρος από -127 ως 128 έχουμε 0 ως 255.
 ZF: ρύθμιση μορφοποίησης αριθμών (αγνοήστε την!)
 AI: ζητάμε το γνώρισμα τύπου INT (ή παραλλαγών αυτού) να παίρνει αυτόματα τιμές (Auto
Incremental). Πολύ χρήσιμο καθώς μέσω αυτής της ρύθμισης ορίζουμε γνωρίσματα που προορί-
ζονται για (τεχνητά) πρωτεύοντα κλειδιά!
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 7/12
Στη στήλη Default των ρυθμίσεων βάζουμε αν θέλουμε default τιμές για τα πεδία, δηλαδή τιμές που
θα καταχωρηθούν αυτόματα αν εμείς δεν δώσουμε τιμή.
Η default τιμή current_timestamp σε πεδίο τύπου TIMESTAMP βάζει αυτόματα στο πεδίο ως τιμή
την τρέχουσα ημερομηνία και ώρα του συστήματος (του MySQL server) της στιγμής που δημιουργείται
η εγγραφή (πολύ καλό για καταγραφή του πότε εισήχθη κάτι στον πίνακα). Αν χρησιμοποιήσετε τύπο
γνωρίσματος TIMESTAMP και δεν βάλετε default τιμή το current_timestamp (το αφήσετε κενό) τότε η
στήλη θα ενημερώνετε και κάθε φορά που αλλάζει κάτι στην εγγραφή (πολύ καλό για να ξέρετε πότε
μεταβλήθηκε τελευταία φορά μια εγγραφή).
Ορισμός "ξένου κλειδιού"
Το ξένο κλειδί (foreign key) είναι ένα γνώρισμα (στήλη) σε έναν πίνακα, το οποίο είναι πρωτεύον κλειδί
σε άλλο πίνακα. Εφόσον φτιάχνουμε σχεσιακό μοντέλο και έχουμε χρήση ξένων κλειδιών, πρέπει να τα
ορίσουμε. Δηλώνουμε σχέσεις ξένου κλειδιού πάνω σε ήδη ορισμένα γνωρίσματα με το κουμπί (4) (βλ.
Εικόνα 6). Γίνεται και με άλλα κουμπάκια συσχετίσεων αλλά αυτός ο τρόπος σας καλύπτει ΠΑΝΤΑ. Οπό-
τε ας μάθουμε καλά αυτόν! Η βασική ιδέα σε αυτό τον τρόπο είναι ότι πρώτα φτιάχνουμε τα γνωρίσμα-
τα και μετά ορίζουμε τη συσχέτιση ξένου κλειδιού (με τον τρόπο που περιγράφεται στη συνέχεια).
Έστω ότι έχουμε τους δύο πίνακες στην Εικόνα 9. Το γνώρισμα departmentID στον πίνακα students
είναι ξένο κλειδί, καθώς ορίζει σε ποιο Τμήμα ανήκει ο φοιτητής (έστω ότι κάθε φοιτητής ανήκει σε ένα
και μόνο ένα Τμήμα). Προσέξτε ότι του δώσαμε ίδιο όνομα (για δική μας ευκολία – δεν είναι υποχρεω-
τικό) και με εξαίρεση το AI, το ρυθμίσαμε παρόμοια (το ΑΙ χρειάζεται στο department.departmentID
γιατί εκεί γεννιούνται οι τιμές – δεν χρειάζεται στο students.departmentID γιατί εκεί επαναχρησιμοποι-
ούνται υπάρχουσες τιμές).
Εικόνα 9: Σχέση ξένου κλειδιού.
Κάνουμε λοιπόν click στο κουμπί (Εικόνα 6) και μετά κατά σειρά (Εικόνα 9):
(1) στον πίνακα που φιλοξενεί το ξένο κλειδί (τον students), κάνουμε κλικ στο γνώρισμα (attribute)
που αποτελεί το ξένο κλειδί (δηλαδή στο departmentID)
(2) στον πίνακα που ορίζει το ξένο κλειδί (δηλ. στον department), κάνουμε κλικ στο ίδιο γνώρισμα
Εικόνα 10: Επεξεργασία συσχέτισης ξένου κλειδιού.
Για πιο ευέλικτη απεικόνιση των συσχετίσεων μεταξύ πινάκων, από το μενού Model -> Relationship
Notation επιλέξτε Connect to Columns. Τα 1 και  που βλέπετε στα άκρα της γραμμής συσχέτισης
(Εικόνα 9) ορίσουν ότι η σχέση είναι ένα-προς-πολλά (ένας student ανήκει σε ένα και μόνο ένα depart-
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 8/12
ment και ένα department έχει κανέναν, έναν ή περισσότερους students). Προσέξτε ότι στο παράδειγμα
το students.departmentID είναι και NN (γεμισμένος ρόμβος) – αυτός είναι ο λόγος που παραπάνω ει-
πώθηκε ότι ένας student ανήκει σε ένα και μόνο ένα department και όχι ένας student ανήκει σε κανένα
ή ένα department. Αν θέλετε σχέση ένα-προς-ένα, υπάρχουν επιπλέον ρυθμίσεις με right click πάνω στη
γραμμή συσχέτισης, επιλογή του Edit Relationship..., και μετά κάτω tab, Foreign Key (Εικόνα 10). Δεν θα
επεκταθούμε προς το παρόν περισσότερο – θα τα δούμε σε σχετικό μάθημα.
Οι δηλώσεις ξένου κλειδιού καταχωρούνται στον πίνακα που φιλοξενεί το ξένο κλειδί. Για να τις δεί-
τε και να ορίσετε κανόνες ακεραιότητας δεδομένων, πηγαίνετε στις ρυθμίσεις αυτού του πίνακα (με
διπλό κλικ στον πίνακα) στην καρτέλα Foreign Keys (βλ. Εικόνα 11). Για κάθε ξένο κλειδί πρέπει να ορί-
σετε τι θα γίνεται αν η τιμή του αλλάξει στον πατρικό πίνακα (On Update) ή/και όταν σβήσει η σχετική
εγγραφή στον πατρικό πίνακα. Π.χ. αν αλλάξει (update) το departmentID κάποιου τμήματος (στον πίνα-
κα departments) τι θα γίνει με τους φοιτητές στον πίνακα students που έχουν ως departmentID αυτή
την τιμή; Παρόμοια, τι θα γίνει αν διαγραφεί ένα department του οποίου το departmentID είναι σε χρή-
ση σε κάποια εγγραφή στον πίνακα students;
Εικόνα 11: Ξένα κλειδιά και referential integrity constraints (On Update, On Delete).
Συνήθεις επιλογές είναι (περισσότερα στη θεωρία και τα εργαστήρια):
Για το Update: CASCADE - Αλλάζει αυτόματα τις τιμές παντού όταν αλλάζει το ξένο κλειδί.
RESTRICT - Δεν αφήνει να αλλάξει τιμή ένα κλειδί που είναι σε χρήση αλλού ως ξένο
κλειδί.
Για το Delete: CASCADE - Σβήνει αυτόματα στους πίνακες που χρησιμοποιούν το πεδίο ως ξένο
κλειδί, όλες τις εγγραφές που χρησιμοποιούν το κλειδί που διαγράφηκε!
RESTRICT - Δεν επιτρέπει να γίνει διαγραφή κλειδιού που είναι σε χρήση ως ξένο
κλειδί σε άλλους πίνακες.
Η μηχανή ISAM δεν υποστηρίζει περιορισμούς ακεραιότητας δεδομένων. Αυτό έχει σαν αποτέλεσμα
να πρέπει να υλοποιηθούν οι σχετικοί έλεγχοι προγραμματιστικά, δηλαδή στην εφαρμογή που θα χτι-
στεί πάνω από την database. Αυτό είναι ένα πολύ σοβαρό μειονέκτημα της ISAM και από μόνο του αρ-
κεί για να προτιμήσετε τη μηχανή InnoDB (η οποία πλέον είναι η default στον MySQL server).
Εισαγωγή Δεδομένων κατά τη Σχεδίαση
Αν θέλετε να εισάγετε (αυτόματα) δεδομένα (εγγραφές) στους πίνακες που θα δημιουργηθούν, τότε
πρέπει να κάνετε καταχωρήσεις στην καρτέλα Inserts (Εικόνα 12) Εκεί εμφανίζεται ένα grid με σειρές
(εγγραφές) και στήλες (γνωρίσματα) στο οποίο καταχωρείτε όσες εγγραφές θέλετε.
Δεν πρέπει να παραβιάζετε τις αρχές σχεδίασης των πινάκων σας. Αν ένα γνώρισμα είναι τύπου
ημ/νία πρέπει να δώσετε σωστή ημ/νία. Αν δεν το κάνετε, αργότερα θα προκύψει πρόβλημα (μη ξεχνά-
τε ότι ακόμη σχεδιάζουμε, δεν φτιάχτηκε ακόμη η database). Στα auto-incremental γνωρίσματα πρέπει
επίσης να δώσετε τιμή, παρόλο που σε πραγματικές συνθήκες λειτουργίας μπαίνει τιμή αυτόματα. Στο
τέλος πρέπει να πατήσετε το button με το πράσινο check για να καταγραφούν οι καταχωρήσεις που κά-
νατε!
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 9/12
Εικόνα 12: Καταχώρηση δεδομένων στη φάση σχεδίασης.
Τα δεδομένα που καταχωρείτε με αυτό τον τρόπο, θα μετατραπούν σε εντολές SQL για εισαγωγή
των δεδομένων στην database. Αυτός ο SQL κώδικας ενσωματώνεται στο τέλος του κώδικά δημιουργίας
της database, όταν από το σχέδιο της database το Workbench παράγει τον κώδικα που τη δημιουργεί.
Εκτύπωση Σχήματος ΒΔ (database schema) και Παραγωγή SQL script
Όταν ολοκληρώσουμε τη σχεδίαση μπορούμε να τακτοποιήσουμε τους πίνακες στο χώρο σχεδίασης και
τα δημιουργήσουμε ένα PDF αρχείο με το μοντέλο, καθώς θα χρειαστεί πολλές φορές να το συμβου-
λευτούμε κατά την χρήση (κατασκευή SQL ερωτημάτων, σύνδεση με γλώσσες προγραμματισμού, κτλ).
Το PDF παράγεται από το μενού File > Print to PDF… ή File -> Export...
Τέλος, πρέπει να εξάγουμε τον SQL κώδικα που όταν εκτελεστεί στον MySQL Server θα δημιουργή-
σει την database που σχεδιάσαμε. Αυτό γίνεται από την επιλογή File > Export > Forward Engineer SQL
CREATE Script… όπου:
Α) Ορίζετε το όνομα και τη θέση του αρχείου που θα παραχθεί (βλ. Εικόνα 13).
Εικόνα 13: Μετατροπή της σχεδίασης σε SQL κώδικα.
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 10/12
Β) Ζητάτε ο κώδικας να σβήνει (DROP) άλλη συνονόματη database, εφόσον βρει τέτοια, όταν εκτε-
λεστεί, και γενικά να βάζει DROP δηλώσεις πριν από CREATE δηλώσεις (βλ. (2) στην επόμενη ει-
κόνα). Αυτό δεν είναι απαραίτητο πάντα, εξυπηρετεί όμως στη φάση δοκιμών και διορθώσεων
της database μέχρι να πάρει την τελική της μορφή. Οι δηλώσεις DROP θα διαγράψουν υπάρχου-
σα database ή/και πίνακες με ίδιο όνομα. Αν δεν το θέλετε πρέπει να λάβετε τα μέτρα σας.
Γ) Αν σε κάποιους πίνακες έχουμε κάνει προ-εισαγωγή εγγραφών τότε πρέπει να επιλέξετε και το
"Generate INSERT Statements for Tables"
Δ) Πατήστε Next και στο επόμενο παράθυρο επιλέξτε τι θέλετε να γίνει export (συνήθως όλα όσα
κάνατε – δηλ. δεν πειράζετε κάτι).
Ε) Πατάτε Next και ήδη θα δείτε τον SQL κώδικα που δημιουργήθηκε.
Ζ) Πατάτε Finish και ο κώδικας αποθηκεύεται στο αρχείο που ορίσατε.
Στο σημείο αυτό έχετε τελειώσει με ένα κύκλο σχεδίασης (μπορεί να χρειαστούν κι άλλοι, διορθωτι-
κοί). Η σχεδίαση είναι επίπονη και χρονοβόρα διαδικασία – τυχόν ατέλειες θα γεννήσουν αργότερα
προβλήματα.
Κλείστε όλα τα tabs στο πάνω μέρος του παραθύρου του Workbench και επιστρέψτε στην καρτέλα
(tab) Home. Φροντίστε να αποθηκεύσετε τη σχεδίαση σε αρχείο Workbench ώστε όταν χρειαστεί να
μπορείτε να την τροποποιήσετε.
Δημιουργία της Database / Υποβολή Ερωτημάτων
Για τις επόμενες εργασίες πρέπει να λειτουργεί ταυτόχρονα και ο MySQL Server (του XAMP ή του Η/Υ
σας, ανάλογα με την εγκατάσταση που έχετε κάνει).
Εικόνα 14: Το περιβάλλον δημιουργίας ή/και εκτέλεσης SQL ερωτημάτων.
Συνδεθείτε στον MySQL Server με τη σύνδεση που είχατε φτιάξει στην αρχή. Φορτώστε τον κώδικα
που κάνατε export στα προηγούμενα βήματα. Μόλις φορτωθεί (Εικόνα 14) τον «τρέχετε» και όταν ολο-
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 11/12
κληρωθεί η εκτέλεση κάνετε refresh (με το σχετικό button) για να δείτε την database που φτιάχτηκε. Αν
κάτι δεν πήγε καλά, θα υπάρχουν κόκκινα εικονίδια στην καρτέλα Output και η εκτέλεση δεν θα έχει
ολοκληρωθεί καθώς by default σταματά στο πρώτο λάθος που θα συμβεί.
Με την database πλέον δημιουργημένη, μπορούμε να τη δοκιμάσουμε ανοίγοντας πίνακες, καταχω-
ρώντας εγγραφές και υποβάλλοντας ερωτήματα. Κάντε right click στον πίνακα students αριστερά και
επιλέξτε SELET Rows – Limit 1000. Δείτε τα αποτελέσματα (Εικόνα 15).
Υπόψη ότι οι μεταβολές που κάνετε καταχωρούνται στον πίνακα μόνο όταν πατήσετε το button Ap-
ply (βλ. Εικόνα 15).
Εικόνα 15: Υποβολή SQL ερωτημάτων.
Εικόνα 16: Διαχείριση χρηστών – Δημιουργία χρήστη.
Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό)
Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 12/12
Server Administration (Χρήστες & Δικαιώματα)
Τελευταία ενέργεια είναι ο ορισμός χρήστη (database user) με κατάλληλα δικαιώματα, μέσω του οποί-
ου η εφαρμογή μας (όποια κι αν είναι αυτή - desktop εφαρμογή, web εφαρμογή, ακόμη και άνθρωπος)
θα συνδέεται στη database, καθώς η λύση του root δεν είναι καθόλου καλή ιδέα (γιατί άραγε?).
Αριστερά στο Navigator, επιλέξτε το tab Management και μετά Users and Privileges. Πατήστε Add
Account, ορίστε Login Name user1 και Password 1234 (το δίνετε και 2η
φορά) και μετά πατήστε Apply.
Εκτός απροόπτου, ο χρήστης θα δημιουργηθεί (βλ. Εικόνα 16).
Απομένει να ορίσουμε δικαιώματα! Έχοντας επιλεγμένο τον user1 πηγαίνετε στην καρτέλα Schema
Privileges (Εικόνα 17), πατήστε το κουμπί Add Entry… (τέρμα δεξιά – (2)) και στο παράθυρο που θα βγει
επιλέξτε το schema/database στο οποίο θέλετε να δώσετε δικαιώματα. Πατήστε ΟΚ να φύγει το παρά-
θυρο και στη συνέχεια επιλέξτε έστω τα SELECT, INSERT, UPDATE, DELETE (4), ώστε ο χρήστης να μπο-
ρεί να κάνει αντίστοιχα ερωτήματα. Αποθηκεύστε με Apply (5).
Εικόνα 17: Απόδοση δικαιωμάτων σε database χρήστη.
Αν τώρα ορίσετε μια νέα σύνδεση με βάση αυτόν τον χρήστη, ο συνδεόμενος θα μπορεί να υποβάλει
μόνο ερωτήματα SELECT, INSERT, UPDATE, DELETE στη συγκεκριμένη database.
Αν θέλετε να ελέγχετε και από ποιο H/Y θα μπορεί να συνδέεται κάποιος στην database, τότε ρυθμί-
στε και το Limit Connectivity to Hosts Matching. Η πιο χαλαρή ρύθμιση είναι %, δηλαδή σύνδεση από
οπουδήποτε. Η πιο αυστηρή localhost, δηλαδή μόνο από τον συγκεκριμένο Η/Υ.
Περισσότερα για δικαιώματα στις διαλέξεις του μαθήματος και σε σχετικό εργαστήριο.
Να αποθηκεύετε συχνά. Η εφαρμογή δεν είναι 100% σταθερή και μερικές φορές
καταρρέει αναπάντεχα (πλέον όχι τόσο συχνά όπως παλαιότερα –γενικά είναι ΟΚ).
Να την ανανεώνετε καθώς βγαίνουν τακτικά νέες εκδόσεις.
Μετά και από τα παραπάνω είστε έτοιμοι να χρησιμοποιήσετε την νέα σας βάση δεδομένων για ερ-
γασίες προσθήκης/μεταβολής/διαγραφής και γενικότερα SQL ερωτημάτων.
Φ. Κόκκορας

More Related Content

What's hot

Εισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/ΥΕισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/ΥMinistry of Education
 
Ασκήσεις Πανελληνίων ΑΟΘ
Ασκήσεις Πανελληνίων ΑΟΘΑσκήσεις Πανελληνίων ΑΟΘ
Ασκήσεις Πανελληνίων ΑΟΘGeorgia Kazakou
 
Προτάσεις σχεδιασμού της διδασκαλίας
Προτάσεις σχεδιασμού της διδασκαλίαςΠροτάσεις σχεδιασμού της διδασκαλίας
Προτάσεις σχεδιασμού της διδασκαλίαςNikos Papastamatiou
 
Kef10 a synartiseis
Kef10 a synartiseisKef10 a synartiseis
Kef10 a synartiseismnikol
 
ΑΕΠΠ: 20ο Φύλλο Ασκήσεων
ΑΕΠΠ: 20ο Φύλλο ΑσκήσεωνΑΕΠΠ: 20ο Φύλλο Ασκήσεων
ΑΕΠΠ: 20ο Φύλλο ΑσκήσεωνNikos Michailidis
 
Φύλλο Εργασίας 3: "Μετρήσεις Μάζας-Διαγράμματα" Χωρίς Απαντήσεις / Α΄Γυμνασίου
Φύλλο Εργασίας 3: "Μετρήσεις Μάζας-Διαγράμματα" Χωρίς Απαντήσεις / Α΄ΓυμνασίουΦύλλο Εργασίας 3: "Μετρήσεις Μάζας-Διαγράμματα" Χωρίς Απαντήσεις / Α΄Γυμνασίου
Φύλλο Εργασίας 3: "Μετρήσεις Μάζας-Διαγράμματα" Χωρίς Απαντήσεις / Α΄ΓυμνασίουHOME
 
01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις ΔεδομένωνFotis Kokkoras
 
ΑΕΠΠ: 18ο Φύλλο Ασκήσεων
ΑΕΠΠ: 18ο Φύλλο ΑσκήσεωνΑΕΠΠ: 18ο Φύλλο Ασκήσεων
ΑΕΠΠ: 18ο Φύλλο ΑσκήσεωνNikos Michailidis
 
Ασκήσεις στα Όρια-Συνέχεια Συνάρτησης Γ' Λυκείου ΕΠΑΛ
Ασκήσεις στα Όρια-Συνέχεια Συνάρτησης Γ' Λυκείου ΕΠΑΛΑσκήσεις στα Όρια-Συνέχεια Συνάρτησης Γ' Λυκείου ΕΠΑΛ
Ασκήσεις στα Όρια-Συνέχεια Συνάρτησης Γ' Λυκείου ΕΠΑΛΡεβέκα Θεοδωροπούλου
 
Σχεδιασμός 20λεπτης μικροδιδασκαλίας
Σχεδιασμός 20λεπτης μικροδιδασκαλίαςΣχεδιασμός 20λεπτης μικροδιδασκαλίας
Σχεδιασμός 20λεπτης μικροδιδασκαλίαςΓεράσιμος Μπουζάκης
 
Εισαγωγή στις Βάσεις Δεδομένων
Εισαγωγή στις Βάσεις ΔεδομένωνΕισαγωγή στις Βάσεις Δεδομένων
Εισαγωγή στις Βάσεις Δεδομένωνgkhglpzg
 
Διαφοροποιημένη διδασκαλία – Τεχνικές - Προτάσεις
Διαφοροποιημένη διδασκαλία – Τεχνικές - ΠροτάσειςΔιαφοροποιημένη διδασκαλία – Τεχνικές - Προτάσεις
Διαφοροποιημένη διδασκαλία – Τεχνικές - ΠροτάσειςIlias Androgiannis
 
Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1marygeorg
 
HTML-CSS για αρχάριους :: Μάθημα 1ο
HTML-CSS για αρχάριους :: Μάθημα 1οHTML-CSS για αρχάριους :: Μάθημα 1ο
HTML-CSS για αρχάριους :: Μάθημα 1οDespina Kamilali
 

What's hot (20)

Εισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/ΥΕισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/Υ
 
Ασκήσεις Πανελληνίων ΑΟΘ
Ασκήσεις Πανελληνίων ΑΟΘΑσκήσεις Πανελληνίων ΑΟΘ
Ασκήσεις Πανελληνίων ΑΟΘ
 
παδ
παδπαδ
παδ
 
Προτάσεις σχεδιασμού της διδασκαλίας
Προτάσεις σχεδιασμού της διδασκαλίαςΠροτάσεις σχεδιασμού της διδασκαλίας
Προτάσεις σχεδιασμού της διδασκαλίας
 
Kef10 a synartiseis
Kef10 a synartiseisKef10 a synartiseis
Kef10 a synartiseis
 
ΑΕΠΠ: 20ο Φύλλο Ασκήσεων
ΑΕΠΠ: 20ο Φύλλο ΑσκήσεωνΑΕΠΠ: 20ο Φύλλο Ασκήσεων
ΑΕΠΠ: 20ο Φύλλο Ασκήσεων
 
παδ 2
παδ 2παδ 2
παδ 2
 
Παραγώγιση απόλυτων τιμών...
Παραγώγιση απόλυτων τιμών... Παραγώγιση απόλυτων τιμών...
Παραγώγιση απόλυτων τιμών...
 
Φύλλο Εργασίας 3: "Μετρήσεις Μάζας-Διαγράμματα" Χωρίς Απαντήσεις / Α΄Γυμνασίου
Φύλλο Εργασίας 3: "Μετρήσεις Μάζας-Διαγράμματα" Χωρίς Απαντήσεις / Α΄ΓυμνασίουΦύλλο Εργασίας 3: "Μετρήσεις Μάζας-Διαγράμματα" Χωρίς Απαντήσεις / Α΄Γυμνασίου
Φύλλο Εργασίας 3: "Μετρήσεις Μάζας-Διαγράμματα" Χωρίς Απαντήσεις / Α΄Γυμνασίου
 
01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων
 
ΑΕΠΠ: 18ο Φύλλο Ασκήσεων
ΑΕΠΠ: 18ο Φύλλο ΑσκήσεωνΑΕΠΠ: 18ο Φύλλο Ασκήσεων
ΑΕΠΠ: 18ο Φύλλο Ασκήσεων
 
Ασκήσεις στα Όρια-Συνέχεια Συνάρτησης Γ' Λυκείου ΕΠΑΛ
Ασκήσεις στα Όρια-Συνέχεια Συνάρτησης Γ' Λυκείου ΕΠΑΛΑσκήσεις στα Όρια-Συνέχεια Συνάρτησης Γ' Λυκείου ΕΠΑΛ
Ασκήσεις στα Όρια-Συνέχεια Συνάρτησης Γ' Λυκείου ΕΠΑΛ
 
ΑΟΘ ΕΡΩΤΉΣΕΙΣ ΑΣΚΉΣΕΙΣ
ΑΟΘ ΕΡΩΤΉΣΕΙΣ ΑΣΚΉΣΕΙΣ ΑΟΘ ΕΡΩΤΉΣΕΙΣ ΑΣΚΉΣΕΙΣ
ΑΟΘ ΕΡΩΤΉΣΕΙΣ ΑΣΚΉΣΕΙΣ
 
ΑΕΠΠ - Μάθημα 26
ΑΕΠΠ - Μάθημα 26ΑΕΠΠ - Μάθημα 26
ΑΕΠΠ - Μάθημα 26
 
Σχεδιασμός 20λεπτης μικροδιδασκαλίας
Σχεδιασμός 20λεπτης μικροδιδασκαλίαςΣχεδιασμός 20λεπτης μικροδιδασκαλίας
Σχεδιασμός 20λεπτης μικροδιδασκαλίας
 
Εισαγωγή στις Βάσεις Δεδομένων
Εισαγωγή στις Βάσεις ΔεδομένωνΕισαγωγή στις Βάσεις Δεδομένων
Εισαγωγή στις Βάσεις Δεδομένων
 
σενάριο 1ο
σενάριο 1οσενάριο 1ο
σενάριο 1ο
 
Διαφοροποιημένη διδασκαλία – Τεχνικές - Προτάσεις
Διαφοροποιημένη διδασκαλία – Τεχνικές - ΠροτάσειςΔιαφοροποιημένη διδασκαλία – Τεχνικές - Προτάσεις
Διαφοροποιημένη διδασκαλία – Τεχνικές - Προτάσεις
 
Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1
 
HTML-CSS για αρχάριους :: Μάθημα 1ο
HTML-CSS για αρχάριους :: Μάθημα 1οHTML-CSS για αρχάριους :: Μάθημα 1ο
HTML-CSS για αρχάριους :: Μάθημα 1ο
 

Viewers also liked

02 - Σχεσιακό Μοντέλο (Βασικές Έννοιες) - Τύποι Δεδομένων
02 - Σχεσιακό Μοντέλο (Βασικές Έννοιες) - Τύποι Δεδομένων02 - Σχεσιακό Μοντέλο (Βασικές Έννοιες) - Τύποι Δεδομένων
02 - Σχεσιακό Μοντέλο (Βασικές Έννοιες) - Τύποι ΔεδομένωνFotis Kokkoras
 
10 - Οντοσυσχετιστική Μοντελοποίηση
10 - Οντοσυσχετιστική Μοντελοποίηση10 - Οντοσυσχετιστική Μοντελοποίηση
10 - Οντοσυσχετιστική ΜοντελοποίησηFotis Kokkoras
 
παρουσιαση βασεισ δεδομενων
παρουσιαση βασεισ δεδομενωνπαρουσιαση βασεισ δεδομενων
παρουσιαση βασεισ δεδομενωνepalproject1
 
Βάσεις Δεδομένων Κεφ3
Βάσεις Δεδομένων Κεφ3Βάσεις Δεδομένων Κεφ3
Βάσεις Δεδομένων Κεφ3marygeorg
 
04 - SQL (μέρος 2)
04 - SQL (μέρος 2)04 - SQL (μέρος 2)
04 - SQL (μέρος 2)Fotis Kokkoras
 
βάσεις δεδομένων κεφ2
βάσεις δεδομένων κεφ2βάσεις δεδομένων κεφ2
βάσεις δεδομένων κεφ2marygeorg
 
ER DIAGRAM TO RELATIONAL SCHEMA MAPPING
ER DIAGRAM TO RELATIONAL SCHEMA MAPPING ER DIAGRAM TO RELATIONAL SCHEMA MAPPING
ER DIAGRAM TO RELATIONAL SCHEMA MAPPING ARADHYAYANA
 

Viewers also liked (9)

02 - Σχεσιακό Μοντέλο (Βασικές Έννοιες) - Τύποι Δεδομένων
02 - Σχεσιακό Μοντέλο (Βασικές Έννοιες) - Τύποι Δεδομένων02 - Σχεσιακό Μοντέλο (Βασικές Έννοιες) - Τύποι Δεδομένων
02 - Σχεσιακό Μοντέλο (Βασικές Έννοιες) - Τύποι Δεδομένων
 
10 - Οντοσυσχετιστική Μοντελοποίηση
10 - Οντοσυσχετιστική Μοντελοποίηση10 - Οντοσυσχετιστική Μοντελοποίηση
10 - Οντοσυσχετιστική Μοντελοποίηση
 
database
databasedatabase
database
 
παρουσιαση βασεισ δεδομενων
παρουσιαση βασεισ δεδομενωνπαρουσιαση βασεισ δεδομενων
παρουσιαση βασεισ δεδομενων
 
Βάσεις Δεδομένων Κεφ3
Βάσεις Δεδομένων Κεφ3Βάσεις Δεδομένων Κεφ3
Βάσεις Δεδομένων Κεφ3
 
04 - SQL (μέρος 2)
04 - SQL (μέρος 2)04 - SQL (μέρος 2)
04 - SQL (μέρος 2)
 
τπε 1
τπε 1τπε 1
τπε 1
 
βάσεις δεδομένων κεφ2
βάσεις δεδομένων κεφ2βάσεις δεδομένων κεφ2
βάσεις δεδομένων κεφ2
 
ER DIAGRAM TO RELATIONAL SCHEMA MAPPING
ER DIAGRAM TO RELATIONAL SCHEMA MAPPING ER DIAGRAM TO RELATIONAL SCHEMA MAPPING
ER DIAGRAM TO RELATIONAL SCHEMA MAPPING
 

Similar to mySQL Workbench Guide (στα Ελληνικά)

08 - Λογαριασμοί και Δικαιώματα σε Database Server
08 - Λογαριασμοί και Δικαιώματα σε Database Server08 - Λογαριασμοί και Δικαιώματα σε Database Server
08 - Λογαριασμοί και Δικαιώματα σε Database ServerFotis Kokkoras
 
Joomla@psd kaltsidis christos
Joomla@psd kaltsidis christosJoomla@psd kaltsidis christos
Joomla@psd kaltsidis christosNikos Michailidis
 
Εγκατάσταση e-portfolio Mahara στο Πανελλήνιο Σχολικό Δίκτυο
Εγκατάσταση e-portfolio Mahara στο Πανελλήνιο Σχολικό ΔίκτυοΕγκατάσταση e-portfolio Mahara στο Πανελλήνιο Σχολικό Δίκτυο
Εγκατάσταση e-portfolio Mahara στο Πανελλήνιο Σχολικό ΔίκτυοΒασίλης Ορφανάκης
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Nikos Dimitrakopoulos
 
Xampp εγκατάσταση και ρυθμίσεις
Xampp   εγκατάσταση και ρυθμίσειςXampp   εγκατάσταση και ρυθμίσεις
Xampp εγκατάσταση και ρυθμίσειςTheodoros Douvlis
 
Δημιουργία και συντήρηση Moodle - Από το training.sch.gr : Ea21 activity
Δημιουργία και συντήρηση Moodle - Από το training.sch.gr : Ea21 activityΔημιουργία και συντήρηση Moodle - Από το training.sch.gr : Ea21 activity
Δημιουργία και συντήρηση Moodle - Από το training.sch.gr : Ea21 activityekpaideytisit
 
01-week1-Java_Basics.ppt
01-week1-Java_Basics.ppt01-week1-Java_Basics.ppt
01-week1-Java_Basics.pptKostis4
 
ergasthrio_11_diafaneies_2
ergasthrio_11_diafaneies_2ergasthrio_11_diafaneies_2
ergasthrio_11_diafaneies_2vaseisdedom
 
Drupal CMS, μια σύντομη παρουσίαση
Drupal CMS, μια σύντομη παρουσίασηDrupal CMS, μια σύντομη παρουσίαση
Drupal CMS, μια σύντομη παρουσίασηJonny Arvanitakis
 
How to Install moodle in cpanel (greek language)
How to Install moodle in cpanel (greek language)How to Install moodle in cpanel (greek language)
How to Install moodle in cpanel (greek language)George Chalatzoglidis
 
Thesis.Net Framework Training
Thesis.Net Framework TrainingThesis.Net Framework Training
Thesis.Net Framework Trainingpdalianis
 
κοινόχρηστα έγγραφα
κοινόχρηστα έγγραφακοινόχρηστα έγγραφα
κοινόχρηστα έγγραφαNikolaos Bakopoulos
 
C6 8 M1 Queries
C6 8 M1 QueriesC6 8 M1 Queries
C6 8 M1 Queriespapettas
 

Similar to mySQL Workbench Guide (στα Ελληνικά) (18)

08 - Λογαριασμοί και Δικαιώματα σε Database Server
08 - Λογαριασμοί και Δικαιώματα σε Database Server08 - Λογαριασμοί και Δικαιώματα σε Database Server
08 - Λογαριασμοί και Δικαιώματα σε Database Server
 
Joomla@psd kaltsidis christos
Joomla@psd kaltsidis christosJoomla@psd kaltsidis christos
Joomla@psd kaltsidis christos
 
Access2010
Access2010Access2010
Access2010
 
Access2010
Access2010Access2010
Access2010
 
Εγκατάσταση e-portfolio Mahara στο Πανελλήνιο Σχολικό Δίκτυο
Εγκατάσταση e-portfolio Mahara στο Πανελλήνιο Σχολικό ΔίκτυοΕγκατάσταση e-portfolio Mahara στο Πανελλήνιο Σχολικό Δίκτυο
Εγκατάσταση e-portfolio Mahara στο Πανελλήνιο Σχολικό Δίκτυο
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]
 
SQL0v4
SQL0v4SQL0v4
SQL0v4
 
Xampp εγκατάσταση και ρυθμίσεις
Xampp   εγκατάσταση και ρυθμίσειςXampp   εγκατάσταση και ρυθμίσεις
Xampp εγκατάσταση και ρυθμίσεις
 
Δημιουργία και συντήρηση Moodle - Από το training.sch.gr : Ea21 activity
Δημιουργία και συντήρηση Moodle - Από το training.sch.gr : Ea21 activityΔημιουργία και συντήρηση Moodle - Από το training.sch.gr : Ea21 activity
Δημιουργία και συντήρηση Moodle - Από το training.sch.gr : Ea21 activity
 
01-week1-Java_Basics.ppt
01-week1-Java_Basics.ppt01-week1-Java_Basics.ppt
01-week1-Java_Basics.ppt
 
ergasthrio_11_diafaneies_2
ergasthrio_11_diafaneies_2ergasthrio_11_diafaneies_2
ergasthrio_11_diafaneies_2
 
ασκήσεις Handout
ασκήσεις Handoutασκήσεις Handout
ασκήσεις Handout
 
Drupal CMS, μια σύντομη παρουσίαση
Drupal CMS, μια σύντομη παρουσίασηDrupal CMS, μια σύντομη παρουσίαση
Drupal CMS, μια σύντομη παρουσίαση
 
How to Install moodle in cpanel (greek language)
How to Install moodle in cpanel (greek language)How to Install moodle in cpanel (greek language)
How to Install moodle in cpanel (greek language)
 
Thesis.Net Framework Training
Thesis.Net Framework TrainingThesis.Net Framework Training
Thesis.Net Framework Training
 
Sample 2d
Sample 2d Sample 2d
Sample 2d
 
κοινόχρηστα έγγραφα
κοινόχρηστα έγγραφακοινόχρηστα έγγραφα
κοινόχρηστα έγγραφα
 
C6 8 M1 Queries
C6 8 M1 QueriesC6 8 M1 Queries
C6 8 M1 Queries
 

Recently uploaded

RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣHRODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣHROUT Family
 
ΣΔΕ Ιεράπετρας παρουσίαση - ecomobility.pptx
ΣΔΕ Ιεράπετρας παρουσίαση - ecomobility.pptxΣΔΕ Ιεράπετρας παρουσίαση - ecomobility.pptx
ΣΔΕ Ιεράπετρας παρουσίαση - ecomobility.pptxtheologisgr
 
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-242lykkomo
 
Η Δυναστεία των Παλαιολόγων - Βυζαντινή Αυτοκρατορία
Η Δυναστεία των Παλαιολόγων -  Βυζαντινή ΑυτοκρατορίαΗ Δυναστεία των Παλαιολόγων -  Βυζαντινή Αυτοκρατορία
Η Δυναστεία των Παλαιολόγων - Βυζαντινή Αυτοκρατορίαeucharis
 
Μοσχομύρισε το σχολείο. Πασχαλινά κουλουράκια από τους μαθητές της Γ΄ τάξης.pptx
Μοσχομύρισε το σχολείο. Πασχαλινά κουλουράκια από τους μαθητές της Γ΄ τάξης.pptxΜοσχομύρισε το σχολείο. Πασχαλινά κουλουράκια από τους μαθητές της Γ΄ τάξης.pptx
Μοσχομύρισε το σχολείο. Πασχαλινά κουλουράκια από τους μαθητές της Γ΄ τάξης.pptx36dimperist
 
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOYEKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOYssuser369a35
 
ΣΔΕ Ιεράπετρας ερωτηματολόγιο - ecomobility .docx
ΣΔΕ Ιεράπετρας ερωτηματολόγιο - ecomobility .docxΣΔΕ Ιεράπετρας ερωτηματολόγιο - ecomobility .docx
ΣΔΕ Ιεράπετρας ερωτηματολόγιο - ecomobility .docxtheologisgr
 
ΕΡΓΑΣΙΑ ΜΑΘΗΤΩΝ ΓΥΜΝΑΣΙΟΥ ΖΗΠΑΡΙΟΥ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
ΕΡΓΑΣΙΑ ΜΑΘΗΤΩΝ ΓΥΜΝΑΣΙΟΥ ΖΗΠΑΡΙΟΥ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITYΕΡΓΑΣΙΑ ΜΑΘΗΤΩΝ ΓΥΜΝΑΣΙΟΥ ΖΗΠΑΡΙΟΥ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
ΕΡΓΑΣΙΑ ΜΑΘΗΤΩΝ ΓΥΜΝΑΣΙΟΥ ΖΗΠΑΡΙΟΥ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITYΜαρία Διακογιώργη
 
Οδηγίες για τη δημιουργία Flashcard με το Quizlet.pdf
Οδηγίες για τη δημιουργία Flashcard με το Quizlet.pdfΟδηγίες για τη δημιουργία Flashcard με το Quizlet.pdf
Οδηγίες για τη δημιουργία Flashcard με το Quizlet.pdfIrini Panagiotaki
 
ΤΑ ΚΕΙΜΕΝΑ ΤΗΣ ΠΑΡΟΥΣΙΑΣΗΣ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
ΤΑ ΚΕΙΜΕΝΑ ΤΗΣ ΠΑΡΟΥΣΙΑΣΗΣ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITYΤΑ ΚΕΙΜΕΝΑ ΤΗΣ ΠΑΡΟΥΣΙΑΣΗΣ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
ΤΑ ΚΕΙΜΕΝΑ ΤΗΣ ΠΑΡΟΥΣΙΑΣΗΣ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITYΜαρία Διακογιώργη
 
Οι στόχοι των παιδιών
Οι στόχοι των                       παιδιώνΟι στόχοι των                       παιδιών
Οι στόχοι των παιδιώνDimitra Mylonaki
 
ΑΛΜΠΟΥΜ ΦΩΤΟΓΡΑΦΙΩΝ ΑΠΟ ΤΙΣ ΔΡΑΣΕΙΣ ΤΩΝ ΜΑΘΗΤΩΝ ΚΑΤΑ ΤΗ ΔΙΑΡΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ
ΑΛΜΠΟΥΜ ΦΩΤΟΓΡΑΦΙΩΝ ΑΠΟ ΤΙΣ ΔΡΑΣΕΙΣ ΤΩΝ ΜΑΘΗΤΩΝ ΚΑΤΑ ΤΗ ΔΙΑΡΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥΑΛΜΠΟΥΜ ΦΩΤΟΓΡΑΦΙΩΝ ΑΠΟ ΤΙΣ ΔΡΑΣΕΙΣ ΤΩΝ ΜΑΘΗΤΩΝ ΚΑΤΑ ΤΗ ΔΙΑΡΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ
ΑΛΜΠΟΥΜ ΦΩΤΟΓΡΑΦΙΩΝ ΑΠΟ ΤΙΣ ΔΡΑΣΕΙΣ ΤΩΝ ΜΑΘΗΤΩΝ ΚΑΤΑ ΤΗ ΔΙΑΡΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥΜαρία Διακογιώργη
 
Οδηγίες για τη δημιουργία διαδραστικών δραστηριοτήτων με την εφαρμογή Wordwal...
Οδηγίες για τη δημιουργία διαδραστικών δραστηριοτήτων με την εφαρμογή Wordwal...Οδηγίες για τη δημιουργία διαδραστικών δραστηριοτήτων με την εφαρμογή Wordwal...
Οδηγίες για τη δημιουργία διαδραστικών δραστηριοτήτων με την εφαρμογή Wordwal...Irini Panagiotaki
 
ETIMOLOGÍA : EL NOMBRES DE LOS COLORES/ ΤΑ ΧΡΩΜΑΤΑ.pptx
ETIMOLOGÍA : EL NOMBRES DE LOS COLORES/ ΤΑ ΧΡΩΜΑΤΑ.pptxETIMOLOGÍA : EL NOMBRES DE LOS COLORES/ ΤΑ ΧΡΩΜΑΤΑ.pptx
ETIMOLOGÍA : EL NOMBRES DE LOS COLORES/ ΤΑ ΧΡΩΜΑΤΑ.pptxMertxu Ovejas
 
Το άγαλμα που κρύωνε
Το άγαλμα που                       κρύωνεΤο άγαλμα που                       κρύωνε
Το άγαλμα που κρύωνεDimitra Mylonaki
 
Σχολικός εκφοβισμός
Σχολικός                             εκφοβισμόςΣχολικός                             εκφοβισμός
Σχολικός εκφοβισμόςDimitra Mylonaki
 
Παρατήρηση Κυττάρων στο Μικροσκόπιο _ παρουσίαση /Observation of cells under ...
Παρατήρηση Κυττάρων στο Μικροσκόπιο _ παρουσίαση /Observation of cells under ...Παρατήρηση Κυττάρων στο Μικροσκόπιο _ παρουσίαση /Observation of cells under ...
Παρατήρηση Κυττάρων στο Μικροσκόπιο _ παρουσίαση /Observation of cells under ...Areti Arvithi
 
Διαχείριση χρόνου παιδιών
Διαχείριση χρόνου                    παιδιώνΔιαχείριση χρόνου                    παιδιών
Διαχείριση χρόνου παιδιώνDimitra Mylonaki
 
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptxΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptxssuserb0ed14
 
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΠΑΡΑΤΗΡΗΣΗ ΚΥΤΤΑΡΩΝ ΣΤΟ ΜΙΚΡΟΣΚΟΠΙΟ.docx
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΠΑΡΑΤΗΡΗΣΗ ΚΥΤΤΑΡΩΝ ΣΤΟ ΜΙΚΡΟΣΚΟΠΙΟ.docxΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΠΑΡΑΤΗΡΗΣΗ ΚΥΤΤΑΡΩΝ ΣΤΟ ΜΙΚΡΟΣΚΟΠΙΟ.docx
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΠΑΡΑΤΗΡΗΣΗ ΚΥΤΤΑΡΩΝ ΣΤΟ ΜΙΚΡΟΣΚΟΠΙΟ.docxAreti Arvithi
 

Recently uploaded (20)

RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣHRODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
 
ΣΔΕ Ιεράπετρας παρουσίαση - ecomobility.pptx
ΣΔΕ Ιεράπετρας παρουσίαση - ecomobility.pptxΣΔΕ Ιεράπετρας παρουσίαση - ecomobility.pptx
ΣΔΕ Ιεράπετρας παρουσίαση - ecomobility.pptx
 
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
 
Η Δυναστεία των Παλαιολόγων - Βυζαντινή Αυτοκρατορία
Η Δυναστεία των Παλαιολόγων -  Βυζαντινή ΑυτοκρατορίαΗ Δυναστεία των Παλαιολόγων -  Βυζαντινή Αυτοκρατορία
Η Δυναστεία των Παλαιολόγων - Βυζαντινή Αυτοκρατορία
 
Μοσχομύρισε το σχολείο. Πασχαλινά κουλουράκια από τους μαθητές της Γ΄ τάξης.pptx
Μοσχομύρισε το σχολείο. Πασχαλινά κουλουράκια από τους μαθητές της Γ΄ τάξης.pptxΜοσχομύρισε το σχολείο. Πασχαλινά κουλουράκια από τους μαθητές της Γ΄ τάξης.pptx
Μοσχομύρισε το σχολείο. Πασχαλινά κουλουράκια από τους μαθητές της Γ΄ τάξης.pptx
 
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOYEKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
 
ΣΔΕ Ιεράπετρας ερωτηματολόγιο - ecomobility .docx
ΣΔΕ Ιεράπετρας ερωτηματολόγιο - ecomobility .docxΣΔΕ Ιεράπετρας ερωτηματολόγιο - ecomobility .docx
ΣΔΕ Ιεράπετρας ερωτηματολόγιο - ecomobility .docx
 
ΕΡΓΑΣΙΑ ΜΑΘΗΤΩΝ ΓΥΜΝΑΣΙΟΥ ΖΗΠΑΡΙΟΥ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
ΕΡΓΑΣΙΑ ΜΑΘΗΤΩΝ ΓΥΜΝΑΣΙΟΥ ΖΗΠΑΡΙΟΥ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITYΕΡΓΑΣΙΑ ΜΑΘΗΤΩΝ ΓΥΜΝΑΣΙΟΥ ΖΗΠΑΡΙΟΥ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
ΕΡΓΑΣΙΑ ΜΑΘΗΤΩΝ ΓΥΜΝΑΣΙΟΥ ΖΗΠΑΡΙΟΥ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
 
Οδηγίες για τη δημιουργία Flashcard με το Quizlet.pdf
Οδηγίες για τη δημιουργία Flashcard με το Quizlet.pdfΟδηγίες για τη δημιουργία Flashcard με το Quizlet.pdf
Οδηγίες για τη δημιουργία Flashcard με το Quizlet.pdf
 
ΤΑ ΚΕΙΜΕΝΑ ΤΗΣ ΠΑΡΟΥΣΙΑΣΗΣ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
ΤΑ ΚΕΙΜΕΝΑ ΤΗΣ ΠΑΡΟΥΣΙΑΣΗΣ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITYΤΑ ΚΕΙΜΕΝΑ ΤΗΣ ΠΑΡΟΥΣΙΑΣΗΣ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
ΤΑ ΚΕΙΜΕΝΑ ΤΗΣ ΠΑΡΟΥΣΙΑΣΗΣ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΟ ECOMOBILITY
 
Οι στόχοι των παιδιών
Οι στόχοι των                       παιδιώνΟι στόχοι των                       παιδιών
Οι στόχοι των παιδιών
 
ΑΛΜΠΟΥΜ ΦΩΤΟΓΡΑΦΙΩΝ ΑΠΟ ΤΙΣ ΔΡΑΣΕΙΣ ΤΩΝ ΜΑΘΗΤΩΝ ΚΑΤΑ ΤΗ ΔΙΑΡΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ
ΑΛΜΠΟΥΜ ΦΩΤΟΓΡΑΦΙΩΝ ΑΠΟ ΤΙΣ ΔΡΑΣΕΙΣ ΤΩΝ ΜΑΘΗΤΩΝ ΚΑΤΑ ΤΗ ΔΙΑΡΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥΑΛΜΠΟΥΜ ΦΩΤΟΓΡΑΦΙΩΝ ΑΠΟ ΤΙΣ ΔΡΑΣΕΙΣ ΤΩΝ ΜΑΘΗΤΩΝ ΚΑΤΑ ΤΗ ΔΙΑΡΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ
ΑΛΜΠΟΥΜ ΦΩΤΟΓΡΑΦΙΩΝ ΑΠΟ ΤΙΣ ΔΡΑΣΕΙΣ ΤΩΝ ΜΑΘΗΤΩΝ ΚΑΤΑ ΤΗ ΔΙΑΡΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ
 
Οδηγίες για τη δημιουργία διαδραστικών δραστηριοτήτων με την εφαρμογή Wordwal...
Οδηγίες για τη δημιουργία διαδραστικών δραστηριοτήτων με την εφαρμογή Wordwal...Οδηγίες για τη δημιουργία διαδραστικών δραστηριοτήτων με την εφαρμογή Wordwal...
Οδηγίες για τη δημιουργία διαδραστικών δραστηριοτήτων με την εφαρμογή Wordwal...
 
ETIMOLOGÍA : EL NOMBRES DE LOS COLORES/ ΤΑ ΧΡΩΜΑΤΑ.pptx
ETIMOLOGÍA : EL NOMBRES DE LOS COLORES/ ΤΑ ΧΡΩΜΑΤΑ.pptxETIMOLOGÍA : EL NOMBRES DE LOS COLORES/ ΤΑ ΧΡΩΜΑΤΑ.pptx
ETIMOLOGÍA : EL NOMBRES DE LOS COLORES/ ΤΑ ΧΡΩΜΑΤΑ.pptx
 
Το άγαλμα που κρύωνε
Το άγαλμα που                       κρύωνεΤο άγαλμα που                       κρύωνε
Το άγαλμα που κρύωνε
 
Σχολικός εκφοβισμός
Σχολικός                             εκφοβισμόςΣχολικός                             εκφοβισμός
Σχολικός εκφοβισμός
 
Παρατήρηση Κυττάρων στο Μικροσκόπιο _ παρουσίαση /Observation of cells under ...
Παρατήρηση Κυττάρων στο Μικροσκόπιο _ παρουσίαση /Observation of cells under ...Παρατήρηση Κυττάρων στο Μικροσκόπιο _ παρουσίαση /Observation of cells under ...
Παρατήρηση Κυττάρων στο Μικροσκόπιο _ παρουσίαση /Observation of cells under ...
 
Διαχείριση χρόνου παιδιών
Διαχείριση χρόνου                    παιδιώνΔιαχείριση χρόνου                    παιδιών
Διαχείριση χρόνου παιδιών
 
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptxΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
 
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΠΑΡΑΤΗΡΗΣΗ ΚΥΤΤΑΡΩΝ ΣΤΟ ΜΙΚΡΟΣΚΟΠΙΟ.docx
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΠΑΡΑΤΗΡΗΣΗ ΚΥΤΤΑΡΩΝ ΣΤΟ ΜΙΚΡΟΣΚΟΠΙΟ.docxΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΠΑΡΑΤΗΡΗΣΗ ΚΥΤΤΑΡΩΝ ΣΤΟ ΜΙΚΡΟΣΚΟΠΙΟ.docx
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΠΑΡΑΤΗΡΗΣΗ ΚΥΤΤΑΡΩΝ ΣΤΟ ΜΙΚΡΟΣΚΟΠΙΟ.docx
 

mySQL Workbench Guide (στα Ελληνικά)

  • 1. - 1/12 - Φώτης Κόκκορας, Καθ. Εφαρμογών TEI Θεσσαλίας Τμήμα Μηχανικών Πληροφορικής ΤΕ 411 10, Λάρισα e-mail: fkokkoras@teilar.gr Έκδοση 2.7.2 (16/02/2016) Οδηγίες Βασικής Χρήσης του MySQL Workbench Στις επόμενες σελίδες υπάρχει ένας αποσπασματικός οδηγός χρήσης του MySQL Workbench. Ο οδηγός σε καμία περίπτωση δεν είναι πλήρης. Οι φοιτητές θα πρέπει να εξοικειωθούν με την εφαρ- μογή μέσω των εργαστηριακών ασκήσεων και με επιπλέον προσωπική ενασχόληση. Για την ακρί- βεια, το παρόν διανέμεται κύρια επειδή υπάρχουν φοιτητές που έχουν παρακολουθήσει σε παλαιό- τερο εξάμηνο και επιθυμούν να δουλέψουν τις εργαστηριακές ασκήσεις μόνοι τους. Η σωστή χρή- ση του οδηγού προϋποθέτει κατανόηση βασικών εννοιών Θεωρίας Βάσεων Δεδομένων. To MySQL Workbench (http://dev.mysql.com/downloads/tools/workbench/) είναι μια γραφική διε- παφή για την εύκολη χρήση του MySQL Server και επιτρέπει τριών ειδών εργασίες:  Διαχείριση του MySQL Server (πχ δημιουργία χρηστών, απονομή δικαιωμάτων σε χρήστες, κτλ.)  Σχεδίαση σχεσιακών βάσεων δεδομένων (δημιουργία πινάκων, συσχετίσεων μεταξύ τους, κτλ.)  Δημιουργία και εκτέλεση SQL ερωτημάτων, όψεων, διαδικασιών, κτλ σε βάσεις δεδομένων. Από τις τρεις αυτές ομάδες ενεργειών, η πρώτη και η τρίτη απαιτούν να τρέχει ήδη ο MySQL Server καθώς το MySQL Workbench στέλνει τις εντολές του χρήστη στον MySQL Server για να εκτελεστούν εκεί. Αντίθετα, οι λειτουργίες σχεδίασης (δεύτερη ομάδα) δεν εμπλέκουν τον MySQL Server. Ο MySQL Server του XAMPP 5.6.12 Πρόσφατες εκδόσεις του XAMPP χρησιμοποιούν αντί του MySQL Server τον server MariaDB. Δεν είναι γνωστό αυτή τη στιγμή αν ο παρών οδηγός για το MySQL Workbench λειτουργεί εξίσου και με MariaDB. Η συμβουλή προς το παρόν είναι η χρήση παλαιότερης έκδοσης XAMPP (με MySQL) ή η εγκατάσταση ξεχωριστού MySQL Server (όχι δηλ. διαμέσου του XAMPP). Η τελευταία έκδοση XAMPP με MySQL είναι η 5.6.12. Άρα χρειάζεστε1 το xampp-win32-5.6.12-0-VC11-installer.exe από εδώ: https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/5.6.12/ Εγκατάσταση Για τις ανάγκες του μαθήματος, θεωρούμε τον MySQL Server μιας XAMPP εγκατάστασης καθώς ο οδη- γός αφορά στα μαθήματα Βάσεων Δεδομένων και Προγραμματισμού Εφαρμογών Διαδικτύου. Η εγκατά- σταση του XAMPP δεν έχει κάποια ιδιαίτερη δυσκολία. Επιλέξτε ΜΟΝΟ τα υποσυστήματα που βλέπετε στην εικόνα αριστερά. Ο default φά- κελος εγκατάστασης του XAMPP είναι ο C:xampp και δεν έχετε λόγο να τον αλλάξετε. Επιπρό- σθετα δεν θα χρειαστείτε ούτε τα περί BitNami που εμφανίζει ο εγκαταστάτης του XAMPP στη συνέχεια (uncheck το "Learn more..." – βλ. δεξιά εικόνα). 1 Αν θέλετε μπορείτε να εγκαταστήσετε ξεχωριστά τα Apache, MySQL Server και PHP, με τις αυτόνομες διανομές τους. Έτσι έχετε απόλυτο έλεγχο στο τι θα βάλετε, πλην όμως παίρνει περισσότερο χρόνο (φυσικά είναι πολύ καλό για να μάθετε).
  • 2. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 2/12 Εκκίνηση και troubleshooting Μετά την εγκατάσταση, τρέχετε την εφαρμογή XAMPP Control Panel. Ο MySQL Server ξεκινά με το κου- μπί Start (βλ. Εικόνα 1) και σταματά με το ίδιο κουμπί (που στο μεταξύ γίνεται Stop). Αν ο MySQL Server δεν ξεκινά, τότε πιθανότατα έχετε ήδη εγκατεστημένο τον MySQL Server και το XAMPP Control Panel δεν μπορεί να εντοπίσει τον MySQL Server του XAMPP. Για να το επιβεβαιώσετε, εκκινήστε την εφαρ- μογή ελέγχου των services (υπηρεσίες) που τρέχουν στο παρασκήνιο των Windows (Εικόνα 2). Ψάξτε για την υπηρεσία mySQL και σταματήστε την με το Stop ώστε στη στήλη Status (βλ. Εικόνα 2) να μην γράφει κάτι. Εικόνα 1: Το XAMPP Control Panel. Εικόνα 2: Services σε Windows 7. Εφόσον το πρόβλημα είναι το παραπάνω, μετά το σταμάτημα της υπηρεσίας MySQL, για να εκκινή- σετε τον MySQL Server του XAMPP, πηγαίνετε στον φάκελο C:xampp και τρέξτε το mysql_start.bat. Θα δείτε το παράθυρο που απεικονίζεται στην Εικόνα 3 (μην το κλείσετε!!!): Εικόνα 3: Εκκίνηση του MySQL Server του XAMPP, μέσω του mysql_start.bat.
  • 3. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 3/12 Ελαχιστοποιείστε το παράθυρο αυτό – στη συνέχεια θα δουλέψετε στο MySQL Workbench. Όταν τελειώσετε, θα πρέπει να κλείσετε τον MySQL Server τρέχοντας το αρχείο mysql_stop.bat. ΑΡΑ: αν δεν υπάρχει άλλη εγκατάσταση MySQL Server στο PC σας, θα ανοιγοκλείνετε τον MySQL Server του XAMPP μέσω του XAMPP Control Panel. Αν όμως υπάρχει άλλη εγκατάσταση MySQL server, θα πρέπει να σταματάτε τη λειτουργία του και να ανοιγοκλείνετε τον MySQL Server του XAMPP μέσω των δύο αρχείων *.bat που προαναφέρθηκαν. Στη συνέχεια θα δούμε συνοπτικά τις βασικές λειτουργίες του MySQL Workbench. Εγκατάσταση MySQL Workbench Θα βρείτε την τελευταία έκδοση της εφαρμογής στη διεύθυνση: http://dev.mysql.com/downloads/workbench/ Πάρτε την 32 bit έκδοση, ακόμη κι αν έχετε Windows 64 bit καθώς μόνο αυτή μπορεί να μιλήσει με τον 32bit MySQL server του XAMPP!. Η εφαρμογή εξελίσσεται συνεχώς οπότε είναι καλό να έχετε την τελευταία έκδοση. Μπορείτε να κά- νετε εγκατάσταση τυχόν νέας έκδοσης πάνω από την παλιά (στον ίδιο φάκελο) χωρίς πρόβλημα. Το Workbench έχει κάποια προαπαιτούμενα για να τρέξει. Αυτά περιγράφονται στην παραπάνω ιστοσελίδα (στο σημείο MySQL Workbench Prerequisites) – φροντίστε να τα εγκαταστήσετε αν το Workbench αρνείται να εγκατασταθεί/τρέξει. Η εγκατάσταση δεν έχει κάποια ιδιαίτερη δυσκολία. Σύνδεση Workbench με MySQL Server Όπως είπαμε, με εξαίρεση τη σχεδίαση βάσεων δεδομένων, το Workbench απαιτεί να συνδεθεί σε έναν MySQL Server. Μετά την εκκίνηση του Workbench για πρώτη φορά, βλέπετε την Εικόνα 4: Εικόνα 4: Το παράθυρο του MySQL Workbench. Πατήστε το κουμπί δημιουργίας νέας σύνδεσης, δώστε ένα Connection Name (π.χ. myConnection) και πατήστε το κουμπί Test Connection. Θα πρέπει να δείτε το παράθυρο στην Εικόνα 5. Πατήστε ΟΚ να κλείσουν τα 2 παράθυρα. Πλέον είστε έτοιμοι ...για όλα. Η σύνδεση που φτιάξατε θα παραμείνει στο χώρο εργασίας του Workbench (βλ. δεξιά) και πλέον μπορείτε να χρησιμοποιείτε αυτή κάθε φορά που θέλετε να συνδεθείτε στον MySQL Server.
  • 4. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 4/12 Εικόνα 5: Σύνδεση Workbench με MySQL Server μέσω του user root. ΠΡΟΣΟΧΗ: το Workbench συνδέεται στον serv- er μέσω του λογαριασμού root που είναι ο ad- ministrator (διαχειριστής) του MySQL Server. Αρ- χικά (για ευκολία), ο χρήστης root ΔΕΝ έχει ορι- σμένο password. Μπορείτε για τις ανάγκες του μαθήματος να τον αφήσετε χωρίς password. Σε πραγματικές συνθήκες όμως πρέπει να ορίσετε password διαφορετικά ο MySQL Server σας είναι τρομερά εκτεθειμένος!!! Επίσης αργότερα θα μά- θετε ότι ο root δεν είναι κατάλληλος για τις πε- ριπτώσεις τελικής χρήσης (deployment). Data Μodeling (σχεδίαση της database2) Η σχεδίαση της βάσης δεδομένων ξεκινά επιλέγοντας το κουμπάκι με το (+) στην αρχική οθόνη του Workbench. Στη συνέχεια κάντε double click στο εικονίδιο Add Diagram στο πάνω μέρος και θα πάρετε το αποτέλεσμα που βλέπετε στην Εικόνα 6. Μπορείτε να αποκρύψετε το δεξί sidebar (1) για να έχετε περισσότερο χώρο σχεδίασης. Ορίζετε πί- νακες και συσχετίσεις ξένων κλειδιών (foreign keys) με τα κουμπιά (3) και (4) του toolbar, όπως φαίνε- ται στην Εικόνα 6. Προσέξτε ιδιαίτερα το (4) – είναι το τελευταίο κουμπάκι στο toolbar – όταν δεν φαί- νεται όλο το toolbar μπορεί να κάνετε λάθος καθώς θα είναι κρυμμένο! Η database που έχετε αρχικά ονομάζεται mydb (βλ. (2) σε Εικόνα 6). Αυτό αλλάζει με δεξί κλικ στο όνομα της db στο Catalog Tree (βλ. Εικόνα 7), επιλογή του Edit Schema και αλλαγή του ονόματος στο πεδίο Name. Συμβουλή: Χρησιμοποιήστε πεζούς λατινικούς χαρακτήρες και κάτω παύλα αντί για κενό. 2 Δεν είναι απαραίτητο να "τρέχει" ο MySQL Server για να λειτουργήσει το τμήμα σχεδίασης του MySQL Workbench.
  • 5. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 5/12 Εικόνα 6: Παράθυρο σχεδίασης database (database schema design – ΟΧΙ E-R διάγραμμα!) Στο πεδίο Collation ρυθμίζουμε τα character set και collation που θα ισχύουν στους πίνακες της da- tabase, αν δεν το ορίσουμε ρητά σε αυτούς. Character set είναι το σύνολο χαρακτήρων που υποστηρί- ζονται (π.χ. utf8 Unicode). Το Collation καθορίζει την σειρά ταξινόμησης των χαρακτήρων σε ένα character set, άρα επηρεάζει τις ταξινομήσεις αλφαριθμητικών. Τυπική ρύθμιση για υποστήριξη πολυ- γλωσσίας είναι το utf8_general_ci (το ci είναι από το case insensitive). Περισσότερα στα slides θεωρίας. Εικόνα 7: Μετονομασία database και ρύθμιση character set και collation. Σχεδίαση Πινάκων Αφού εισάγουμε πίνακα/table στο χώρο σχεδίασης (βλ. (3) Εικόνα 6), κάνουμε διπλό κλικ πάνω του για να τον ρυθμίσουμε. Φανερώστε τις κρυμμένες ρυθμίσεις (1) και ορίστε όνομα (Table Name) και πιθα- νώς Collation (αν θέλετε να αλλάξετε το default που σας δίνει η database). Στο Engine (2) να έχετε InnoDB – είναι η σύγχρονη database μηχανή "κάτω από το καπό της MySQL" που αντικαθιστά την παλιά ISAM και υποστηρίζει μεταξύ άλλων συναλλαγές (transactions) και κανόνες ακεραιότητας δεδομένων (referential integrity constraints). Ενδείκνυται εμφατικά η χρήση της InnoDB σε νέες databases (προσοχή στο Google – το web είναι γεμάτο με αναφορές στην παλιά μηχανή ISAM).
  • 6. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 6/12 Εικόνα 8: Βασικές ρυθμίσεις πίνακα. Μπορείτε να ορίσετε δύο στήλες (3), όπως στο παράδειγμα στην Εικόνα 8. Βάλτε τις ρυθμίσεις που βλέπετε – θα τις εξηγήσουμε παρακάτω. Προσέξτε ότι θεωρητικά υπάρχουν πάρα πολλά πράγματα που μπορεί να ρυθμίσει κανείς. Δείτε πόσα tabs υπάρχουν στο κάτω μέρος (4) - θα τα δούμε σταδιακά. Για τα ονόματα στηλών (και για να κάνετε τη ζωή σας εύκολη), χρησιμοποιείστε λατινικούς χαρακτή- ρες και κάτω παύλα αντί για κενό. Αποφεύγετε τα greeklish για ονόματα πεδίων – ανοίξτε ένα λεξικό και βρείτε την αγγλική λέξη της έννοιας που θέλετε. Μια διαδεδομένη τακτική για ευανάγνωστο όνομα πολλών λέξεων είναι η χρήση κεφαλαίου γράμματος εσωτερικά, π.χ. firstName, dateOfBirth. Για τους τύπους δεδομένων θα ακούσετε αναλυτικά στη θεωρία. Εδώ βάλτε ότι βλέπετε στην Εικόνα 8. INT είναι ακέραιος ενώ varchar(45) αλφαριθμητικό ως 45 χαρακτήρες. Γενικά τα γνωρίσματα (attrib- utes ή στήλες/columns) του πίνακα τα ορίζουμε και τα ρυθμίζουμε όπως απαιτεί η εφαρμογή που θέ- λουμε να φτιάξουμε. Η σειρά τους (αν αλλάξαμε γνώμη) αλλάζει με σύρσιμο ενώ διαγράφονται εύκολα με right click και μετά Delete Selected. Για να δούμε τώρα τι είναι όλα αυτά τα checkboxes που υπάρχουν σε κάθε γνώρισμα.  PK: δηλώνουμε ότι το γνώρισμα συμμετέχει στον ορισμό του πρωτεύοντος κλειδιού του πίνακα (Primary Key). Το πρωτεύον κλειδί πρακτικά είναι ΕΝΑ αλλά μπορεί να αποτελείται από περισσό- τερα από ένα γνωρίσματα. Οι στήλες που ορίζουν το πρωτεύον κλειδί δεν μπορεί να μην έχουν τιμή (γι αυτό όταν ορίζετε το PK επιλέγεται και το NN).  NN: δηλώνουμε ότι το γνώρισμα πρέπει να έχει τιμή (Not Null). Τα γνωρίσματα που συμμετέχουν στο πρωτεύον κλειδί υποχρεωτικά πρέπει να έχουν τιμή (το NN τους επιλέγεται αυτόματα).  UQ: ζητάμε ευρετήριο τύπου UNIQUE στο γνώρισμα, δηλ. δεν μπορεί να υπάρχουν δύο εγγραφές με ίδια τιμή σε αυτό το γνώρισμα. Το NULL επιτρέπεται σε στήλη με ευρετήριο UQ. Για παράδειγ- μα, σε πίνακα φοιτητών με πρωτεύον κλειδί τον αριθμό μητρώου μπορούμε να έχουμε ευρετήριο UQ στον αριθμό ταυτότητας (ή στο email) που είναι μοναδικά για κάθε φοιτητή. Μην συγχέετε το πρωτεύον κλειδί με το ευρετήριο UNIQUE. Το πρωτεύον κλειδί εξ ορισμού επιτρέπει μόνο μονα- δικές (και όχι NULL) τιμές και δεν απαιτεί να βάλετε και τη ρύθμιση UQ. Ο ρόλος των ευρετηρίων γενικά, είναι να επιταχύνουν τις ερωτήσεις SELECT (καθυστερούν όμως τις INSERT και UPDATE!). Άρα σκεφτείτε αν πρόκειται να κάνετε αναζητήσεις με αυτή τη στήλη ή αν ο πίνακας θα μεταβάλ- λεται συνεχώς. Δευτερευόντως τα χρησιμοποιούμε για να εξασφαλίσουμε μοναδικές τιμές. Εκτός από UNIQUE, υπάρχουν και άλλοι τύπου ευρετηρίων (δείτε στο tab Indexes – βλ. (4) Εικόνα 8).  BIN: σε πεδία τύπου CHAR, VARCHAR και TEXT (και τις παραλλαγές του) ζητάμε τα πεζά και κεφα- λαία γράμματα να θεωρούνται διαφορετικά – περισσότερα στη θεωρία.  UN: ζητάμε μόνο θετικούς (unsigned) ακεραίους. Αφορά σε πεδία τύπου INT (και τις παραλλαγές του). Επηρεάζει το επιτρεπτό εύρος τιμών. Π.χ. αντί για εύρος από -127 ως 128 έχουμε 0 ως 255.  ZF: ρύθμιση μορφοποίησης αριθμών (αγνοήστε την!)  AI: ζητάμε το γνώρισμα τύπου INT (ή παραλλαγών αυτού) να παίρνει αυτόματα τιμές (Auto Incremental). Πολύ χρήσιμο καθώς μέσω αυτής της ρύθμισης ορίζουμε γνωρίσματα που προορί- ζονται για (τεχνητά) πρωτεύοντα κλειδιά!
  • 7. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 7/12 Στη στήλη Default των ρυθμίσεων βάζουμε αν θέλουμε default τιμές για τα πεδία, δηλαδή τιμές που θα καταχωρηθούν αυτόματα αν εμείς δεν δώσουμε τιμή. Η default τιμή current_timestamp σε πεδίο τύπου TIMESTAMP βάζει αυτόματα στο πεδίο ως τιμή την τρέχουσα ημερομηνία και ώρα του συστήματος (του MySQL server) της στιγμής που δημιουργείται η εγγραφή (πολύ καλό για καταγραφή του πότε εισήχθη κάτι στον πίνακα). Αν χρησιμοποιήσετε τύπο γνωρίσματος TIMESTAMP και δεν βάλετε default τιμή το current_timestamp (το αφήσετε κενό) τότε η στήλη θα ενημερώνετε και κάθε φορά που αλλάζει κάτι στην εγγραφή (πολύ καλό για να ξέρετε πότε μεταβλήθηκε τελευταία φορά μια εγγραφή). Ορισμός "ξένου κλειδιού" Το ξένο κλειδί (foreign key) είναι ένα γνώρισμα (στήλη) σε έναν πίνακα, το οποίο είναι πρωτεύον κλειδί σε άλλο πίνακα. Εφόσον φτιάχνουμε σχεσιακό μοντέλο και έχουμε χρήση ξένων κλειδιών, πρέπει να τα ορίσουμε. Δηλώνουμε σχέσεις ξένου κλειδιού πάνω σε ήδη ορισμένα γνωρίσματα με το κουμπί (4) (βλ. Εικόνα 6). Γίνεται και με άλλα κουμπάκια συσχετίσεων αλλά αυτός ο τρόπος σας καλύπτει ΠΑΝΤΑ. Οπό- τε ας μάθουμε καλά αυτόν! Η βασική ιδέα σε αυτό τον τρόπο είναι ότι πρώτα φτιάχνουμε τα γνωρίσμα- τα και μετά ορίζουμε τη συσχέτιση ξένου κλειδιού (με τον τρόπο που περιγράφεται στη συνέχεια). Έστω ότι έχουμε τους δύο πίνακες στην Εικόνα 9. Το γνώρισμα departmentID στον πίνακα students είναι ξένο κλειδί, καθώς ορίζει σε ποιο Τμήμα ανήκει ο φοιτητής (έστω ότι κάθε φοιτητής ανήκει σε ένα και μόνο ένα Τμήμα). Προσέξτε ότι του δώσαμε ίδιο όνομα (για δική μας ευκολία – δεν είναι υποχρεω- τικό) και με εξαίρεση το AI, το ρυθμίσαμε παρόμοια (το ΑΙ χρειάζεται στο department.departmentID γιατί εκεί γεννιούνται οι τιμές – δεν χρειάζεται στο students.departmentID γιατί εκεί επαναχρησιμοποι- ούνται υπάρχουσες τιμές). Εικόνα 9: Σχέση ξένου κλειδιού. Κάνουμε λοιπόν click στο κουμπί (Εικόνα 6) και μετά κατά σειρά (Εικόνα 9): (1) στον πίνακα που φιλοξενεί το ξένο κλειδί (τον students), κάνουμε κλικ στο γνώρισμα (attribute) που αποτελεί το ξένο κλειδί (δηλαδή στο departmentID) (2) στον πίνακα που ορίζει το ξένο κλειδί (δηλ. στον department), κάνουμε κλικ στο ίδιο γνώρισμα Εικόνα 10: Επεξεργασία συσχέτισης ξένου κλειδιού. Για πιο ευέλικτη απεικόνιση των συσχετίσεων μεταξύ πινάκων, από το μενού Model -> Relationship Notation επιλέξτε Connect to Columns. Τα 1 και  που βλέπετε στα άκρα της γραμμής συσχέτισης (Εικόνα 9) ορίσουν ότι η σχέση είναι ένα-προς-πολλά (ένας student ανήκει σε ένα και μόνο ένα depart-
  • 8. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 8/12 ment και ένα department έχει κανέναν, έναν ή περισσότερους students). Προσέξτε ότι στο παράδειγμα το students.departmentID είναι και NN (γεμισμένος ρόμβος) – αυτός είναι ο λόγος που παραπάνω ει- πώθηκε ότι ένας student ανήκει σε ένα και μόνο ένα department και όχι ένας student ανήκει σε κανένα ή ένα department. Αν θέλετε σχέση ένα-προς-ένα, υπάρχουν επιπλέον ρυθμίσεις με right click πάνω στη γραμμή συσχέτισης, επιλογή του Edit Relationship..., και μετά κάτω tab, Foreign Key (Εικόνα 10). Δεν θα επεκταθούμε προς το παρόν περισσότερο – θα τα δούμε σε σχετικό μάθημα. Οι δηλώσεις ξένου κλειδιού καταχωρούνται στον πίνακα που φιλοξενεί το ξένο κλειδί. Για να τις δεί- τε και να ορίσετε κανόνες ακεραιότητας δεδομένων, πηγαίνετε στις ρυθμίσεις αυτού του πίνακα (με διπλό κλικ στον πίνακα) στην καρτέλα Foreign Keys (βλ. Εικόνα 11). Για κάθε ξένο κλειδί πρέπει να ορί- σετε τι θα γίνεται αν η τιμή του αλλάξει στον πατρικό πίνακα (On Update) ή/και όταν σβήσει η σχετική εγγραφή στον πατρικό πίνακα. Π.χ. αν αλλάξει (update) το departmentID κάποιου τμήματος (στον πίνα- κα departments) τι θα γίνει με τους φοιτητές στον πίνακα students που έχουν ως departmentID αυτή την τιμή; Παρόμοια, τι θα γίνει αν διαγραφεί ένα department του οποίου το departmentID είναι σε χρή- ση σε κάποια εγγραφή στον πίνακα students; Εικόνα 11: Ξένα κλειδιά και referential integrity constraints (On Update, On Delete). Συνήθεις επιλογές είναι (περισσότερα στη θεωρία και τα εργαστήρια): Για το Update: CASCADE - Αλλάζει αυτόματα τις τιμές παντού όταν αλλάζει το ξένο κλειδί. RESTRICT - Δεν αφήνει να αλλάξει τιμή ένα κλειδί που είναι σε χρήση αλλού ως ξένο κλειδί. Για το Delete: CASCADE - Σβήνει αυτόματα στους πίνακες που χρησιμοποιούν το πεδίο ως ξένο κλειδί, όλες τις εγγραφές που χρησιμοποιούν το κλειδί που διαγράφηκε! RESTRICT - Δεν επιτρέπει να γίνει διαγραφή κλειδιού που είναι σε χρήση ως ξένο κλειδί σε άλλους πίνακες. Η μηχανή ISAM δεν υποστηρίζει περιορισμούς ακεραιότητας δεδομένων. Αυτό έχει σαν αποτέλεσμα να πρέπει να υλοποιηθούν οι σχετικοί έλεγχοι προγραμματιστικά, δηλαδή στην εφαρμογή που θα χτι- στεί πάνω από την database. Αυτό είναι ένα πολύ σοβαρό μειονέκτημα της ISAM και από μόνο του αρ- κεί για να προτιμήσετε τη μηχανή InnoDB (η οποία πλέον είναι η default στον MySQL server). Εισαγωγή Δεδομένων κατά τη Σχεδίαση Αν θέλετε να εισάγετε (αυτόματα) δεδομένα (εγγραφές) στους πίνακες που θα δημιουργηθούν, τότε πρέπει να κάνετε καταχωρήσεις στην καρτέλα Inserts (Εικόνα 12) Εκεί εμφανίζεται ένα grid με σειρές (εγγραφές) και στήλες (γνωρίσματα) στο οποίο καταχωρείτε όσες εγγραφές θέλετε. Δεν πρέπει να παραβιάζετε τις αρχές σχεδίασης των πινάκων σας. Αν ένα γνώρισμα είναι τύπου ημ/νία πρέπει να δώσετε σωστή ημ/νία. Αν δεν το κάνετε, αργότερα θα προκύψει πρόβλημα (μη ξεχνά- τε ότι ακόμη σχεδιάζουμε, δεν φτιάχτηκε ακόμη η database). Στα auto-incremental γνωρίσματα πρέπει επίσης να δώσετε τιμή, παρόλο που σε πραγματικές συνθήκες λειτουργίας μπαίνει τιμή αυτόματα. Στο τέλος πρέπει να πατήσετε το button με το πράσινο check για να καταγραφούν οι καταχωρήσεις που κά- νατε!
  • 9. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 9/12 Εικόνα 12: Καταχώρηση δεδομένων στη φάση σχεδίασης. Τα δεδομένα που καταχωρείτε με αυτό τον τρόπο, θα μετατραπούν σε εντολές SQL για εισαγωγή των δεδομένων στην database. Αυτός ο SQL κώδικας ενσωματώνεται στο τέλος του κώδικά δημιουργίας της database, όταν από το σχέδιο της database το Workbench παράγει τον κώδικα που τη δημιουργεί. Εκτύπωση Σχήματος ΒΔ (database schema) και Παραγωγή SQL script Όταν ολοκληρώσουμε τη σχεδίαση μπορούμε να τακτοποιήσουμε τους πίνακες στο χώρο σχεδίασης και τα δημιουργήσουμε ένα PDF αρχείο με το μοντέλο, καθώς θα χρειαστεί πολλές φορές να το συμβου- λευτούμε κατά την χρήση (κατασκευή SQL ερωτημάτων, σύνδεση με γλώσσες προγραμματισμού, κτλ). Το PDF παράγεται από το μενού File > Print to PDF… ή File -> Export... Τέλος, πρέπει να εξάγουμε τον SQL κώδικα που όταν εκτελεστεί στον MySQL Server θα δημιουργή- σει την database που σχεδιάσαμε. Αυτό γίνεται από την επιλογή File > Export > Forward Engineer SQL CREATE Script… όπου: Α) Ορίζετε το όνομα και τη θέση του αρχείου που θα παραχθεί (βλ. Εικόνα 13). Εικόνα 13: Μετατροπή της σχεδίασης σε SQL κώδικα.
  • 10. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 10/12 Β) Ζητάτε ο κώδικας να σβήνει (DROP) άλλη συνονόματη database, εφόσον βρει τέτοια, όταν εκτε- λεστεί, και γενικά να βάζει DROP δηλώσεις πριν από CREATE δηλώσεις (βλ. (2) στην επόμενη ει- κόνα). Αυτό δεν είναι απαραίτητο πάντα, εξυπηρετεί όμως στη φάση δοκιμών και διορθώσεων της database μέχρι να πάρει την τελική της μορφή. Οι δηλώσεις DROP θα διαγράψουν υπάρχου- σα database ή/και πίνακες με ίδιο όνομα. Αν δεν το θέλετε πρέπει να λάβετε τα μέτρα σας. Γ) Αν σε κάποιους πίνακες έχουμε κάνει προ-εισαγωγή εγγραφών τότε πρέπει να επιλέξετε και το "Generate INSERT Statements for Tables" Δ) Πατήστε Next και στο επόμενο παράθυρο επιλέξτε τι θέλετε να γίνει export (συνήθως όλα όσα κάνατε – δηλ. δεν πειράζετε κάτι). Ε) Πατάτε Next και ήδη θα δείτε τον SQL κώδικα που δημιουργήθηκε. Ζ) Πατάτε Finish και ο κώδικας αποθηκεύεται στο αρχείο που ορίσατε. Στο σημείο αυτό έχετε τελειώσει με ένα κύκλο σχεδίασης (μπορεί να χρειαστούν κι άλλοι, διορθωτι- κοί). Η σχεδίαση είναι επίπονη και χρονοβόρα διαδικασία – τυχόν ατέλειες θα γεννήσουν αργότερα προβλήματα. Κλείστε όλα τα tabs στο πάνω μέρος του παραθύρου του Workbench και επιστρέψτε στην καρτέλα (tab) Home. Φροντίστε να αποθηκεύσετε τη σχεδίαση σε αρχείο Workbench ώστε όταν χρειαστεί να μπορείτε να την τροποποιήσετε. Δημιουργία της Database / Υποβολή Ερωτημάτων Για τις επόμενες εργασίες πρέπει να λειτουργεί ταυτόχρονα και ο MySQL Server (του XAMP ή του Η/Υ σας, ανάλογα με την εγκατάσταση που έχετε κάνει). Εικόνα 14: Το περιβάλλον δημιουργίας ή/και εκτέλεσης SQL ερωτημάτων. Συνδεθείτε στον MySQL Server με τη σύνδεση που είχατε φτιάξει στην αρχή. Φορτώστε τον κώδικα που κάνατε export στα προηγούμενα βήματα. Μόλις φορτωθεί (Εικόνα 14) τον «τρέχετε» και όταν ολο-
  • 11. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 11/12 κληρωθεί η εκτέλεση κάνετε refresh (με το σχετικό button) για να δείτε την database που φτιάχτηκε. Αν κάτι δεν πήγε καλά, θα υπάρχουν κόκκινα εικονίδια στην καρτέλα Output και η εκτέλεση δεν θα έχει ολοκληρωθεί καθώς by default σταματά στο πρώτο λάθος που θα συμβεί. Με την database πλέον δημιουργημένη, μπορούμε να τη δοκιμάσουμε ανοίγοντας πίνακες, καταχω- ρώντας εγγραφές και υποβάλλοντας ερωτήματα. Κάντε right click στον πίνακα students αριστερά και επιλέξτε SELET Rows – Limit 1000. Δείτε τα αποτελέσματα (Εικόνα 15). Υπόψη ότι οι μεταβολές που κάνετε καταχωρούνται στον πίνακα μόνο όταν πατήσετε το button Ap- ply (βλ. Εικόνα 15). Εικόνα 15: Υποβολή SQL ερωτημάτων. Εικόνα 16: Διαχείριση χρηστών – Δημιουργία χρήστη.
  • 12. Βάσεις Δεδομένων Ι (Βοηθητικό Υλικό) Φώτης Κόκκορας / ΤΕΙ Θεσσαλίας 12/12 Server Administration (Χρήστες & Δικαιώματα) Τελευταία ενέργεια είναι ο ορισμός χρήστη (database user) με κατάλληλα δικαιώματα, μέσω του οποί- ου η εφαρμογή μας (όποια κι αν είναι αυτή - desktop εφαρμογή, web εφαρμογή, ακόμη και άνθρωπος) θα συνδέεται στη database, καθώς η λύση του root δεν είναι καθόλου καλή ιδέα (γιατί άραγε?). Αριστερά στο Navigator, επιλέξτε το tab Management και μετά Users and Privileges. Πατήστε Add Account, ορίστε Login Name user1 και Password 1234 (το δίνετε και 2η φορά) και μετά πατήστε Apply. Εκτός απροόπτου, ο χρήστης θα δημιουργηθεί (βλ. Εικόνα 16). Απομένει να ορίσουμε δικαιώματα! Έχοντας επιλεγμένο τον user1 πηγαίνετε στην καρτέλα Schema Privileges (Εικόνα 17), πατήστε το κουμπί Add Entry… (τέρμα δεξιά – (2)) και στο παράθυρο που θα βγει επιλέξτε το schema/database στο οποίο θέλετε να δώσετε δικαιώματα. Πατήστε ΟΚ να φύγει το παρά- θυρο και στη συνέχεια επιλέξτε έστω τα SELECT, INSERT, UPDATE, DELETE (4), ώστε ο χρήστης να μπο- ρεί να κάνει αντίστοιχα ερωτήματα. Αποθηκεύστε με Apply (5). Εικόνα 17: Απόδοση δικαιωμάτων σε database χρήστη. Αν τώρα ορίσετε μια νέα σύνδεση με βάση αυτόν τον χρήστη, ο συνδεόμενος θα μπορεί να υποβάλει μόνο ερωτήματα SELECT, INSERT, UPDATE, DELETE στη συγκεκριμένη database. Αν θέλετε να ελέγχετε και από ποιο H/Y θα μπορεί να συνδέεται κάποιος στην database, τότε ρυθμί- στε και το Limit Connectivity to Hosts Matching. Η πιο χαλαρή ρύθμιση είναι %, δηλαδή σύνδεση από οπουδήποτε. Η πιο αυστηρή localhost, δηλαδή μόνο από τον συγκεκριμένο Η/Υ. Περισσότερα για δικαιώματα στις διαλέξεις του μαθήματος και σε σχετικό εργαστήριο. Να αποθηκεύετε συχνά. Η εφαρμογή δεν είναι 100% σταθερή και μερικές φορές καταρρέει αναπάντεχα (πλέον όχι τόσο συχνά όπως παλαιότερα –γενικά είναι ΟΚ). Να την ανανεώνετε καθώς βγαίνουν τακτικά νέες εκδόσεις. Μετά και από τα παραπάνω είστε έτοιμοι να χρησιμοποιήσετε την νέα σας βάση δεδομένων για ερ- γασίες προσθήκης/μεταβολής/διαγραφής και γενικότερα SQL ερωτημάτων. Φ. Κόκκορας