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

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

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

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

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

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

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

Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων

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

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

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

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

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

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

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

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

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

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

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)

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

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

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

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

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

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

Τεχνολογία Πολιτισμικού Λογισμικού

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

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

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

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

Σχεδίαση Βάσεων Δεδομένων

ΕΠΛ 342 Βάσεις εδοµένων

Διαχείριση χρηστών και δικαιωμάτων

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

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

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

Τ.Ε.Ι ΘΕΣΣΑΛΟΝΙΚΗΣ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΔΒΔ (ΕΡΓΑΣΤΗΡΙΟ 4) Τελευταία ενημέρωση: 11/2011. Μετασχηματισμός διαγράμματος ER σε σχεσιακό σχήμα ΒΔ

Βάσεις Περιβαλλοντικών Δεδομένων

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

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

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

Σχεδίαση Βάσεων Δεδομένων

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 8 : Βάσεις Δεδομένων (2/2) Δρ.

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Ανοικτά Ακαδημαϊκά Μαθήματα

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

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

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

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

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

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

Σχεδίαση Βάσεων Δεδομένων

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

Το Σχεσιακό μοντέλο και η γλώσσα SQL

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

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

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

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

Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model. Νικόλαος Ζ. Ζάχαρης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

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

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

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

Κεφάλαιο 3 Δημιουργία Πινάκων Data Definition Language (DDL)

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

Κεφάλαιο 6. Περιορισμοί Ακεραιότητας Βάσεων Δεδομένων

ΣΧΕΣΙΑΚΕΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ

Τεχνολογία Πολιτισμικού Λογισμικού

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

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

Αρχεία και Βάσεις Δεδομένων

Βάσεις Δεδομένων. Ενότητα 5: Σημασιολογικός Σχεδιασμός. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 2 24/01/2012

Κεφάλαιο 4 Σχεδίαση Βάσεων Δεδομένων

Το Σχεσιακό Μοντέλο Βάσεων Δεδομένων

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

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

Κεφ 4: Προχωρημένες Εντολές SQL

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

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

Διαχείριση Πολιτισμικών Δεδομένων

Κεφάλαιο 2. Δημιουργία Βάσης Δεδομένων και Πινάκων

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

Σχεσιακό Μοντέλο Περιορισμοί Μετατροπή ER σε Σχεσιακό Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Relational Model

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

DELETE, UPDATE, INSERT

Ανοικτά Ακαδημαϊκά Μαθήματα

DELETE, UPDATE, INSERT.


Transcript:

ΕΣΔ330 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας Φυσική Σχεδίαση Υλοποίηση βάσης Περιεχόμενα Περιεχόμενα Εισαγωγή Μετασχηματισμός οντοτήτων Μετασχηματισμός συσχετίσεων Ακεραιότητα δεδομένων Παραδείγματα 1

Βιβλιογραφία [Ullman 2007]: Chapter 4 [Seyed 2007]: Chapter 8 [Forta 2005]: Chapter 21 [Oppel 2004]: Chapter 8 [Petersen 2002]: Chapter 5 [Taylor 2000]: Chapters 10, 12 [Teorey 2005]: Chapter 6 Βιβλιογραφία Ενότητας Εισαγωγή Η φυσική σχεδίαση αποσκοπεί στο μετασχηματισμό του ER διαγράμματος σε μια βάση δεδομένων. Περιλαμβάνει: Τη δημιουργία των πινάκων της βάσης: Τονκαθορισμότωνπεδίωνστουςπίνακες Τον καθορισμό των περιορισμών όσον αφορά τα πεδία των πινάκων, τις επιτρεπτές τιμές τις οποίες λαμβάνουν καθώς και τα ξένα κλειδιά Η φυσική σχεδίαση της βάσης μπορεί να γίνει είτε με εξειδικευμένο λογισμικό το οποίο συνήθως παρέχεται με το σύστημα DBMS (π.χ. phpmyadmin για τη βάση MySQL) είτε με κατάλληλες εντολές SQL (συνήθως βασισμένες στην CREATE TABLE και την ALTER TABLE). Η δεύτερη μεθοδολογία φυσικής υλοποίησης της βάσης (δηλαδή με τη βοήθεια της SQL) είναι λιγότερο εξαρτημένη από το συγκεκριμένο σύστημα DBMS που χρησιμοποιείται 2

