Κατά τθν ενεργοποίθςθ τθσ ιδιότθτασ αυτισ ενδζχεται να εμφανιςτεί ζνα μινυμα ςαν αυτό τθσ παρακάτω εικόνασ. Απλά επιβεβαιϊςτε πατϊντασ ΟΚ.

Σχετικά έγγραφα
Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ

Πωσ δθμιουργώ φακζλουσ;

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox

Ιδιότθτεσ πεδίων Γενικζσ.

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

1. Εγκατάςταςη κειμενογράφου JCE

Βάςεισ Δεδομζνων Ι. Ενότητα 4: Μετατροπή ςχήματοσ Ο/Σ ςε ςχεςιακό. Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικϊν Ρλθροφορικισ ΤΕ

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

1. Κατέβαςμα του VirtueMart

Joomla! - User Guide

Εγχειρίδιο Χρήςησ Support

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ

Βάςεισ Δεδομζνων Ι. Ενότητα 7: Ειςαγωγή ςτην γλώςςα_sql. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικϊν Πλθροφορικισ ΣΕ

Αυτόματη δημιουργία στηλών Αντιστοίχηση νέων λογαριασμών ΦΠΑ

Διαδικασία Δημιοσργίας Ειδικών Λογαριασμών. (v.1.0.7)

Εγχειρίδιο Χριςθσ: Εφαρμογι Αιτιςεων για τα Εκπαιδευτικά Προγράμματα του Προςωπικοφ των Επιχειριςεων Τροφίμων

ςυςτιματα γραμμικϊν εξιςϊςεων

Βαςεις δεδομενων 1. Δρ. Αλζξανδροσ Βακαλουδθσ

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f.

Είςοδοσ/Εγγραφή ςτη διαχειριςτική ςελίδα του Σχολείου

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

Σφςτημα Κεντρικήσ Υποςτήριξησ τησ Πρακτικήσ Άςκηςησ Φοιτητών ΑΕΙ

Οδθγίεσ εγκατάςταςθσ και ρυκμίςεισ του ηυγοφ DIGI SM100

Οδηγίεσ για την Τποβολή Καταςτάςεων υμφωνητικών μζςω xml αρχείου

ΟΔΗΓΙΕ ΔΗΜΙΟΤΡΓΙΑ ΚΑΙ ΡΤΘΜΙΗ ΔΩΡΕΑΝ ΗΛΕΚΣΡΟΝΙΚΟΤ ΣΑΧΤΔΡΟΜΕΙΟΤ ΣΟ GOOGLE (G-MAIL)

Οδηγίες Πρόζβαζης ζηο EndNote Web. Πρόζβαζη ζηο EndNote Web

SingularLogic Application. Παραμετροποίηση Galaxy Application Server

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Εισαγωγή Νέου Παγίου

ΕΝΟΤΘΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΘ. ΚΕΦΑΛΑΙΟ 6: Θ «Βοικεια» ςτον Υπολογιςτι

assessment.gr USER S MANUAL (users)

ΕΠΑΝΕΚΔΟΗ ΣΙΜΟΛΟΓΙΩΝ ΙΑΝΟΤΑΡΙΟΤ (version )

w e b t r a i l s. g r Η ΛΕΙΣΟΤΡΓΙΚΟΣΗΣΑ ΣΟΤ ΙΣΟΣΟΠΟΤ J24CLASS.GR

Περιοριςμοί μιασ Β.Δ. ςτθν Access(1/3)

Διαδικαςία Προγράμματοσ Ωρομζτρθςθσ. (v.1.0.7)

ΟΝΟΜΑΣΟΛΟΓΙΑ ΠΑΡΑΜΕΣΡΩΝ ΓΙΑ ΠΡΟΑΡΜΟΜΕΝΕ ΑΝΑΦΟΡΕ. παραμζτρου> (Εμφανίηεται ςαν Caption ςτθν φόρμα των φίλτρων).

