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

Σχετικά έγγραφα
ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΓΡΕΒΕΝΑ)

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

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

Κεφάλαιο 3 Σχεσιακό Μοντέλο

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

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

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

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

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

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

Διάλεξη 04: Εννοιολογική Σχεδίαση Βάσης Δεδομένων II (Entity Relationship Modelling) Διδάσκων: Παναγιώτης Ανδρέου

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

Κλειδιά (keys) Λογικά, σκεφτόµαστε για «κλειδιά» σαν τα δεδοµένα (τα πεδία) εκείνα τα οποία µας επιτρέπουν να ξεχωρίσουµε τις διάφορες εγγραφές

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

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

Ανάλυση & Σχεδιασµός Πληροφοριακών Συστηµάτων Ι (Εργαστήριο) Σύστημα Διαχείρισης Πληροφοριακού υλικού της Δημοτικής επιχείρησης «Αναπτυξιακή ΑΕ»

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

Διάλεξη 03: Εννοιολογική Σχεδίαση Βάσης Δεδομένων I (Entity Relationship Modelling) Διδάσκων: Παναγιώτης Ανδρέου

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

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

Κεφάλαιο 2 Μοντέλο Οντοτήτων Συσχετίσεων

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

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

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

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

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

Βάσεις Δεδομένων. Σταύρος Βαλσαμίδης Βάσεις Δεδομένων Διάγραμμα Ο-Σ 1

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

Διάγραμμα Οντοτήτων - Συσχετίσεων

Βάσεις δεδομένων. (8 ο μάθημα) Ηρακλής Βαρλάμης

Βάσεις δεδομένων. (2 ο μάθημα) Ηρακλής Βαρλάμης

Απεικόνιση Διαγράμματος Οντοτήτων-Συσχετίσεων σε Σχεσιακό Μοντέλο Δεδομένων

Διάλεξη 08: Αντιστοίχηση Εννοιολογικού σε Σχεσιακό Μοντέλο (ER/EER to Relational) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

Βάσεις δεδομένων. (7 ο μάθημα) Ηρακλής Βαρλάμης

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

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

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 4: ER I. Data Modeling Using the ER Model

Θέματα Τελικής Εξέτασης. ΠΡΟΣΟΧΗ: Οι απαντήσεις πάνω στα ΘΕΜΑΤΑ

2. Το Μοντέλο Οντοτήτων- Συσχετίσεων

Διάλεξη 12: SQL Data Definition Language. Διδάσκων: Παναγιώτης Ανδρέου

Η αναλυτική περιγραφή της γλώσσας SQL αποτελεί αντικείµενο των σελίδων που ακολουθούν. Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ Ε ΟΜΕΝΩΝ

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

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

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

Βάσεις Δεδομένων 1 Δημήτριος Τσουμάκος

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

DELETE, UPDATE, INSERT.

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

Βάσεις Δεδομένων Ι. 2 ο Φροντιστήριο. Πέρδικα Πολίνα [perdika]

DELETE, UPDATE, INSERT

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

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

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

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

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



Βάσεις δεδομένων. (3 ο μάθημα) Ηρακλής Βαρλάμης

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Κανόνες μετατροπής Διαγράμματος Οντοτήτων-Συσχετίσεων σε Σχεσιακό Σχήμα. Δρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ,

ΗΥ360 - Αρχεία και Βάσεις Δεδομένων Χειμερινό Eξάμηνο Μοντέλο Οντοτήτων-Συσχετίσεων Σχεσιακό Μοντέλο

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

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

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

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

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

Ασκήσεις -Επανάληψη. Βάσεις Δεδομένων

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 5: ER II. Data Modeling Using the ER Model

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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Διάγραμμα Οντοτήτων Συσχετίσεων (ΔΟΣ) Entity Relationship Diagram (ERD)

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

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

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

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

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

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

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

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

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

2. Εισαγωγή Δεδομένων σε Σχεσιακή Βάση Δεδομένων

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

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

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

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

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

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10

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


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

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

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

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

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

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

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