Βασικά βήματα μετασχηματισμού ER διαγράμματος σε βάση Ο μετασχηματισμός ενός ER διαγράμματος σε βάση δεδομένων περιλαμβάνει αρκετές ενέργειες και ελέγχους. Εντούτοις τα τρία κυριότερα βήματα είναι: 1) Μετασχηματισμός κάθε οντότητας σε πίνακα (με εισαγωγή των κατάλληλων κλειδιών και πεδίων). 2) Δημιουργία ενός πίνακα για κάθε συσχέτιση πολλά προς πολλά. Στον πίνακα συμπεριλαμβάνονται τα πρωτεύοντα κλειδιά των οντοτήτων που συνδέονται με τη συσχέτιση καθώς και τα δεδομένα διασταύρωσης 3) Μετασχηματισμός κάθε τριαδικής (ή μεγαλύτερης πολλαπλότητας) συσχέτισης σε πίνακα ανεξαρτήτως της μορφής της συσχέτισης (π.χ. ένας προς ένα προς ένα, ένα προς πολλά προς ένα, κ.ο.κ) 4) Προσθήκη των κατάλληλων περιορισμών στα πεδία των πινάκων που έχουν δημιουργηθεί στα βήματα (1)-(3) Μετασχηματισμός οντοτήτων Όλες οι οντότητες που εμφαίνονται στο ER διάγραμμα μετασχηματίζονται σε πίνακες. Στους πίνακες περιλαμβάνονται όλα τα πεδία των οντοτήτων ως στήλες Για κάθε οντότητα που αντιστοιχεί σε μια συσχέτιση «ένα προς πολλά» που αντιστοιχεί στην πλευρά του «πολλά» δημιουργείται στον αντίστοιχο πίνακα ένα ξένο κλειδί με αναφορά στο πρωτεύον κλειδί στην πλευρά του «ένα» Συσχετίσεις «ένα προς ένα» υποδηλώνουν συχνά κακή σχεδίαση (ιδιαίτερα όταν είναι υποχρεωτικές και προς τις δύο κατευθύνσεις). Αν κατασκευαστούν δύο ξεχωριστοί πίνακες τότε επιλέγεται ο ένας μόνο από αυτούς για να προστεθεί σε αυτόν ξένο κλειδί 3

Παράδειγμα Να κατασκευάσετε τους πίνακες για το πιο κάτω διάγραμμα. Λύση: CREATE TABLE Departments (code CHAR(3), name VARCHAR(25), phone VARCHAR(15), sec_name VARCHAR(45), PRIMARY KEY(code)) CREATE TABLE Students (sid INT(3), name VARCHAR(20), surname VARCHAR(25), semester INT(1) UNSIGNED, phone VARCHAR(15), dept_id CHAR(3) NOT NULL, PRIMARY KEY(sid), FOREIGN KEY (dept_id) REFERENCES Departments ON DELETE SET default ON UPDATE cascade) Μετασχηματισμός συσχετίσεων Οι συσχετίσεις απαιτούν ιδιαίτερους χειρισμούς στην υλοποίηση της βάσης: Σχέσεις πολλά προς πολλά μετασχηματίζονται σε πίνακες Τριαδικές σχέσεις οποιασδήποτε πολλαπλότητας μετασχηματίζονται σε πίνακες Σε όλες τις περιπτώσεις η πολλαπλότητα της σχέσης μας οδηγεί σε συγκεκριμένες επιλογές όσον αφορά τις τιμές των ξένων κλειδιών και των τιμών NULL Στις επόμενες διαφάνειες θα δούμε διάφορα παραδείγματα μετασχηματισμού συσχετίσεων. 4

ένα Διακρίνουμε τρεις περιπτώσεις: Ένα προς ένα υποχρεωτική και προς τις δύο κατευθύνσεις. Στην περίπτωση αυτή οι δύο οντότητες μπορούν να ενοποιηθούν σε μία. Αν θέλουμε να τις κρατήσουμε (πιθανόν επειδή ο πίνακας που προκύπτει έχει πολλά πεδία) τότε χρησιμοποιούμε μόνο στον ένα πίνακα ξένο κλειδί με μη NULL τιμή (και κατάλληλες συνθήκες σε περίπτωση διαγραφής ήκαιενημέρωσης) Ένα προς ένα υποχρεωτική προς τη μία κατεύθυνση. Ηοντότηταστηνπλευράτου προαιρετικού τμήματος παίρνει ξένο κλειδί το πρωτεύον της άλλης οντότητας. Το ξένο κλειδίέχειμηnull τιμή και κατάλληλες συνθήκες σε περίπτωση διαγραφής ή και ενημέρωσης. Ένα προς ένα προαιρετική και προς τις δύο κατευθύνσεις. Χρησιμοποιούμε μόνο στον ένα πίνακα ξένο κλειδί με τιμή που μπορεί να είναι και NULL (και κατάλληλες συνθήκες σεπερίπτωσηδιαγραφήςήκαιενημέρωσης) ένα (2) Ένα προς ένα υποχρεωτική και προς τις δύο κατευθύνσεις. CREATE TABLE Reports (no INT(3), name VARCHAR(40), PRIMARY KEY(no)) CREATE TABLE Abbreviations (Abbr_no CHAR(6), report_no INT(3) NOT NULL UNIQUE, PRIMARY KEY(Abbr_no), FOREIGN KEY (report_no) REFERENCES Reports ON DELETE cascade ON UPDATE cascade) Ένα προς ένα υποχρεωτική προς τη μία κατεύθυνση. CREATE TABLE Academics (ID INT(3), name VARCHAR(20), surname VARCHAR(25), rank INT(1) UNSIGNED, specialty VARCHAR(25), phone VARCHAR(15), PRIMARY KEY(ID)) CREATE TABLE Departments (code CHAR(3), name VARCHAR(25), phone VARCHAR(15), sec_name VARCHAR(45), coordinator_id INT(3) NOT NULL UNIQUE PRIMARY KEY(code), FOREIGN KEY (coordinator_id) REFERENCES Academics ON DELETE SET default ON UPDATE cascade) 5

