5.1.2

5.1.2 Ορισμός του Σχήματος της ΒΔ
**Στόχοι / Προσδοκώμενα Αποτελέσματα** Ο μαθητής/τρια πρέπει να είναι ικανός/ή:
 * να χρησιμοποιεί την κατάλληλη εντολή SQL για να δημιουργήσει μια ΒΔ και να ορίζει το σύνολο χαρακτήρων των δεδομένων της
 * να γνωρίζει τις αρμοδιότητες του Διαχειριστή ΒΔ σχετικά με τη δημιουργία ΒΔ και σχήματος ΒΔ
 * να κατανοεί τους λόγους ασφάλειας που υπαγορεύουν η δημιουργία ΒΔ και σχήματος ΒΔ να γίνεται μόνο από τον Διαχειριστή ΒΔ

Πριν δημιουργηθούν πίνακες σε μια ΒΔ πρέπει να δημιουργηθεί η ΒΔ με την εντολή **CREATE DATABASE**. Για παράδειγμα η εκτέλεση της εντολή code format="sql" CREATE DATABASE mathitologio; code

θα δημιουργήσει μια κενή ΒΔ με όνομα //mathitologio//.

Η εντολή CREATE DATABASE μπορεί να περιλαμβάνει παραμέτρους που θα καθορίζουν τεχνικές λεπτομέρειες της ΒΔ, π.χ. φάκελοι αποθήκευσης των αρχείων με τα περιεχόμενα της ΒΔ, μέγιστο μέγεθος αρχείων της ΒΔ, σύνολο χαρακτήρων που χρησιμοποιείται για αναπαράσταση των δεδομένων της ΒΔ και τρόπος ταξινόμησής των δεδομένων, χρήση αρχείων καταγραφής (log files). Αν η εντολή δεν περιλαμβάνει παραμέτρους τότε η ΒΔ δημιουργείται με τις προκαθορισμένες τιμές που δηλώθηκαν κατά την εγκατάσταση του ΣΔΒΔ.

Στο ΣΔΒΔ MySQL, κατά τη δημιουργία μιας ΒΔ μπορεί να καθοριστεί το σύνολο χαρακτήρων που χρησιμοποιούν τα δεδομένα (παράμετρος **CHARACTER SET**) και ο τρόπος ταξινόμησης για το επιλεγμένο σύνολο χαρακτήρων (παράμετρος **COLLATE**). Για παράδειγμα, η εντολή

code format="sql" CREATE DATABASE mathitologio CHARACTER SET greek COLLATE greek_general_ci; code

θα δημιουργήσει μια κενή ΒΔ με όνομα //mathitologio//, τα δεδομένα της οποίας μπορούν να περιλαμβάνουν και Ελληνικούς χαρακτήρες (επιπλέον των λατινικών) σύμφωνα με την κωδικοποίηση “ISO 8859-7 Greek” και θα ταξινομούνται σύμφωνα με τη σειρά των γραμμάτων στο Ελληνικό αλφάβητο. Εναλλακτικά μπορεί να χρησιμοποιηθεί κωδικοποίηση Unicode που υποστηρίζει όλα τα διαθέσιμα αλφάβητα (άρα και το ελληνικό), όπως φαίνεται στο ακόλουθο παράδειγμα.

code format="sql" CREATE DATABASE mathitologio CHARACTER SET ut8 COLLATE utf8_general_ci; code

Ο λογαριασμός χρήστη με δικαιώματα Διαχειριστή ΒΔ που δημιουργείται κατά την εγκατάσταση του ΣΔΒΔ έχει πάντα τη δυνατότητα να δημιουργεί ΒΔ. Για λόγους ασφάλειας συνήθως η δυνατότητα δημιουργίας ΒΔ δεν δίνεται σε άλλους χρήστες.

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

Σε ορισμένα ΣΔΒΔ, μια ΒΔ μπορεί να περιέχει ένα ή περισσότερα σχήματα. Ένα **σχήμα (schema)** ομαδοποιεί πίνακες της ΒΔ, π.χ. ανά χρήστη ή εφαρμογή που χρησιμοποιεί τη ΒΔ, με σκοπό την καλύτερη διαχείριση και μεγαλύτερη ασφάλεια των περιεχομένων της ΒΔ. Για τη δημιουργία σχήματος χρησιμοποιείται η εντολή **CREATE SCHEMA** η οποία συνοδεύεται από εντολές SQL για τη δημιουργία πινάκων της ΒΔ. Αυτό είναι ιδιαίτερα χρήσιμο σε ΒΔ που περιλαμβάνουν μεγάλο πλήθος πινάκων.

Το ΣΔΒΔ **MySQL** στην τελευταία έκδοσή του (5.6.25, Μάιος 2015) δεν υποστηρίζει τη δημιουργία σχήματος και η εντολή **CREATE SCHEMA** έχει την ίδια σύνταξη και χρήση με την εντολή **CREATE DATABASE** (δηλαδή ο όρος SCHEMA χρησιμοποιείται ως συνώνυμο του όρου DATABASE).