Transcript:

ΤΕΙ ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙΙ ΕΡΓΑΣΤΗΡΙΟ ΥΛΟΠΟΙΗΣΗ ΜΙΑΣ ΣΧΕΣΙΑΚΗΣ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ ME TRANSACT SQL

Α. Παράδειγμα Εφαρμογής Βάσης δεδομένων[1] Για να κατανοηθεί η χρήση και η λειτουργία της Transact-SQL Θα δημιουργηθεί στο περιβάλλον του SQL Server 2005 μια βάση δεδομένων μιας εταιρίας ως παράδειγμα που θα ονομάζεται COMPANY. Η εταιρία αυτή ενδιαφέρεται να διατηρεί πληροφορίες για τους υπαλλήλους της, τα τμήματα που την αποτελούν, καθώς και τα έργα που αναλαμβάνουν τα διάφορα τμήματα, στα οποία εργάζονται οι υπάλληλοι των τμημάτων. Τέλος η εταιρία ενδιαφέρεται για ασφαλιστικούς λόγους να διατηρεί πληροφορίες για τα άτομα τα οποία είναι προστατευόμενα των υπαλλήλων. 1. Ανάλυση των απαιτήσεων του προβλήματος Μετά τη φάση της ανάλυσης των απαιτήσεων της συγκεκριμένης εταιρίας προκύπτει ότι: 1. Η εταιρεία είναι χωρισμένη σε τμήματα. Κάθε τμήμα έχει ένα όνομα, ένα κωδικό αριθμό, και εποπτεύεται από κάποιο υπάλληλο (manager). Η βάση δεδομένων επιτρέπει την καταχώρηση του κωδικού του manager του τμήματος και της ημερομηνίας κατά την οποία ανέλαβε την εποπτεία του. Τέλος ένα τμήμα μπορεί να είναι εγκατεστημένο σε πολλά διαφορετικά σημεία, δηλαδή να έχει γραφεία σε περισσότερες από µια περιοχές. 2. Ένα τμήμα ελέγχει ένα ή περισσότερα έργα (PROJECTS). Κάθε PROJECT έχει ένα όνομα, ένα κωδικό αριθμό, ένα προϋπολογισμό και πραγματοποιείται σε κάποια συγκεκριμένη τοποθεσία (location). 3. Για κάθε υπάλληλο καταχωρείται το όνομα και το επώνυμό του, ο αριθμός ταυτότητας (ID), η διεύθυνση του, ο μισθός του, το φύλο (sex) του και η ημερομηνία γέννησής του. Ένας υπάλληλος ανήκει σε κάποιο από τα τμήματα της εταιρείας (αλλά µόνο σε ένα τμήμα) και μπορεί να απασχολείται ταυτόχρονα σε πολλά έργα, που δεν ελέγχονται υποχρεωτικά από το ίδιο τμήμα. Για κάθε υπάλληλο η εταιρία θέλει να καταχωρεί τον αριθμό των ωρών ανά εβδομάδα που απασχολείται στο κάθε έργο καθώς και τον κωδικό του υπαλλήλου που τον επιβλέπει (supervisor). 4. Τέλος για όσους υπάλληλους έχουν κάποια άτομα υπό την προστασία τους (DEPENDENTS) η εταιρία θέλει να καταχωρεί (για λόγους κοινωνικής ασφάλισης) το όνομα του προστατευόμενου ατόμου, το φύλο, την ημερομηνία γέννησής του και το είδος της συγγένειας ανάμεσα σε αυτό και στον υπάλληλο που είναι καταχωρημένος. 2

