Σχεσιακό Πρότυπο Δεδομένων

Σχετικά έγγραφα
Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Συστήματα Διαχείρισης Βάσεων Δεδομένων

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Εργαστήριο Βάσεων Δεδομένων

Lecture 12: SQL DDL I

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Βάσεις Δεδομένων Ι Ευρετήρια/Indexes. (...και επιδόσεις ΣΔΒΔ) Views (Όψεις) Φώτης Κόκκορας (MSc/PhD) Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπ/νιών

Βάσεις Δεδομένων Ι SQL Μέρος 1 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 2 ο Μάθημα: Βασικά Θέματα Βάσεων Δεδομένων. Δρ. Κωνσταντίνος Χ.

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Βάσεις Δεδομένων Ι 6. Ιδιότητες πεδίων. Τμήμα Διοίκησης Επιχειρήσεων (Μεσολόγγι) ΤΕΙ Δυτικής Ελλάδας

Διαδικασιακός Προγραμματισμός

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

Οδηγίες Βασικής Χρήσης του MySQL Workbench

Εργαστήριο Βάσεων Δεδομένων

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

Οδηγίες Χρήσης της MySQL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Σχεδιασμός Βάσεων Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Οδηγίες Χρήσης της MySQL

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

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

Το σχεσιακό μοντέλο βάσεων δεδομένων

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Εισαγωγή στον Προγραμματισμό

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση του DBDesigner. Γιώργος Πυρουνάκης - forky@di.uoa.gr

Τύποι δεδομένων, τελεστές, μεταβλητές

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

µπιτ Λύση: Κάθε οµάδα των τεσσάρων µπιτ µεταφράζεται σε ένα δεκαεξαδικό ψηφίο 1100 C 1110 E Άρα το δεκαεξαδικό ισοδύναµο είναι CE2

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

databases linux - terminal (linux / windows terminal)

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

Βάσεις Δεδομένων. Εργαστήριο 1. Ηλεκτρονικοί Υπολογιστές ΙI. Ακαδημαϊκό Έτος Διαφάνεια 1. Κάπαρης Αναστάσιος

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

Αντικειμενοστρεφής Προγραμματισμός

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εργαστήριο Βάσεων Δεδομένων

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Διαδικασιακός Προγραμματισμός

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Τμήμα Διοίκησης Επιχειρήσεων

Στοιχειώδης προγραμματισμός σε C++

Ηλεκτρονικοί Υπολογιστές II

Διαδικασιακός Προγραμματισμός

1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL

Σχεσιακό Μοντέλο. Σχεδιασμός Βάσεων Δεδομένων Μάθημα 2 ο Μαρία Χαλκίδη

Τμήμα Πληροφορικής ΑΠΘ

Βάσεις δεδομένων. Δημιουργία και διαχείριση βάσης δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εργαστήριο 1

Φυσική Σχεδίαση Υλοποίηση βάσης

Εισαγωγή στην Access 2007

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Πληροφορική 2. Δομές δεδομένων και αρχείων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Βάσεις Δεδομένων : Σχεσιακό Μοντέλο 1. Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση.

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Transcript:

Βάσεις Δεδομένων Ι - 02 Σχεσιακό Πρότυπο Δεδομένων (Relational Data Model) (σύντομη παρουσίαση) Τύποι Δεδομένων Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας

Τι είναι τα Πρότυπα Δεδομένων; Είναι σημειογραφικά συστήματα που χρησιμοποιούμε για την περιγραφή δεδομένων. Τα πιο σημαντικά πρότυπα στα συστήματα βάσεων δεδομένων είναι το σχεσιακό πρότυπο και το πρότυπο των ημιδομημένων δεδομένων. Τα πρότυπα δεδομένων περιλαμβάνουν 3 βασικά συστατικά: Δομή Δεδομένων ΔΕΝ εννοούμε τις δομές δεδομένων του προγραμματισμού αλλά εννοιολογικά πρότυπα. Στο σχεσιακό πρότυπο η κύρια δομή δεδομένων είναι η σχέση/relation (ή πίνακας/table). Στο πρότυπο ημιδομημένων δεδομένων η κύρια δομή δεδομένων είναι οι ιεραρχικά φωλιασμένες ετικέτες (tags), με κλασικό αντιπρόσωπο τα XML δένδρα. Πράξεις επί των Δεδομένων Στις γλώσσες προγραμματισμού: πράξεις είναι οτιδήποτε μπορεί να προγραμματιστεί! Στο σχεσιακό πρότυπο έχουμε κύρια πράξεις πάνω σε πίνακες (σχεσιακή άλγεβρα) όπως π.χ. επιλογή των γραμμών που έχουν δεδομένη τιμή σε δεδομένη στήλη. Στο πρότυπο ημιδομημένων δεδομένων ακολουθούμε διαδρομές στο δένδρο, ζητάμε την τιμή δεδομένου κόμβου, κτλ Το πλήθος των επιτρεπτών πράξεων είναι μικρό. Αυτό οδηγεί σε απλές γλώσσες (πχ η SQL) Περιορισμοί στα Δεδομένα Στο σχεσιακό πρότυπο οι περιορισμοί μπορεί να είναι π.χ. στις δυνατές τιμές μιας στήλης. Στο πρότυπο ημιδομημένων δεδομένων μπορεί πχ κάποιος τύπος κόμβου να πρέπει να περιέχει δεδομένους άλλους κόμβους, πιθανώς και με συγκεκριμένη σειρά, κτλ. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 2 - Βάσεις Δεδομένων Ι