ένα (3) Ένα προς ένα προαιρετική και προς τις δύο κατευθύνσεις. «Σε κάθε ακαδημαϊκό μπορεί να δοθεί το πολύ ένα laptop. Υπάρχουν laptop που δεν έχουν χρεωθεί σε κανένα ακαδημαϊκό» CREATE TABLE Academics (ID INT(3), name VARCHAR(20), surname VARCHAR(25), rank INT(1) UNSIGNED, specialty VARCHAR(25), phone VARCHAR(15), PRIMARY KEY(ID)) CREATE TABLE Laptops (no INT(2), firm VARCHAR(20), bought_date DATE, academic_id INT(3), PRIMARY KEY(no), FOREIGN KEY (academic_id) REFERENCES Academics ON DELETE SET NULL ON UPDATE cascade) πολλά Σε όλες τις περιπτώσεις το ξένο κλειδί τοποθετείται στην οντότητα που αντιστοιχεί στα πολλά. Διακρίνουμε τέσσερεις υποπεριπτώσεις: 1) Ένα προς πολλά υποχρεωτική και προς τις δύο κατευθύνσεις. Το ξένο κλειδί έχει μη NULL τιμή και κατάλληλες συνθήκες σε περίπτωση διαγραφής ή και ενημέρωσης 2) Ένα προς πολλά προαιρετική προς την κατεύθυνση του «ένα». Το ξένο κλειδί μπορεί να έχει NULL τιμή (και κατάλληλες συνθήκες σε περίπτωση διαγραφής ή και ενημέρωσης). 3) Ένα προς πολλά προαιρετική προς την κατεύθυνση του «πολλά». Ο μετασχηματισμός είναι ίδιος με την περίπτωση (1). Ο έλεγχος της υποχρεωτικής τιμής στα «πολλά» δεν μπορεί να εφαρμοστεί κατά τον ορισμό του πίνακα αλλά με μεταγενέστερο έλεγχο. 4) Ένα προς πολλά προαιρετική και προς τις δύο κατευθύνσεις. Ο μετασχηματισμός είναι ίδιος με την περίπτωση (2). Ο έλεγχος της υποχρεωτικής τιμής στα «πολλά» δεν μπορεί να εφαρμοστεί κατά τον ορισμό του πίνακα αλλά με μεταγενέστερο έλεγχο. 6

πολλά (2) ACADEMIC ID name surname rank specialty phone Ένα προς πολλά υποχρεωτική και προς τις δύο κατευθύνσεις: «Κάθε ακαδημαϊκός υπάγεται σε ένα και μόνο τμήμα. Κάθε τμήμα έχει τουλάχιστον ένα ακαδημαϊκό» CREATE TABLE Departments (code CHAR(3), name VARCHAR(25), phone VARCHAR(15), sec_name VARCHAR(45), PRIMARY KEY(code)). CREATE TABLE Academics (ID INT(3), name VARCHAR(20), surname VARCHAR(25), rank INT(1) UNSIGNED, specialty DEPARTMENT VARCHAR(25), phone VARCHAR(15), dept_id CHAR(3) NOT NULL, code PRIMARY KEY(ID), FOREIGN KEY (dept_id) REFERENCES name phone Departments ON DELETE SET default ON UPDATE cascade) sec_name has πολλά (3) Ένα προς πολλά προαιρετική προς την κατεύθυνση του «ένα» «Κάθε τμήμα δημοσιεύει πολλές αναφορές. Υπάρχουν αναφορές που δε δημοσιεύονται από κάποιο τμήμα» CREATE TABLE Departments (code CHAR(3), name VARCHAR(25), phone VARCHAR(15), sec_name VARCHAR(45), PRIMARY KEY(code)). CREATE TABLE Reports (no INT(3), title VARCHAR(40), summary TEXT, dept_id CHAR(3), PRIMARY KEY(ID), FOREIGN KEY (dept_id) REFERENCES Departments ON DELETE SET NULL ON UPDATE cascade) 7