Σύμφωνα με τις παραπάνω απαιτήσεις προκύπτει το εξής Διάγραμμα οντοτήτων συσχετίσεων της εταιρίας: LASTNAME SALARY NAME FIRSTNAME SEX EMPLOYEE BDATE ADDRES S N WORKS FOR 1 MNG_START DATE DNAME DNUMBER DEPARTMENT LOCATIONS EMP_ID 1 MANAGES 1 1 SUPERVISION N HO URS 1 M WO RKS ON N CO NTRO LS N DEPEND ON PROJECT PNUMBER PNAME PLOCATION DEPENDENTS RELATIONSHIP NAME SEX BDATE Εικόνα 1: Διάγραμμα οντοτήτων/συσχετίσεων (ERD) της εταιρίας (τα πρωτεύοντα και τα μερικά κλειδιά είναι υπογραμμισμένα). 3

2. Σχεσιακό σχήμα Στο ERD του παραπάνω παραδείγματος ορίζονται οι ακόλουθοι τύποι συσχέτισης: 1. MANAGES: τύπος συσχέτισης µε πολλαπλότητα 1:1 ανάμεσα στις οντότητες EMPLOYEE και DEPARTMENT. Η συμμετοχή του DEPARTMENT είναι ολική, ενώ του EMPLOYEE μερική. Αυτός ο τύπος συσχέτισης έχει ως γνώρισμα την ημερομηνία (MNG_STARTDATE) κατά την οποία ο κάθε manager ανέλαβε τη διοίκηση του τμήματος. 2. WORKS FOR: τύπος συσχέτισης µε πολλαπλότητα 1:Ν ανάμεσα στις οντότητες DEPARTMENT και EMPLOYEE. Η συμμετοχή και των δύο συσχέτισης είναι ολική. 3. CONTROLS: τύπος συσχέτισης µε πολλαπλότητα 1:Ν που ορίζεται ανάμεσα στις οντότητες DEPARTMENT και PROJECT. Η συμμετοχή του PROJECT είναι ολική, ενώ του DEPARTMENT μερική. 4. SUPERVISION: τύπος συσχέτισης µε πολλαπλότητα 1:Ν ανάμεσα στις οντότητες EMPLOYEE (στο ρόλο του επιβλέποντα-supervisor) και EMPLOYEE (στο ρόλο του επιβλεπόμενου). Και οι δύο τύποι οντότητας χαρακτηρίζονται από μερική συμμετοχή σε αυτόν τον τύπο συσχέτισης. 5. WORKS ON: τύπος συσχέτισης µε πολλαπλότητα Μ:Ν ανάμεσα στις οντότητες EMPLOYEE και PROJECT. Αυτός ο τύπος συσχέτισης περιέχει και ένα γνώρισμα που ονομάζεται HOURS στο οποίο καταχωρούνται οι ώρες που ένας εργαζόμενος εργάζεται σε ένα έργο τη βδομάδα. 6. DEPEND ON: τύπος συσχέτισης µε πολλαπλότητα 1:Ν που ορίζεται ανάμεσα στους τύπους οντότητας EMPLOYEE και DEPENDENT. Ο τύπος οντότητας EMPLOYEE χαρακτηρίζεται από μερική συμμετοχή, ενώ ο DEPENDENT από ολική, αφού ο DEPENDENT είναι αδύναμος τύπος οντότητας και η ύπαρξή του εξαρτάται από τη συμμετοχή του ή όχι σε αυτή τη σχέση. 3. Μετατροπή του ERD σε πίνακες Η μετατροπή του ERD της εταιρίας σε σχεσιακό σχήμα το οποίο ορίζει και τους πίνακες της βάσης γίνεται ακολουθώντας τα εξής βήματα: ΒΗΜΑ 1 : Για κάθε οντότητα του ERD δημιουργούμε ένα πίνακα που να περιλαμβάνει όλα τα απλά γνωρίσματα της οντότητας. Εάν μια οντότητα έχει σύνθετα γνωρίσματα προσθέτουμε µόνο τα απλά γνωρίσματα από τα οποία αποτελείται. Επιλέγουμε κάποιο από τα γνωρίσματα ως το πρωτεύον κλειδί του πίνακα. ΒΗΜΑ 2: Για κάθε αδύναμο τύπο οντότητας του ERD δημιουργούμε ένα πίνακα που περιέχει όλα τα γνωρίσματα της και προσθέτουμε το πρωτεύον κλειδί του πίνακα από τον οποίο εξαρτάται ως ξένο κλειδί (foreign key). Το πρωτεύον κλειδί της αδύναμης οντότητας θα είναι σύνθετο και θα αποτελείται από το συνδυασμό του ξένου και του μερικού κλειδιού που έχει οριστεί από το σχεδιασμό του ERD. Στο παράδειγμά μας έχουμε τη συσχέτιση DEPEND ON κατά την οποία η οντότητα DEPENDENT 4