Εργαςτιριο Βάςεων Δεδομζνων

Εφδοξοσ+ Συνδεκείτε ςτθν Εφαρμογι Φοιτθτϊν και μεταβείτε ςτθ ςελίδα «Ανταλλαγι Βιβλίων (Εφδοξοσ+)».

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων»

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Πρόςβαςη και δήλωςη μαθημάτων ςτον Εφδοξο

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου

Σύ ντομος Οδηγο ς χρη σης wikidot για τα projects

Κάνουμε κλικ ςτθν επιλογι του οριηόντιου μενοφ «Get Skype»για να κατεβάςουμε ςτον υπολογιςτι μασ το πρόγραμμα του Skype.

Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων

ΟΔΗΓΙΕΣ ΔΗΜΙΟΥΡΓΙΑΣ ΚΑΙ ΡΥΘΜΙΣΗΣ ΔΩΡΕΑΝ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΑΧΥΔΡΟΜΕΙΟΥ ΣΤΟ YAHOO

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΚΑΤΑΧΩΗΣΗ ΣΧΕΔΙΩΝ ΚΑΙΝΟΤΟΜΙΑΣ ΑΡΟ ΦΟΕΙΣ ΚΑΙΝΟΤΟΜΙΑΣ

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

1 Εγκατϊςταςη λογαριαςμού

Δημιουργία Εντφπων Intrastat και Ανακεφαλαιωτικοφ Πίνακα

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν

ΟΔΗΓΙΕ ΓΙΑ ΣΗΝ ΕΙΑΓΩΓΗ ΕΚΔΡΟΜΩΝ & ΝΕΩΝ - ΑΝΑΚΟΙΝΩΕΩΝ ΣΗΝ ΙΣΟΕΛΙΔΑ ΣΗ Δ.Δ.Ε. ΘΕΠΡΩΣΙΑ

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

Σφντομεσ Οδθγίεσ Χριςθσ

Οδηγίες αναβάθμισης χαρτών

1. Διαχείριςη ενθεμάτων

Διαχείριςη Αριθμοδεικτών (v.1.0.7)

Βάςεισ Δεδομζνων Ι. Ενότητα 12: Κανονικοποίηςη. Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικών Πλθροφορικισ ΤΕ

Seventron Limited. Οδηγίες χρήσης EnglishOnlineTests.com

Διαδικαζία Διατείριζης Εκηύπωζης Ιζοζσγίοσ Γενικού - Αναλσηικών Καθολικών. (v )

Πωσ δημιουργώ μάθημα ςτο e-class του ΠΣΔ [επίπεδο 1]

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΤΟΤ. Φιλιοποφλου Ειρινθ

Εγκατάσταση «Μισθός 2005»

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε)

Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων

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

Οδηγίες χρήσης του QGIS

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό. μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

Modellus 4.01 Συ ντομοσ Οδηγο σ

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Επιμελητήρια)

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

Γ' ΛΥΚΕΙΟΥ Η ΤΑΞΗ ΤΗΣ ΤΕΛΙΚΗΣ ΕΠΙΛΟΓΗΣ. Στθ ΓϋΛυκείου οι Ομάδεσ Προςανατολιςμοφ είναι τρεισ:

17. Πολυδιάςτατοι πίνακεσ

Οδηγίεσ για την πρόςβαςη των δικαιοφχων ςτο ΟΠΣΑΑ

ΕΝΟΣΗΣΑ 3: ΧΡΗΗ ΕΡΓΑΛΕΙΩΝ ΕΚΦΡΑΗ ΚΑΙ ΔΗΜΙΟΤΡΓΙΑ

Ηλεκτρονικι Υπθρεςία Ολοκλθρωμζνθσ Διαχείριςθσ Συγγραμμάτων και Λοιπϊν Βοθκθμάτων