Πρότυπα Δεδομένων (συνέχεια) Υπάρχουν και άλλα, λιγότερο διαδεδομένα πρότυπα δεδομένων στις ΒΔ όπως το αντικειμενοστραφές σχεσιακό πρότυπο όπου: οι τιμές που αποθηκεύονται μπορεί να είναι σύνθετες δομές παρά απλοί αριθμοί και αλφαριθμητικά (που είπαμε ότι ισχύει στις σχεσιακές ΒΔ) οι σχέσεις μπορεί να συνοδεύονται από μεθόδους (methods) όπως π.χ. στη C++ Είναι γεγονός ότι τα ημιδομημένα πρότυπα είναι πιο ευέλικτα από το σχεσιακό, ειδικά αν αναλογιστεί κανείς ότι στο ιεραρχικό πρότυπο μπορεί να ενσωματωθούν και δομές γράφων, που είναι πολύ χρήσιμες. Όμως, το σχεσιακό πρότυπο είναι περισσότερο διαδεδομένο καθώς: παρέχει αποδοτικούς τρόπους πρόσβασης σε τεράστιους όγκους δεδομένων η απλότητα του μοντέλου και το περιορισμένο πλήθος πράξεων στα δεδομένα έχουν οδηγήσει σε απλές γλώσσες προγραμματισμού που επιτρέπουν στους προγραμματιστές να μπορούν με απλές εντολές να κάνουν σχεδόν τα πάντα. λίγες γραμμές κώδικα SQL ισοδυναμούν με εκατοντάδες γραμμές C το περιορισμένο ρεπερτόριο εντολών της SQL μας επιτρέπει να γράψουμε αλγορίθμους βελτιστοποίησης των ερωτημάτων έτσι ώστε να προγραμματίζουμε με περισσότερο κατανοητή για εμάς σύνταξη αλλά τελικά να εκτελείται ο βέλτιστα διατυπωμένος για τον Η/Υ κώδικας. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 3 - Βάσεις Δεδομένων Ι