εξαρτάται από την οντότητα EMPLOYEE. Το πρωτεύον κλειδί του πίνακα DEPENDENT θα αποτελείται από το συνδυασμό του ξένου κλειδιού (EMP_ID) και του μερικού κλειδιού (NAME) της οντότητας DEPENDENT. ΒΗ ΜΑ 3: Για κάθε τύπο συσχέτισης 1:1 μεταξύ δυο οντοτήτων προσθέτουμε το πρωτεύον κλειδί της μιας οντότητας ως ξένο κλειδί στην άλλη. Στις συσχετίσεις 1:1 συνήθως επιλέγουμε την οντότητα που συμμετέχει με ολική συμμετοχή στη συσχέτιση ως αυτή η οποία θα δεχθεί το ξένο κλειδί από την άλλη. Στην οντότητα που θα προστεθεί το ξένο κλειδί, προστίθενται επίσης και κάθε γνώρισμα που έχουμε ορίσει για αυτόν τον τύπο συσχέτισης. Στο παράδειγμά µας έχουμε ένα τύπο συσχέτισης µε πολλαπλότητα 1:1 με όνομα MANAGES ανάμεσα στις οντότητες EMPLOYEE και DEPARTMENT, η οποία περιέχει και ένα γνώρισμα, µε το όνο- µα MNG_STARTDATE. Αφού η συμμετοχή του DEPARTMENT είναι ολική τα επιπλέον πεδία προστίθενται στο πίνακα DEPARTMENT. Έτσι στον πίνακα DEPARTMENT προσθέτουμε το πρωτεύον κλειδί του πίνακα EMPLOYEE ως ξένο κλειδί με όνομα MANAGER_ID καθώς και το πεδίο της συσχέτισης MNG_STARTDATE. Το γνώρισμα LOCATIONS είναι γνώρισμα πολλαπλής τιμής και γι αυτό δημιουργούμε ξεχωριστό πίνακα όπως περιγράφεται σε παρακάτω βήμα. ΒΗΜΑ 4: Για κάθε τύπο συσχέτισης 1:Ν προσθέτουμε το πρωτεύον κλειδί της μιας οντότητας από την πλευρά του 1 ως ξένο κλειδί στην οντότητα από την πλευρά του Ν. Ο τύπος συσχέτισης SUPERVISION είναι αναδρομικός και ορίζεται ανάμεσα σε δύο εγγραφές της οντότητας EMPLOYEE. Στον τύπο συσχέτισης SUPERVISION, ένας MANAGER εποπτεύει πολλούς υπαλλήλους. Δηλαδή θα πρέπει να προσθέσουμε το πρωτεύον κλειδί του πίνακα που αντιπροσωπεύει τον MANAGER στον πίνακα που αντιπροσωπεύει τον απλό EMPLOYEE. Στην ουσία είναι ο ίδιος πίνακας αφού όλοι οι εργαζόμενοι ανεξάρτητα αν είναι MANAGER ή απλοί υπάλληλοι θα καταχωρούνται στον πίνακα EMPLOYEE. Έτσι προσθέτουμε το πρωτεύον κλειδί του πίνακα EMPLOYEE που είναι το EMP_ID στον ίδιο πίνακα ως ξένο κλειδί με όνομα SUPERVISOR_ID στο οποίο θα περιέχεται η πληροφορία σχετικά με το ποιος υπάλληλος επιβλέπεται από ποιόν. Το πεδίο αυτό μπορεί να είναι κενό σε μερικές εγγραφές αφού σύμφωνα με το σχεδιασμό της βάσης κάποιος απλός υπάλληλος δεν επιβλέπεται υποχρεωτικά από κάποιον άλλο. ΒΗΜΑ 5: Για κάθε τύπο συσχέτισης µε πολλαπλότητα Μ:Ν δημιουργούμε ένα νέο πίνακα, ο οποίος θα περιέχει ως ξένα κλειδιά, τα πρωτεύοντα κλειδιά των πινάκων που συμμετέχουν σε αυτή τη συσχέτιση. Επίσης θα περιέχει όλα τα γνωρίσματα που μπορεί να έχουμε ορίσει κατά το σχεδιασμό για τη συγκεκριμένη συσχέτιση. Το πρωτεύον κλειδί του πίνακα αυτού θα είναι σύνθετο κλειδί και αποτελείται από το συνδυασμό των ξένων κλειδιών των δύο πινάκων. Στο παράδειγμά µας μια σχέση µε πολλαπλότητα M:Ν είναι η σχέση WORKS ON μεταξύ της οντότητας EMPLOYEE και PROJECT και ο πίνακας WORKS ON θα είναι ο εξής: WORKS_ON [EMP_ID, DNUMBER, HOURS]. ΒΗΜΑ 6: Για κάθε γνώρισμα πολλαπλής τιμής, όπως το location στον πίνακα DEPARTMENT, δημιουργούμε ένα νέο πίνακα ο οποίος περιέχει το γνώρισμα αυτό, καθώς και το πρωτεύον κλειδί της οντότητας που το έχει ως ξένο κλειδί. Το πρωτεύον του νέου πίνακα θα είναι σύνθετο κλειδί και αποτελείται από το γνώρισμα και το ξένο κλειδί που προσθέσαμε. Στο παράδειγμά µας, το μοναδικό γνώρισμα πολλαπλής τιμής, είναι το πεδίο LOCATIONS της οντότητας DEPARTMENT. Έτσι τελικά το νέος πίνακας που τον ονομάζουμε 5