φνδεςη με βάςη δεδομζνων

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΗ. του ΙΑΣΡΟΦΑΡΜΑΚΕΤΣΙΚΟΤ ΦΑΚΕΛΟΤ ΑΘΕΝΩΝ Για τον ΟΙΚΟ ΝΑΤΣΟΤ ΕΡΓΑΣΗΡΙΑΚΟΙ ΓΙΑΣΡΟΙ. iknowhow Πληροφορική A.E

ΕΡΓΑΣΗΡΙΟ ΕΦΑΡΜΟΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ

Θεςιακά ςυςτιματα αρίκμθςθσ

GNSS Solutions guide. 1. Create new Project

Διαχείριση Επιλογών Διαμόρφωσης

DIOSCOURIDES VERSION

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων

ΑΛΕΞΑΝΔΡΕΙΟ ΣΕΙ ΘΕΑΛΟΝΙΚΗ ΣΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗ Σ.Ε. ΜΑΘΗΜΑ : ΑΛΓΟΡΙΘΜΙΚΗ ΚΑΙ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΔΙΔΑΚΩΝ : ΓΟΤΛΙΑΝΑ ΚΩΣΑ

ΦΤΛΛΟ ΕΡΓΑΙΑ ΤΠΗΡΕΙΑ ΗΛΕΚΣΡΟΝΙΚΟΤ ΣΑΥΤΔΡΟΜΕΙΟΤ

Λειτουργικά υςτιματα Windows XP

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες)

Συγγραφι επιςτθμονικισ εργαςίασ. Η κορφφωςθ τθσ προςπάκειάσ μασ

Μεθολογία αςκιςεων αραίωςησ και ανάμειξησ διαλυμάτων (με τθν ίδια δ. ουςία).

Transcript:

Δημιουργία Πινάκων Για τθ δθμιουργία πινάκων ςτο περιβάλλον phpmyadmin μποροφμε είτε να χρθςιμοποιιςουμε τθ φόρμα δθμιουργίασ πίνακα, είτε να εκτελζςουμε ζνα ερϊτθμα SQL Στθ παρακάτω εικόνα φαίνεται μια κενι φόρμα δθμιουργίασ νζου πίνακα Στο πρϊτο πεδίο ζχει ειςαχκεί το κείμενο «ID» για το όνομα του πρϊτου πεδίου, με τφπο INT (integer) Αυτό το πεδίο προορίηεται για πρωτεφον κλειδί (primary key) Γι αυτό το λόγο ενεργοποιοφμε τθν επιλογι «PRIMARY» ςτθ ςτιλθ «Index» Κατά τθν ενεργοποίθςθ τθσ ιδιότθτασ αυτισ ενδζχεται να εμφανιςτεί ζνα μινυμα ςαν αυτό τθσ παρακάτω εικόνασ Απλά επιβεβαιϊςτε πατϊντασ ΟΚ Στθ ςυνζχεια ενεργοποιοφμε τθν αυτόματη αφξηςη (Auto Increment A_I ) για το πεδίο «ID» Αυτι θ επιλογι ανακζτει ςτθ βάςθ τθν αυτόματθ αφξθςθ του πρωτεφοντοσ κλειδιοφ Στθν παρακάτω εικόνα φαίνονται ςυμπλθρωμζνα τα βαςικά πεδία ενόσ πίνακα για τθν αποκικευςθ των βιβλίων μιασ βιβλιοκικθσ Επίςθσ ανακζτουμε ςτθ βάςθ τθ κωδικοποίθςθ «utf8_general_ci» Αφοφ ςυμπλθρωκοφν τα παρακάτω πεδία, πατάμε «αποκικευςθ» για να δθμιουργθκεί ο πίνακασ