Βασικές Αρχές Σχεσιακού Προτύπου (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. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 4 - Βάσεις Δεδομένων Ι

Βασικές Αρχές Σχεσιακού Προτύπου (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) Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 5 - Βάσεις Δεδομένων Ι

Βασικές Αρχές Σχεσιακού Προτύπου (3/5) Προεπιλεγμένη τιμή (default) είναι η τιμή που χρησιμοποιείται σε μια στήλη αν δεν γνωρίζουμε κάποια άλλη τιμή. Αν δεν έχουμε ορίσει default, τότε είναι το NULL. η προεπιλεγμένη τιμή μπορεί να υπολογίζεται τη στιγμή που χρειάζεται, όπως π.χ. με την τρέχουσα ημερομηνία και ώρα. Ισοδυναμία Αναπαραστάσεων Οι σχέσεις είναι σύνολα (sets) και όχι κατάλογοι άρα η σειρά των πλειάδων δεν παίζει ρόλο. Επίσης δεν παίζει ρόλο η σειρά των γνωρισμάτων αλλά (όπως ειπώθηκε) για πρακτικούς λόγους υιοθετούμε μια δεδομένη σειρά καθώς αυτή καθορίζει και τη σειρά των στηλών του πίνακα. Στιγμιότυπα Σχέσεων Το σύνολο των πλειάδων μιας σχέσης αποτελεί ένα στιγμιότυπο (instance) αυτής της σχέσης. πχ. ο πίνακας στη διαφάνεια 4 είναι ένα στιγμιότυπο της σχέσης Movies. Στην πορεία του χρόνου, καθώς π.χ. προσθέτουμε ταινίες στη σχέση Movies, προκύπτουν νέα στιγμιότυπα! Τα συμβατικά DBMS όμως διατηρούν μόνο μία εκδοχή της σχέσης: τις πλειάδες που βρίσκονται στη σχέση τώρα! Αυτό είναι το λεγόμενο τρέχον στιγμιότυπο. Υπάρχουν και οι χρονικές βάσεις δεδομένων που τηρούν παρελθούσες εκδοχές των δεδομένων! Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 6 - Βάσεις Δεδομένων Ι

Βασικές Αρχές Σχεσιακού Προτύπου (4/5) Κλειδιά Σχέσεων: το κλειδί (key) είναι ένα σύνολο γνωρισμάτων (συνήθως ένα μόνο γνώρισμα) της σχέσης για το οποίο δεν επιτρέπεται να υπάρχουν πλειάδες που να έχουν ίδια τιμή στα γνωρίσματα του κλειδιού. Για παράδειγμα: στη σχέση Φοιτητής, ο αριθμός μητρώου είναι κλειδί! (κάθε φοιτητής έχει διαφορετικό ΑΜ) στη σχέση Movies, έστω ότι ο συνδυασμός title και year είναι κλειδί (τα υπογραμμίζουμε). π.χ. Movies(title, year, length, genre) Θεωρούμε ότι δεν θα υπάρξουν ταινίες που θα κυκλοφορήσουν την ίδια χρονιά με ίδιο τίτλο! το year μόνο του δεν μπορεί να είναι κλειδί γιατί σε μια χρονιά κυκλοφορούν πολλές ταινίες! το title μόνο του δεν μπορεί να είναι κλειδί γιατί υπάρχουν ταινίες που έχουν ίδιο τίτλο ΠΡΟΣΟΧΗ: το κλειδί δεν ορίζεται με βάση το τρέχον στιγμιότυπο (δηλ. τα παρόντα δεδομένα) αλλά με βάση τα πιθανά στιγμιότυπα, δηλ. αυτά που θα προκύψουν μελλοντικά όταν θα καταχωρηθούν επιπλέον πλειάδες (δεδομένα). Συχνά δεν είναι εύκολο να οριστούν κλειδιά και επειδή τα σύνθετα κλειδιά με πολλά γνωρίσματα είναι δύσχρηστα, ορίζουμε τεχνητά κλειδιά (artificial keys). Τα τεχνητά κλειδιά συνήθως παίρνουν αυτόματα αριθμητικές τιμές 1, 2, 3, κ.ο.κ. ΠΡΟΣΟΧΗ: Η υιοθέτηση από μέρους μας ως κλειδιού ενός γνωρίσματος του οποίου η τιμή ΔΕΝ ελέγχεται 100% από εμάς, μακροπρόθεσμα εμπεριέχει ρίσκο! Έτσι εξηγείται γιατί κάθε φορέας έχει δικό του κωδικό (Αστ/κή Ταυτότητα, ΑΦΜ, ΑΜΚΑ, Τηλεφωνία, κτλ). Δεν είναι έτσι εξαρτημένος από τρίτους. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 7 - Βάσεις Δεδομένων Ι

Βασικές Αρχές Σχεσιακού Προτύπου (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 είναι διαφορετικοί, δε σημαίνει ότι μόνος του ο τίτλος μπορεί να αποτελέσει κλειδί. Δεν αποφασίζουμε το κλειδί με βάση το τρέχον στιγμιότυπο αλλά με βάση το πιθανό μελλοντικό στιγμιότυπο (όταν δηλαδή θα καταχωρηθούν επιπλέον ταινίες). Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 8 - Βάσεις Δεδομένων Ι

Τύποι Δεδομένων - Αλφαριθμητικά Να τονιστεί ότι κάθε υλοποίηση 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) όπου Ν ακέραιος ως τουλάχιστον 255 Χρήση σε περιπτώσεις που το μήκος των δεδομένων που θέλουμε να καταχωρούμε είναι το πολύ Ν χαρακτήρες και υπάρχει μεγάλη απόκλιση από αυτό το μήκος στα μήκη των αλφαριθμητικών που καταχωρούνται. Σε MySQL, αν Ν>255 τότε γίνεται TEXT (βλ. slide #10) Δηλαδή, ο τύπος VARCHAR είναι πιο οικονομικός σε αποθηκευτικό χώρο από τον CHAR. O δεύτερος όμως είναι πιο γρήγορα διαχειρίσιμος από το RDBMS (λόγω του σταθερού μήκους!). Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 9 - Βάσεις Δεδομένων Ι

Τύποι Δεδομένων Αλφαριθμητικά & Binary TEXT: για μεγάλα non-binary αλφαριθμητικά (http://dev.mysql.com/doc/refman/5.0/en/string-types.html) παραλλαγές του: TINYTEXT (2 8 bytes = 255 χαρακτήρες), TEXT (2 16 bytes = 64KΒ), MEDIUMTEXT (2 24 bytes = 2GB), LARGETEXT (2 32 bytes = 4GB) BINARY(n) και VARBINARY(n) για αλληλουχίες bit (binary αλφαριθμητικά) μήκους ως n στη λογική των τύπων CHAR και VARCHAR BLOB: (Binary Large Object) για binary αλφαριθμητικά και γενικά binary data (πχ εικόνες) παραλλαγές του (σε παρόμοια λογική με το TEXT): TINYBLOB, BLOB, MEDIUMBLOB, LARGEBLOB Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 10 - Βάσεις Δεδομένων Ι

Έστω η λέξη 'ποδήλατο' Τύποι Δεδομένων - Αλφαριθμητικά σε γνώρισμα τύπου varchar(12) θα αποθηκευτεί ακριβώς η λέξη 'ποδήλατο' σε γνώρισμα τύπου char(12) θα αποθηκευτεί η λέξη και 4 κενά (spaces): 'ποδήλατο ' ΠΡΟΣΟΧΗ: Αν επιχειρήσουμε να αποθηκεύσουμε αλφαριθμητικό μεγαλύτερο από το διαθέσιμο χώρο, οι επιπλέον χαρακτήρες χάνονται! Τεχνικές Λεπτομέρειες: Στη γλώσσα SQL τα αλφαριθμητικά οριοθετούνται με μονά εισαγωγικά (και όχι με διπλά που συνηθίζεται στον προγραμματισμό). Σε MySQL, αν κάποιος χαρακτήρας του αλφαριθμητικού είναι το μονό εισαγωγικό τότε πρέπει να μπει escaped. Αυτό σημαίνει να βάλουμε αριστερά του τον χαρακτήρα \ (backslash). πχ. το 'Jane's World' σε μια έκφραση SQL θα γραφεί ως 'Jane\'s World' ΠΡΟΣΟΧΗ: Δεν γίνεται σε όλα τα RDBMS με τον ίδιο τρόπο! Δείτε προσεκτικά τα γραφόμενα σε επόμενα slides (#16, #17) με τίτλο: Binary και non-binary Τύποι Αλφαριθμητικών Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 11 - Βάσεις Δεδομένων Ι

Τύποι Δεδομένων Boolean και Ακέραιοι BOOLEAN: για λογικές τιμές TRUE (ή 1), FALSE (ή 0) INT ή INTEGER για ακεραίους. Ανάλογα με το εύρος τιμών των αριθμών που θα αποθηκεύσουμε ίσως είναι καλύτερα μια εξειδίκευση αυτού του τύπου (βλ. πίνακα δεξιά με τι ισχύει σε MySQL). Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 12 - Βάσεις Δεδομένων Ι

Τύποι Δεδομένων Δεκαδικοί Αριθμοί Αριθμοί με υποδιαστολή: Σταθερής υποδιαστολής (ή ακριβούς τιμής): τύπος 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) Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 13 - Βάσεις Δεδομένων Ι

Τύποι Δεδομένων - Ημερομηνίες Χρονικά Δεδομένα: Ο τύπος 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 Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 14 - Βάσεις Δεδομένων Ι

Τύποι Δεδομένων Σύνολα Τιμών ENUM: αλφαριθμητικός τύπος αλλά με τις δυνατές τιμές του να προέρχονται από το κλειστό σύνολο τιμών που ορίζεται κατά τη φάση δήλωσης του τύπου (ή NULL). π.χ. αν θέλουμε ένα γνώρισμα με όνομα size να παίρνει τιμές small, medium ή large τότε θα το δηλώσουμε ως εξής: size ENUM('small', 'medium', 'large') σε MySQL, το σύνολο τιμών μπορεί να περιέχει ως 2 16 τιμές (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 Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 15 - Βάσεις Δεδομένων Ι

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! Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 16 - Βάσεις Δεδομένων Ι

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 (και τις παραλλαγές του). Με αυστηρή θεώρηση στο θέμα οικονομίας αποθηκευτικού χώρου, η επιλογή multibyte συνόλου χαρακτήρων όταν η δουλειά μπορεί να γίνει και με 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/ Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 17 - Βάσεις Δεδομένων Ι

SQL Structured Query Language Δομημένη Γλώσσα Ερωτήσεων Με βάση τη χρήση διακρίνουμε δύο κύρια μέρη: DDL: Data Definition Language (Γλώσσα Δήλωσης των Δεδομένων) περιλαμβάνει τις εντολές για δημιουργία και διαχείριση βάσεων δεδομένων (κατασκευή πινάκων, ευρετηρίων, μεταβολές στα γνωρίσματα πινάκων, κτλ) τις χρησιμοποιούμε αρχικά στη σχεδίαση και μετέπειτα σε εργασίες συντήρησης DQL: Data Query Languare (Γλώσσα Ερωτήσεων στα Δεδομένα) περιλαμβάνει τις εντολές για δημιουργία ερωτήσεων τις χρησιμοποιούμε από τη στιγμή που η ΒΔ μπαίνει σε παραγωγική χρήση Θα δούμε στη συνέχεια παραδείγματα εντολών από το κομμάτι DDL της SQL. Oι εντολές που θα δείτε στα επόμενα slides, στο εργαστήριο προκύπτουν ως αποτέλεσμα της χρήσης του Workbench. Μπορείτε όμως να δημιουργήσετε μια άδεια database και να δοκιμάσετε πάνω της τις παρακάτω εντολές γράφοντάς τες με το χέρι στον sql editor και εκτελώντας τες. Θα δούμε περισσότερη SQL σε μελλοντικά μαθήματα και εργαστήρια. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 18 - Βάσεις Δεδομένων Ι

CREATE TABLE Movies ( title char(100), year INT, length INT, genre char(10), studioname char(30), producerc int ); DROP TABLE Movies; προσθήκη και διαγραφή γνωρισμάτων Παραδείγματα SQL (DDL) CREATE TABLE MovieStars ( name char(30), address varchar(255), gender char(1) DEFAULT '?', birthdate date ); (το κόκκινο δεν είναι υποχρεωτικό) ALTER TABLE MovieStar ADD phone char(16); ALTER TABLE MovieStar DROP birthdate; CREATE TABLE MovieStars ( CREATE TABLE MovieStars ( name char(30) PRIMARY KEY, name char(30), address varchar(255), address varchar(255), gender char(1), gender char(1), birthdate date birthdate date, ); PRIMARY KEY (name) ); Όταν ορίζουμε πρωτεύον κλειδί σε σχέση, ταυτόχρονα δημιουργείται εξ ορισμού ένα ευρετήριο (το PRIMARY INDEX). Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 19 - Βάσεις Δεδομένων Ι

Ρυθμίσεις Γνωρισμάτων σε 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) ); Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 20 - Βάσεις Δεδομένων Ι

Ρυθμίσεις Γνωρισμάτων σε 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). Πολύ χρήσιμο καθώς μέσω αυτής της ρύθμισης φτιάχνουμε τεχνητά πρωτεύοντα κλειδιά! Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 21 - Βάσεις Δεδομένων Ι

Ευρετήρια (Indexes) & Workbench (για τα πρώτα εργαστήρια) Στην καρτέλα Columns στο Workbench (βλ. slide 20) τα checkboxes UQ ορίζουν ευρετήριο στο εκάστοτε γνώρισμα, που όμως είναι τύπου UNIQUE, δηλαδή δεν θα επιτρέπονται ίδιες τιμές σε αυτό το γνώρισμα, σε διαφορετικές πλειάδες. π.χ. αν το πεδίο είναι για καταχώριση του επώνυμου, δεν θα επιτρέπονται ίδια επώνυμα! μην το μπερδεύετε με το PRIMARY INDEX που προκύπτει από τον ορισμό κλειδιού Υπάρχει δυνατότητα ορισμού επιπλέον τύπων ευρετηρίου στην καρτέλα Indexes. Στην διπλανή εικόνα π.χ. ορίζεται ένα απλό (μίας στήλης) ευρετήριο τύπου INDEX που (σε αντίθεση με το τύπου UNIQUE) επιτρέπει ίδιες τιμές στο γνώρισμα stusurname. Τα ευρετήρια επιταχύνουν τις αναζητήσεις (select) αλλά επιβραδύνουν τις μεταβολές (insert, update, delete) Περισσότερα στo PDF 06. Φ. Κόκκορας / Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας - 22 - Βάσεις Δεδομένων Ι