DEPT_LOCATIONS θα είναι ο εξής: DEPT_LOCATIONS [DNUMBER, DLOCATION] Εφαρμόζοντας τα παραπάνω βήματα στο ERD προκύπτει το παρακάτω σχεσιακό σχήμα στο οποίο φαίνονται ποιοι πίνακες πρέπει να δημιουργηθούν, ποια θα είναι τα γνωρίσματα τους και τα πρωτεύοντα κλειδιά, από που προέρχονται τα ξένα κλειδιά τους καθώς και ποια πεδία έχουν προστεθεί, ως γνωρίσματα κάποιας συσχέτισης. EMPLOYEE EMP_ID LASTNAME FISTNAME SALARY ADDRESS SEX BDATE SUPERVISOR_ID DNUMBER DEPARTMENT DEP_LOCATIONS DNUMBER DNAME MANAGER_ID MNG_STARTDATE DNUMBER LOCATIONS PROJECT WORKS_ON PNUMBER PNAME PLOCATION DNUMBER EMP_ID PNUMBER HOURS DEPENDENTS EMP_ID DNAME SEX BDATE RELATIONSHIP Εικόνα 2: Σχεσιακό σχήμα για τη βάση δεδομένων COMPANY 6

4. Δημιουργία του φυσικού σχήματος της βάσης δεδομένων COMPANY create database COMPANY use COMPANY create table EMPLOYEE ( EMP_ID char(8)not null, LASTNAME varchar (15)not null, FIRSTNAME varchar (15)not null, SALARY money, E_ADDRESS varchar (30), SEX char check(sex IN ('F','M')), BDATE datetime, SUPERVISOR_ID char(8)null, DNUMBER int not null, primary key (EMP_ID), foreign key (SUPERVISOR_ID)references EMPLOYEE(EMP_ID)) create table DEPARTMENT (DNUMBER int not null, DNAME varchar (15)not null, MANAGER_ID char(8) not null, MNG_STARTDATE datetime, primary key (DNUMBER), foreign key (MANAGER_ID)references EMPLOYEE(EMP_ID)) create table DEP_LOCATION (DNUMBER int not null, LOCATIONS varchar (15) not null, primary key(dnumber, LOCATIONS), foreign key (DNUMBER)references DEPARTMENT (DNUMBER)) create table PROJECT (PNUMBER int not null, PNAME varchar (30) not null, PLOCATION varchar (15), DNUMBER int not null, primary key (PNUMBER), foreign key (DNUMBER)references DEPARTMENT (DNUMBER)) create table WORKS_ON (EMP_ID char(8)not null, PNUMBER int not null, HOURS decimal(3,1) not null, primary key(emp_id,pnumber), foreign key (PNUMBER)references PROJECT(PNUMBER), foreign key (EMP_ID)references EMPLOYEE(EMP_ID)) create table DEPENDENTS (EMP_ID char(8) not null, DNAME varchar(15) not null, SEX char, BDATE datetime, RELATIOSHIP varchar(10), primary key(emp_id,dname), foreign key (EMP_ID)references EMPLOYEE(EMP_ID)) /*alter table EMPLOYEE add foreign key (DNUMBER)references DEPARTMENT(DNUMBER);*/ 7