Δυαδική συσχέτιση πολλά προς πολλά Σε όλες τις περιπτώσεις δημιουργείται επιπλέον πίνακας για τη σχέση πολλά προς πολλά Στο νέο πίνακα ορίζουμε ξένα κλειδιά των πρωτεύοντα κλειδιά των συσχετιζόμενων οντοτήτων καθώς και τα δεδομένα διασταύρωσης. Επειδή η σχέση πολλά προς πολλά με τη δημιουργία ενδιάμεσου πίνακα θα διασπαστεί σε δύο σχέσεις ένα προς πολλά με υποχρεωτική την πλευρά του «ένα» ισχύουν για τις τιμές των πεδίων όσα αναφέρθηκαν για τη αντίστοιχη σχέση (ένα προς πολλά με υποχρεωτική την πλευρά του «ένα»). Παράδειγμα Να μετασχηματίσετε την πιο κάτω σχέση σε πίνακες: Λύση: CREATE TABLE Courses (code CHAR(6), name VARCHAR(25), ECTS INT(1) UNSIGNED, PRIMARY KEY(code)). CREATE TABLE Rooms (code VARCHAR(8), type SET( lecture, lab ), capacity INT(2) UNSIGNED, PRIMARY KEY(code)). CREATE TABLE Schedule (room_code VARCHAR(8), course_code CHAR(6), day SET( Monday, Tuesday, Wednesday, Thursday, Friday ), start_time TIME, end_time TIME, PRIMARY KEY(room_code, course_code), FOREIGN KEY (room_code) REFERENCES Rooms ON DELETE cascade ON UPDATE cascade, FOREIGN KEY (course_code) REFERENCES Courses ON DELETE cascade ON UPDATE cascade) 8

Ακεραιότητα δεδομένων Με τον όρο ακεραιότητα δεδομένων αναφερόμαστε στη διαδικασία προστασίας των δεδομένων της βάσης μέσω περιορισμών που τίθενται σε αυτήν. Ο όρος«περιορισμοί» προέκυψε επειδή απαγορεύουν αλλαγές στα δεδομένα οι οποίες θα μπορούσαν να παραβιάσουν έναν ή περισσότερους «κανόνες της επιχείρησης» (business rules). Οι «κανόνες επιχείρησης» υλοποιούνται σε μια βάση με κάποιον (πολλές φορές περισσότερους από έναν) από τους πιο κάτω τρόπους: NOT NULL τιμές. Πρωτεύοντα κλειδιά (δηλαδή διαφορετική τιμή για κάθε εγγραφή και επιπλέον μη NULL τιμή) Ξένα κλειδιά (κάθε τιμή ξένου κλειδιού αντιστοιχεί σε κάποια τιμή πρωτεύοντος κλειδιού στον πίνακα αναφοράς) Μοναδικές (unique) τιμές (όπως τα πρωτεύοντα κλειδιά αλλά επιτρέπονται και NULL τιμές) Έλεγχος τιμής πεδίου (για παράδειγμα HIRE_DATE > BORN_DATE) Έλεγχοι πεδίου (τύποι δεδομένων στα πεδία) Εναύσματα (π.χ. κατά τη διαγραφή ενός ακαδημαϊκού από τη βάση ελέγχεται κατά πόσον το τμήμα πληροί τον ελάχιστο αριθμό ακαδημαϊκών διότι η σχέση «ένα προς πολλά» είναι τουλάχιστον ένα στην πλευρά του «πολλά» Παραδείγματα Να υλοποιηθεί πλήρως η βάση για το ER διάγραμμα του σχήματος Να δημιουργηθούν οι πίνακες που αντιστοιχούν σε οντότητες Να δημιουργηθούν οι πίνακες που αντιστοιχούν σε σχέσεις πολλά προς πολλά Να οριστούν τα κατάλληλα πρωτεύοντα και ξένα κλειδιά (καθώςεπίσηςκαιοι περιορισμοί ακεραιότητας ξένου κλειδιού) Να οριστούν οι περιορισμοί πεδίου και τιμών NULL 9