Σε αυτό το ςθμείο πρζπει να ποφμε ότι ςυνικωσ προθγείται θ πλιρθσ ςχεδίαςθ τθσ βάςθσ ςφμφωνα με τισ προδιαγραφζσ τθσ εφαρμογισ Ακολουκεί θ καταςκευι τθσ βάςθσ, θ οποία μπορεί βεβαίωσ να τροποποιθκεί όταν αυτό κρίνεται απαραίτθτο Κατά τθν ςυμπλιρωςθ τθσ παραπάνω φόρμασ μασ δίνεται θ δυνατότθτα να ελζγξουμε το ερϊτθμα SQL που προκφπτει από αυτιν Αυτό μπορεί να γίνει από το κουμπί «Προεπιςκόπηςη SQL» Για τθ ςυγκεκριμζνθ φόρμα το ερϊτθμα που δθμιουργείται είναι το εξισ CREATE TABLE `books` ( `ID` INT NOT NULL AUTO_INCREMENT, `ISBN` VARCHAR (127) NOT NULL, `title` VARCHAR(255) NOT NULL, `author` VARCHAR(127) NOT NULL, `price` decimal(15,2) NOT NULL, `status` TINYINT(1) NOT NULL DEFAULT '1', `date_added` DATE NOT NULL, PRIMARY KEY (`ID`) ) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_general_ci;