[1]To περιεχόμενο του τμήματος Α. Παράδειγμα Εφαρμογής Βάσης δεδομένων, δεν αποτελεί αποκλειστική εργασία του εισηγητή και βασίζεται στο βιβλίο: R. Elmasri, S.B Ramez, Θεμελιώδεις Αρχές Συστημάτων Βάσεων Δεδομένων (Τόμος Α), 3 η έκδοση αναθεωρημένη, εκδόσεις Δίαυλος. Κεφάλαια 3, 8, 9. 8

Β. Προβλήματα σε Transact SQL στη βάση δεδομένων COMPANY 1. Να δημιουργηθεί μια procedure με όνομα ADD_EMPLOYEE η οποία θα εισάγει δεδομένα στον πίνακα EMPLOYEE. Θα πρέπει να δηλώσουμε παραμέτρους για κάθε στήλη του πίνακα που θέλουμε να εισαχθούν στοιχεία. create procedure ADD_EMPLOYEE @EMP_ID char(8), @LASTNAME varchar (15), @FIRSTNAME varchar (15), @SALARY money, @E_ADDRESS varchar (30), @SEX char, @BDATE datetime, @SUPERVISOR_ID char(8), @DNUMBER int As begin insert into EMPLOYEE (EMP_ID, LASTNAME, FIRSTNAME, SALARY, E_ADDRESS, SEX, BDATE, SUPERVISOR_ID, DNUMBER) values (@EMP_ID, @LASTNAME, @FIRSTNAME, @SALARY, @E_ADDRESS, @SEX, @BDATE, @SUPERVISOR_ID, @DNUMBER) end Η procedure εκτελείται ως εξής: Execute ADD EMPLOYEE 'B276548','Dimou','Giorgos',2000,'Araxthou 4', 'M', '10/08/1956',null, 1 Στην παράμετρο @SUPERVISOR_ID μπορούμε να δώσουμε την τιμή null αφού δεν είναι υποχρεωτικό κάποιος υπάλληλος να έχει έναν επιβλέπων (supervisor). 2. Να δημιουργηθεί μια procedure με όνομα ADD_DEPARTMENT η οποία θα εισάγει δεδομένα στον πίνακα DEPARTMENT. create procedure ADD_DEPARTMENT @DNUMBER int, @DNAME varchar (15), @MANAGER_ID char(8), @MNG_STARTDATE datetime as begin insert into DEPARTMENT (DNUMBER, DNAME, MANAGER_ID, MNG_STARTDATE) values (@DNUMBER, @DNAME, @MANAGER_ID, @MNG_STARTDATE) end 9

3. Να δημιουργηθεί μια procedure με όνομα ADD_DEP_LOCATION η οποία θα εισάγει δεδομένα στον πίνακα DEP_LOCATION. create procedure ADD_DEP_LOCATION @DNUMBER int, @LOCATIONS varchar (15) as begin insert into DEP_LOCATION (DNUMBER,LOCATIONS) values (@DNUMBER, @LOCATIONS) end 4. Να δημιουργηθεί μια procedure με όνομα ADD_DEP_PROJECT η οποία θα εισάγει δεδομένα στον πίνακα DEP_ PROJECT create procedure ADD_PROJECT @PNUMBER int, @PNAME varchar (30), @PLOCATION varchar (15), @DNUMBER int as begin insert into PROJECT (PNUMBER,PNAME,PLOCATION,DNUMBER) values (@PNUMBER,@PNAME,@PLOCATION,@DNUMBER) end 5. Να δημιουργηθεί μια procedure με όνομα ADD_WORKS_ON η οποία θα εισάγει δεδομένα στον πίνακα WORKS_ON create procedure ADD_WORKS_ON @EMP_ID char(8), @PNUMBER int, @HOURS decimal(3,1) as begin insert into WORKS_ON (EMP_ID,PNUMBER,HOURS) values (@EMP_ID,@PNUMBER,@HOURS) end 10

6. Να δημιουργηθεί μια procedure με όνομα ADD_DEPENDENTS η οποία θα εισάγει δεδομένα στον πίνακα DEPENDENTS create procedure ADD_DEPENDENTS @EMP_ID char(8), @DNAME varchar(15), @SEX char, @BDATE datetime, @RELATIOSHIP varchar(10) as begin insert into DEPENDENTS (EMP_ID,DNAME,SEX,BDATE,RELATIOSHIP) values (@EMP_ID,@DNAME,@SEX,@BDATE,@RELATIOSHIP) end 11

Παράρτημα Α: Εισαγωγή στοιχείων στους πίνακες της βάσης δεδομένων COMPANY με την εκτέλεση των διαδικασιών εισαγωγής -- Πίνακας EMPLOYEE execute ADD_EMPLOYEE 'B276548','Dimou','Giorgos',2000,'Araxthou 4', 'M', '10/08/1956', null, 1 execute ADD_EMPLOYEE 'S676548','Pappas','Kwstas',1000,'Filellinon 10 Giannena','M', '06/11/1970',null, 2 execute ADD_EMPLOYEE 'A276654','Kwsta','Maria', 1500, 'Benizelou 2 Preveza','F', '02/07/1970',null, 3 execute ADD_EMPLOYEE 'AE342134','Andreou','Antonis', 2000, 'Georgiou Pappa 12 Arta','M', '02/12/1977',null, 4 execute ADD_EMPLOYEE 'G276548','Georgiou','Giorgos', 2000, 'Metamorfosis 12 Giannena','M', '2/12/1969',null, 5 execute ADD_EMPLOYEE 'E375898','Mitsios','Andreas', 900, 'Kalitheas 12 Giannena','M', '5/9/1959', 'B276548', 1 execute ADD_EMPLOYEE 'A475637','Floros','Dimitris', 800, 'Araxthou 80 Arta','M', '1/1/1964', 'B276548', 1 execute ADD_EMPLOYEE 'K876543','Florou','Amalia', 800, 'Araxthou 80 Arta','F', '09/10/1987', 'S676548', 2 execute ADD_EMPLOYEE 'X674532','Dara','Stauroula', 950, 'Bas Konstantinou 2 Preveza','F', '08/11/1984', 'S676548', 2 execute ADD_EMPLOYEE ' H576543','Karras',' Andreas', 900, 'Kalitheas 12 Giannena','M', '6/08/1980', 'A276654', 3 execute ADD_EMPLOYEE 'K475637','Petrou','Dimitris', 800, 'Araxthou 80 Arta','M', '1/1/1964', 'A276654', 3 execute ADD_EMPLOYEE 'H576543','Toli','Amalia', 800, 'Araxthou 80 Arta','F', '09/10/1977', 'AE342134', 4 execute ADD_EMPLOYEE 'J674532','Foti','Stauroula', 950, 'Bas Konstantinou 2 Preveza ','F', '08/11/1964', 'G276548', 5 -- Πίνακας DEPARTMENT execute ADD_DEPARTMENT 1, 'Management','B276548','2/05/1982' execute ADD_DEPARTMENT 2, 'Polisewn','S676548','04/02/1983' execute ADD_DEPARTMENT 3, 'Logistiriou','A276654', '3/08/1984' execute ADD_DEPARTMENT 4, 'Marketing','AE342134', '09/25/1990' execute ADD_DEPARTMENT 5, 'Ereunas', 'G276548', '02/3/1993' --Πίνακας DEP_LOCATION execute ADD_DEP_LOCATION 1, 'Arta' execute ADD_DEP_LOCATION 1, 'Giannena' execute ADD_DEP_LOCATION 2, 'Arta' execute ADD_DEP_LOCATION 2, 'Preveza' execute ADD_DEP_LOCATION 3, 'Giannena' 12