Αντί λοιπόν να δθμιουργιςουμε το πίνακα με τθ χριςθ τθσ φόρμασ, κα μποροφςαμε να εκτελζςουμε αυτό το ερϊτθμα από το περιβάλλον phpmyadmin και τθ καρτζλα «SQL» Σε περίπτωςθ που δθμιουργοφςαμε τον πίνακα χωρίσ ανάκεςθ πρωτεφοντοσ κλειδιοφ, αυτό κα μποροφςε να οριςκεί μετά Τότε κα μποροφςαμε να εκτελζςουμε τρία ερωτιματα Ζνα για τθ δθμιουργία του πίνακα και άλλα δυο για τθ τροποποίθςι του Τα ερωτιματα αυτά παρουςιάηονται παρακάτω Συνικωσ αυτι είναι θ μορφι των ερωτθμάτων που παράγονται όταν εξάγουμε τθ βάςθ μζςω του phpmyadmin CREATE TABLE `books` ( `ID` int(11) NOT NULL, `ISBN` varchar(127) NOT NULL, `title` varchar(255) NOT NULL, `author` varchar(127) NOT NULL, `price` decimal(15,2) NOT NULL, `status` tinyint(1) NOT NULL DEFAULT '1', `date_added` date NOT NULL ALTER TABLE `books` ADD PRIMARY KEY (`ID`); ALTER TABLE `books` MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT; Τροποποίηςη Πινάκων Όπωσ είπαμε θ δομι του πίνακα μπορεί να χρειαςτεί να αλλάξει μετά τθ δθμιουργία του Αυτό μπορεί κρικεί απαραίτθτο αν αλλάξουν οι προδιαγραφζσ ι αν κάτι δεν ζχει γίνει ςωςτά κατά τθ δθμιουργία του πίνακα Όπωσ και κατά τθ δθμιουργία του πίνακα αυτό μπορεί να γίνει με το γραφικό περιβάλλον ι με εντολζσ τθσ SQL Ζνα παράδειγμα τζτοιων εντολϊν βλζπουμε ςτο τζλοσ τθσ προθγοφμενθσ ενότθτασ, όπου χρθςιμοποιοφνται δυο εντολζσ τροποποίθςθσ για να οριςτεί το κλειδί του πίνακα ALTER TABLE `books` ADD PRIMARY KEY (`ID`); ALTER TABLE `books` MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT; Με τον ίδιο τρόπο μπορεί να αλλάξει μια ιδιότθτα για κάποιο πεδίο, να διαγραφεί ζνα πεδίο ι να προςτεκεί νζο

Ζςτω για παράδειγμα ότι κζλουμε να αλλάξουμε το όνομα του πεδίου date_added και να το κάνουμε added Από το γραφικό περιβάλλον, μποροφμε να πάμε ςτθ δομι του πίνακα και να πατιςουμε το κουμπί change Στθ φόρμα που κα ανοίξει μποροφμε να αλλάξουμε το όνομα ι κάποια άλλθ ιδιότθτα του πεδίου Στθ ςυνζχεια μποροφμε να δοφμε ποιο είναι το ιςοδφναμο ερϊτθμα που κα εφαρμόςει τθν αλλαγι, πατϊντασ το κουμπί «προεπιςκόπηςη SQL» Με το κουμπί «Save» εφαρμόηουμε τισ αλλαγζσ Το ιςοδφναμο ερϊτθμα είναι το εξισ: ALTER TABLE `books` CHANGE `date_added` `added` DATE NOT NULL; Στο κάτω μζροσ τθσ ςελίδασ τθσ δομισ του πίνακα δίνεται θ δυνατότθτα να προςκζςουμε νζα πεδία ςτον πίνακα Απλά επιλζγουμε πόςα κζλουμε και που κα τοποκετθκοφν ςε ςχζςθ με τα υπάρχοντα πεδία Ασ προςκζςουμε ζνα ακόμα πεδίο «date_published» μετά από το πεδίο «date_added» Το πεδίο αυτό κα είναι επίςθσ τφπου Date Επιλζγουμε λοιπόν προςκικθ ενόσ πεδίου μετά από το πεδίο «date_added» και πατάμε ΟΚ

Στθ φόρμα που ακολουκεί, ςυμπλθρϊνουμε τισ ιδιότθτεσ που κζλουμε για το νζο πεδίο και πατάμε «Save» για τθν εφαρμογι των αλλαγϊν Το ιςοδφναμο ερϊτθμα είναι το εξισ: ALTER TABLE `books` ADD `date_published` DATE NOT NULL AFTER `date_added`; Αν κζλαμε να αφαιρζςουμε ζνα πεδίο κα μποροφςαμε να πατιςουμε το κουμπί «drop» αντί για το κουμπί «change» Το ιςοδφναμο ερϊτθμα είναι το εξισ: ALTER TABLE `books` DROP `date_published`; Σημείωςη: Η αλλαγι των ιδιοτιτων ενόσ πεδίου μπορεί να γίνει είτε με τθν «CHANGE» είτε με τθν «MODIFY» Στθ πρϊτθ πρζπει να αναφζρεισ ξανά όλεσ τισ ιδιότθτεσ του πεδίου, ενϊ ςτθ δεφτερθ μόνο το όνομα και τον τφπο και φςτερα τισ αλλαγζσ Ζςτω για παράδειγμα ότι κζλουμε να επιτρζψουμε τθ τιμι NULL ςτο πεδίο Author ALTER TABLE `books` CHANGE `author` `author` VARCHAR(127) CHARACTER SET utf8 COLLATE utf8_general_ci NULL; ALTER TABLE `books` MODIFY `author` VARCHAR(127) NULL;

Συςχετίςεισ Πινάκων Για να κάνουμε τα αρχικά παραδείγματα πιο απλά, ορίςαμε τον πίνακα books ζτςι ϊςτε να ενςωματϊνει όλεσ ςχεδόν τισ απαραίτθτεσ πλθροφορίεσ Ζτςι για παράδειγμα το όνομα του ςυγγραφζα και είναι ενςωματωμζνο ςε κάκε εγγραφι βιβλίου Κάτι τζτοιο όμωσ οδθγεί ςε επανάληψη πληροφορίασ και δθμιουργεί προβλιματα ςτθν ακεραιότητα τθσ βάςθσ Για παράδειγμα αν ςτθ βάςθ υπάρχουν 3 βιβλία του Stephen King τότε ςε κάκε ζνα από αυτά κα αναφζρεται το όνομά του Κάτι τζτοιο πρζπει να αποφεφγεται και προτείνεται θ δθμιουργία ενόσ δεφτερου πίνακα για τθν αποκικευςθ τθσ οντότθτασ «Συγγραφζασ»(author) Η νζα αυτι οντότθτα ςυςχετίηεται ςτθ ςυνζχεια με τθν οντότθτα του βιβλίου, δθμιουργϊντασ ζτςι μια ςχζςθ ανάμεςα ςτουσ δυο πίνακεσ Γι αυτό το λόγο άλλωςτε οι βάςεισ που μασ απαςχολοφν ονομάηονται ςχεςιακζσ Ανάλογα με το μοντζλο τθσ ςχζςθσ των πινάκων διακρίνουμε τισ ςχζςεισ ζνα προσ ζνα (1:1), ζνα προσ πολλά (1:Ν) και πολλά προσ πολλά (Ν:Μ) Σχζςη ζνα προσ πολλά (1:Ν) Στθ περίπτωςθ τθσ ςυςχζτιςθσ του πίνακα των βιβλίων με ζνα νζο πίνακα ςυγγραφζων, θ ςχζςθ που προκφπτει είναι ζνα προσ πολλά (1:Ν), αφοφ ζνασ ςυγγραφζασ μπορεί να ςυςχετιςτεί με πολλά βιβλία, αλλά ζνα βιβλίο με ζναν μόνο ςυγγραφζα Για να υλοποιθκεί αυτι θ ςχζςθ πρζπει πρϊτα να δθμιουργιςουμε το πίνακα των ςυγγραφζων Μποροφμε να χρθςιμοποιιςουμε το παρακάτω ερϊτθμα CREATE TABLE `author` ( `ID_auth` int(11) UNIQUE NOT NULL AUTO_INCREMENT, `` varchar(127) NOT NULL Στθ ςυνζχεια κα πρζπει να αλλάξουμε το πίνακα των βιβλίων ϊςτε αντί να αποκθκεφουμε το όνομα του ςυγγραφζα να αποκθκεφουμε το id του από τον πίνακα author Η τροποποίθςθ μπορεί να γίνει με ζνα ερϊτθμα ALTER TABLE ωσ εξισ: ALTER TABLE `books` MODIFY `author` ΙΝΤ(11) NOT NULL; Για τον ίδιο ςκοπό που δθμιουργικθκε ο πίνακασ των ςυγγραφζων κα δθμιουργιςουμε και ζνα πίνακα για τθν αποκικευςθ των εκδοτικϊν οίκων, «publication» και κα προςκζςουμε ζνα ακόμα πεδίο ςτον πίνακα books για να δθμιουργθκεί θ ςχζςθ

CREATE TABLE `publication` ( `ID_publ` int(11) UNIQUE NOT NULL AUTO_INCREMENT, `` varchar(127) NOT NULL ALTER TABLE `books` ADD `publication` ΙΝΤ(11) NOT NULL; ΣΗΜΕΙΩΣΗ: Σε αυτό το ςθμείο να αναφζρουμε ότι οι ςχζςεισ μεταξφ πινάκων ορίηονται πολλζσ φορζσ ςτισ ςχεςιακζσ βάςεισ με τθ διλωςθ ξζνου κλειδιοφ (Foreign Key) Αυτι θ μζκοδοσ δεν υποςτθρίηεται από όλεσ τθσ μθχανζσ τθσ MySQL Όπου όμωσ υποςτθρίηεται (πχ ςτθν InnoDB) μπορεί να βοθκιςει ϊςτε θ βάςθ να διαχειρίηεται μόνθ τθσ κάποιεσ από τισ λειτουργίεσ και, δεδομζνθσ τθσ ςφνδεςθσ των πινάκων, να εγγυάται τθν ακεραιτότθτα τθσ βάςθσ Στο δικό μασ παράδειγμα δεν χρθςιμοποιικθκε μια τζτοια διλωςθ ξζνου κλειδιοφ Σχζςη πολλά προσ πολλά (Μ:Ν) Οι ςχζςεισ που υλοποιικθκαν μζχρι τϊρα είναι και οι δυο τφπου «ζνα προσ πολλά (1:Ν)» Θα υλοποιιςουμε ακόμθ μια ςχζςθ «πολλά προσ πολλά (Ν:Μ)» Ασ υποκζςουμε ότι κζλουμε να αποκθκεφουμε τθ πλθροφορία για το ποια βιβλία ζχουν δανειςτεί τα μζλθ τθσ βιβλιοκικθσ (ι αλλιϊσ ποιοσ ζχει δανειςτεί το κάκε βιβλίο) Σε πρϊτθ φάςθ γίνεται ςαφζσ ότι χρειαηόμαςτε ζνα πίνακα για τθν οντότθτα μζλοσ (member) και ζνα επιπλζον πεδίο member ςτο πίνακα των βιβλίων Ο πίνακασ των μελϊν κα μποροφςε να ζχει πολφ περιςςότερα πεδία αλλά κα του δϊςουμε μόνο δυο πεδία για ευκολία books ID ISBN author publication member Author Id_auth Publication Id_publ Member Id_member

Ο πίνακασ Member ςυνδζεται με το πίνακα books μζςω του κλειδιοφ Ζτςι, όπωσ και ςτισ άλλεσ δυο ςχζςεισ, μποροφμε ςε ζνα βιβλίο να βάλουμε ςτο πεδίο member το ID του μζλουσ ϊςτε να επιτευχκεί θ διλωςθ του ποιοσ ζχει δανειςτεί το βιβλίο Πάλι όμωσ ζχουμε μια ςχζςθ (1:Ν) και μάλιςτα θ μόνθ πλθροφορία που ζχουμε αποκθκεφςει είναι το «ποιοσ ζχει δανειςτεί το βιβλίο τϊρα» Αν κζλαμε να ζχουμε ζνα ιςτορικό του ποιοσ ζχει δανειςτεί το βιβλίο κατά το παρελκόν τότε οι πλθροφορίεσ κα ιταν περιςςότερεσ Μάλιςτα δεν κα γνωρίηαμε πόςεσ ακριβϊσ φορζσ το ζχει δανειςτεί κάποιοσ και άρα δεν κα μποροφςαμε να ενςωματϊςουμε αυτι τθ πλθροφορία ςε κάποιον από τουσ πίνακεσ books και members βάηοντασ ζνα επιπλζον πεδίο Για τθν αντιμετϊπιςθ αυτισ τθσ κατάςταςθσ χρειαηόμαςτε ζναν επιπλζον πίνακα για τθν αποκικευςθ αυτισ τθσ πλθροφορίασ Σε αυτό το πίνακα (ζςτω lend) κα τοποκετοφςαμε ηευγάρια τιμϊν βιβλίο-μζλοσ για να δθλϊςουμε ότι ζνα μζλοσ δανείςτθκε ζνα βιβλίο Θα μποροφςαμε ακόμα να αποκθκεφςουμε και τθν θμερομθνία δανειςμοφ και επιςτροφισ Το προθγοφμενο μοντζλο λοιπόν κα άλλαηε ςτο εξισ: Lend books (1:Ν) ID_lend Member ID ISBN ID Id_member (M:1) Id_member Start_date End_date author publication Author Id_auth Publication Id_publ Με τθ βοικεια του πίνακα lend ουςιαςτικά υλοποιοφμε τθ ςχζςθ «πολλά προσ πολλά (Ν:Μ)» που ςυνδζει τουσ δυο πίνακεσ, members και books

Ακολουκοφν τα ερωτιματα SQL που κα χρθςιμοποιοφςαμε για τθ δθμιουργία των πινάκων CREATE TABLE ` member ` ( `ID_member` INT (11) UNIQUE NOT NULL AUTO_INCREMENT, `` VARCHAR(127) NOT NULL CREATE TABLE `Lend` ( `ID_lend` INT(11) UNIQUE NOT NULL AUTO_INCREMENT, `ID` INT(11) NOT NULL, `ID_member` INT(11) NOT NULL, `start_date` DATE NOT NULL, `end_date` DATE NOT NULL