execute ADD_DEP_LOCATION 4, 'Arta' execute ADD_DEP_LOCATION 4, 'Giannena' execute ADD_DEP_LOCATION 5, 'Preveza' execute ADD_DEP_LOCATION 5, 'Giannena' --Πίνακας PROJECT execute ADD_PROJECT 1, 'Apografi proiontwn','giannena',2 execute ADD_PROJECT 2, 'Ereuna agoras','giannena',5 execute ADD_PROJECT 3, 'Proothisi proiontwn','arta',4 execute ADD_PROJECT 4, 'Proothisi proiontwn','giannena',4 execute ADD_PROJECT 5, 'Nees Agores','Giannena',1 execute ADD_PROJECT 6, 'Epektasi','Giannena',1 execute ADD_PROJECT 7, 'Diafimisi proiontwn','giannena',4 execute ADD_PROJECT 8, 'Enimerosi proiontwn','arta',1 --Πίνακας WORKS_ON execute ADD_WORKS_ON 'B276548',5,30 execute ADD_WORKS_ON 'B276548',6,25 execute ADD_WORKS_ON 'S676548',3,10 execute ADD_WORKS_ON 'S676548',4,10 execute ADD_WORKS_ON 'A276654',1,30 execute ADD_WORKS_ON 'A276654',8,5 execute ADD_WORKS_ON 'E375898',3,20 execute ADD_WORKS_ON 'E375898',5,15 execute ADD_WORKS_ON 'K876543',4,10 execute ADD_WORKS_ON 'X674532',3,10 execute ADD_WORKS_ON 'H576543',8,10 execute ADD_WORKS_ON 'H576543',4,10 execute ADD_WORKS_ON 'H576543',1,5 execute ADD_WORKS_ON 'H576543',5,5 execute ADD_WORKS_ON 'J674532',6,5 --Πίνακας DEPENDENTS execute ADD_DEPENDENTS 'B276548','Maria','F','04/08/1989','kori' execute ADD_DEPENDENTS 'B276548','Kwstas','M','04/08/1989','gios' execute ADD_DEPENDENTS 'AE342134','Aliki','F','02/09/1990','kori' execute ADD_DEPENDENTS 'AE342134','Maria','F','01/24/1988','kori' execute ADD_DEPENDENTS 'AE342134','Amalia','F','12/12/1988','kori' execute ADD_DEPENDENTS 'E375898','Giorgos','M','11/08/1989','gios' execute ADD_DEPENDENTS 'G276548','Dimitris','M','2/24/1990','gios' execute ADD_DEPENDENTS 'X674532','Zinovia','F','2/17/1970','aderfi' 13