ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΦΘΙΝΟΠΩΡΟ 2004 ΛΥΣΗ ΑΣΚΗΣΗΣ #2 Τ. Σελλής ΕΡΩΤΗΜΑ Α Θεωρούµε ότι έχουµε τις παρακάτω καθολικές σχέσεις (global relations), που αφορούν µία επιχείρηση η- λεκτροµηχανολογικών έργων (Κωδικός_ΥΠΑΛ, Όνοµα, ιεύθυνση, Μισθός) (Κωδικός_ΠΕΛ, Κατηγορία) (Κωδικός_ΕΡΓ, Κωδικός_ΠΕΛ, Τίτλος, Κόστος, Τοποθεσία) ΣΥΝΤΗΡΗΣΗ (Κωδικός_ΕΡΓ, Κωδικός_ΥΠΑΛ, ιάστηµα) Η εταιρία αναλαµβάνει έργα στις εξής τοποθεσίες: Αθήνα, Πειραιά, Θεσσαλονίκη και Πάτρα. Επιπλέον οι πελάτες κατηγοριοποιούνται σε: Μικρές και Μεγάλες επιχειρήσεις. Θεωρούµε τις ακόλουθες εφαρµογές: 1. Η πρώτη εφαρµογή παρακολουθεί την εκτέλεση νέων έργων και ενεργοποιείται από δύο «διοικητικές» τοποθεσίες. Η µία παρακολουθεί έργα µε προϋπολογισµό µικρότερο από 60.000, ενώ η δεύτερη τα υπόλοιπα. 2. Η δεύτερη εφαρµογή επιστρέφει τους υπαλλήλους που ασχολούνται µε τη συντήρηση ενός έργου και ενεργοποιείται και από τις τέσσερις τοποθεσίες. 3. Η τρίτη εφαρµογή ενηµερώνει τους µισθούς των υπαλλήλων. Ενεργοποιείται από τις δύο «διοικητικές» τοποθεσίες. Η πρώτη είναι υπεύθυνη για τους υπαλλήλους µε µισθό µικρότερο από 1000, ενώ η δεύτερη για τους υπόλοιπους. 4. Τέλος η τέταρτη εφαρµογή δηµιουργεί αναφορές για το κόστος των έργων των µικρών και µεγάλων πελατών και ενεργοποιείται από την πρώτη και τη δεύτερη «διοικητική» τοποθεσία αντίστοιχα. Για κάθε global relation σχεδιάστε το σχήµα κατάτµησης (fragmentation schema) αιτιολογώντας τη σχεδίασή σας. Για κάθε primary horizontal fragmentation, προσδιορίστε τα minterm predicates και τις προϋποθέσεις που πρέπει να πληρούνται ώστε η fragmentation να είναι disjoint και complete. Για κάθε derived fragmentation αναφέρετε αν τα αντίστοιχα join graphs είναι partitioned ή simple. ΑΠΑΝΤΗΣΗ: Θα δούµε τη κάθε σχέση χωριστά. Από την τέταρτη εφαρµογή παρατηρούµε ότι η σχέση χρησιµοποιείται από τις δύο «διοικητικές» τοποθεσίες προκειµένου να δηµιουργηθούν αναφορές για τα έργα των «µικρών» και «µεγάλων» πελατών αντίστοιχα. Συνεπώς για τη σχέση έχουµε τα ακόλουθα τµήµατα (fragments): 1 = σ 2 = σ ΚΑΤΗΓΟΡΙΑ = " ΜΙΚΡΟΣ" ΚΑΤΗΓΟΡΙΑ = " ΜΕΓΑΛΟΣ"
Η παραπάνω οριζόντια κατάτµηση είναι διαχωρίσιµη (disjoint) γιατί ένας πελάτης ανήκει µόνο σε µία κατηγορία και πλήρης (complete) αν θεωρήσουµε ότι το πεδίο ΚΑΤΗΓΟΡΙΑ στη σχέση δεν περιέχει NULL τιµές. Τα σύνθετα κατηγορήµατα (minterm predicates) για την παραπάνω κατάτµηση είναι: q 1 : ΚΑΤΗΓΟΡΙΑ = «ΜΙΚΡΟΣ» q 2 : ΚΑΤΗΓΟΡΙΑ = «ΜΕΓΑΛΟΣ» Από την τρίτη εφαρµογή προκύπτει η παρακάτω κατάτµηση για τη σχέση : 1 = σ 2 = σ ΜΙΣΘΟΣ < 1000 ΜΙΣΘΟΣ >= 1000 Η συνθήκη διαχωρισιµότητας πληρείται εφόσον το πεδίο ΜΙΣΘΟΣ δε µπορεί να είναι ταυτόχρονα µικρότερο και µεγαλύτερο από µία τιµή. Επιπλέον η κατάτµηση είναι πλήρης αν θεωρήσουµε ότι το πεδίο ΜΙ- ΣΘΟΣ δεν περιέχει NULL τιµές. Τα σύνθετα κατηγορήµατα είναι: q 1 : ΜΙΣΘΟΣ < 1000 q 2 : ΜΙΣΘΟΣ >= 1000 Για τη σχέση παρατηρούµε ότι από την πρώτη και δεύτερη εφαρµογή γίνονται ερωτήσεις που αφορούν το κόστος και την τοποθεσία του έργου αντίστοιχα. Συνεπώς προκύπτουν τα ακόλουθα σύνθετα κατηγορήµατα: q 1 : AND ΤΟΠΟΘΕΣΙΑ= «ΑΘΗΝΑ» q 2 : ΚΟΣΤΟΣ >= 60000 AND ΤΟΠΟΘΕΣΙΑ= «ΑΘΗΝΑ» q 3 : AND ΤΟΠΟΘΕΣΙΑ= «ΠΕΙΡΑΙΑ» q 4 : ΚΟΣΤΟΣ >= 60000 AND ΤΟΠΟΘΕΣΙΑ= «ΠΕΙΡΑΙΑ» q 5 : AND ΤΟΠΟΘΕΣΙΑ= «ΘΕΣΣΑΛΟΝΙΚΗ» q 6 : ΚΟΣΤΟΣ >= 60000 AND ΤΟΠΟΘΕΣΙΑ= «ΘΕΣΣΑΛΟΝΙΚΗ» q 7 : AND ΤΟΠΟΘΕΣΙΑ= «ΠΑΤΡΑ» q 8 : ΚΟΣΤΟΣ >= 60000 AND ΤΟΠΟΘΕΣΙΑ= «ΠΑΤΡΑ» Οπότε προκύπτει η ακόλουθη πρωτεύουσα οριζόντια κατάτµηση: 1 = σ 2 = σ 3 = σ 4 = σ 5 = σ 6 = σ 7 = σ 8 = σ AND ΤΟΠΟΘΕΣΙΑ= " ΑΘΗΝΑ" AND ΤΟΠΟΘΕΣΙΑ= " ΑΘΗΝΑ" AND ΤΟΠΟΘΕΣΙΑ= " ΠΕΙΡΑΙΑ" AND ΤΟΠΟΘΕΣΙΑ= " ΠΕΙΡΑΙΑ" AND ΤΟΠΟΘΕΣΙΑ= " ΘΕΣΣΑΛΟΝΙΚΗ" AND ΤΟΠΟΘΕΣΙΑ= " ΘΕΣΣΑΛΟΝΙΚΗ" AND ΤΟΠΟΘΕΣΙΑ= " ΠΑΤΡΑ" AND ΤΟΠΟΘΕΣΙΑ= " ΠΑΤΡΑ"
Η παραπάνω κατάτµηση είναι πλήρης αν θεωρήσουµε ότι η εταιρία αναλαµβάνει έργα µόνο στις τέσσερις συγκεκριµένες πόλεις και εφόσον τα πεδία ΚΟΣΤΟΣ και ΤΟΠΟΘΕΣΙΑ δεν περιέχουν NULL τιµές. Επιπλέον η κατάτµηση είναι και διαχωρίσιµη δεδοµένου ότι ένα έργο βρίσκεται σε µία συγκεκριµένη φυσική τοποθεσία και έχει ένα κόστος το οποίο είναι είτε µικρότερο είτε µεγαλύτερο ή ίσο από 60000. Τέλος από την τέταρτη εφαρµογή προκύπτει η ακόλουθη παραγόµενη κατάτµηση για τα παραπάνω τµήµατα της σχέσης : 9 = 1 1 10 = 1 2 11 = 2 1 12 = 2 2 13 = 3 1 14 = 3 2 15 = 4 1 16 = 4 2 17 = 5 1 18 = 5 2 19 = 6 1 20 = 6 2 21 = 7 1 22 = 7 2 23 = 8 1 24 = 8 2 Η ανασύνθεση των τµηµάτων µπορεί να γίνει µε τα semi-joins να εκτελούνται τοπικά, εποµένως ο γράφος σύνδεση είναι απλός. ΣΥΝΤΗΡΗΣΗ Από τη δεύτερη εφαρµογή έχουµε την παρακάτω παραγόµενη κατάτµηση για τη σχέση ΣΥΝΤΗΡΗΣΗ: ΣΥΝΤΗΡΗΣΗ 1 = ΣΥΝΤΗΡΗΣΗ ( 1 2 ) ( 1 2 ) ΣΥΝΤΗΡΗΣΗ 2 = ΣΥΝΤΗΡΗΣΗ ( 3 4 ) ( 1 2 ) ΣΥΝΤΗΡΗΣΗ 3 = ΣΥΝΤΗΡΗΣΗ ( 5 6 ) ( 1 2 ) ΣΥΝΤΗΡΗΣΗ 4 = ΣΥΝΤΗΡΗΣΗ ( 7 8 ) ( 1 2 ) Ο γράφος σύνδεσης για την παραπάνω κατάτµηση είναι διαχωρισµένος (partitioned).
ΕΡΩΤΗΜΑ B Θεωρείστε τις σχέσεις (Όνοµα, ιεύθυνση, Μισθός, Αριθµός-Εργοστασίου) ΜΗΧΑΝΗ (Αριθµός-Μηχανής, Τύπος, Αριθµός-Εργοστασίου) Θεωρείστε ότι η σχέση έχει τεµαχιστεί οριζόντια βάσει του πεδίου Αριθµός-Εργοστασίου και ότι κάθε τεµάχιο αποθηκεύεται τοπικά στον αντίστοιχο κόµβο του εργοστασίου. Θεωρείστε ότι η σχέση ΜΗΧΑΝΗ είναι αποθηκευµένη ολόκληρη στον κόµβο «Λαµία». (α) ώστε µια καλή στρατηγική για τον υπολογισµό των παρακάτω ερωτήσεων: (i) Βρείτε όλους τους υπαλλήλους που εργάζονται στο εργοστάσιο που περιέχει τη µηχανή µε αριθµό 1130. (ii) Βρείτε όλους τους υπαλλήλους που εργάζονται στα εργοστάσια που περιέχουν µηχανές τύπου "αλεστική µηχανή". (iii) Βρείτε όλες τις µηχανές στο κόµβο που εργάζεται ο Παπαγεωργίου. (iv) Υπολογίστε το Εργαζόµενος join Μηχανή. (β) Για τις παραπάνω στρατηγικές εξηγείστε πως η επιλογή σας εξαρτάται (i) (ii) ΑΠΑΝΤΗΣΗ: από τον κόµβο στον οποίο έγινε η ερώτηση από τον κόµβο στον οποίο πρέπει να εµφανιστεί το αποτέλεσµα (i) Στέλνουµε το ερώτηµα στη Λαµία. Λαµβάνουµε τον Αριθµό-Εργοστασίου που περιέχει τη µηχανή. Στέλνουµε στην αντίστοιχη τοποθεσία το ερώτηµα που τελικά θα επιστρέψει το σύνολο των υπαλλήλων. (ii) Στέλνουµε ερώτηµα στη Λαµία για τις µηχανές τύπου «αλεστική µηχανή». Λαµβάνουµε το αποτέλεσµα και στέλνουµε στα αντίστοιχα εργοστάσια ερωτήµατα που θα επιστρέψουν το σύνολο των υπαλλήλων. (iii) Στέλνουµε το ερώτηµα σε όλες τις τοποθεσίες και στην περίπτωση που σε κάποιο εργοστάσιο/α υπάρχει υπάλληλος/οι µε το όνοµα «Παπαγεωργίου», λαµβάνουµε τον κωδικό του εργοστασίου. Στη συνέχεια, στέλνουµε ερώτηµα στη Λαµία µε το οποίο ζητάµε τις µηχανές που υπάρχουν στα εργοστάσια που µας ενδιαφέρουν. (iv) Εκτελούµε semi-join µε κάθε κατάτµηση της σχέσης µε τη σχέση ΜΗΧΑΝΗ. Αναλυτικά, πραγµατοποιούµε την προβολή της ΜΗΧΑΝΗ πάνω στο Αριθµός-Εργοστασίου και στέλνουµε το αποτέλεσµα στα εργοστάσια. Εκεί υπολογίζονται τα ενδιάµεσα αποτελέσµατα, που στέλνονται στη Λα- µία προκειµένου να υπολογιστεί το τελικό αποτέλεσµα. ΕΡΩΤΗΜΑ Γ Θεωρείστε τις σχέσεις R(A, B), S(B, C) και T(C, D). Έστω ότι: S = S semijoin T S = S semijoin R R = R semijoin S T = T semijoin S Οι ακόλουθες εκφράσεις είναι αληθείς; ικαιολογείστε τις απαντήσεις σας. 1. R = π ΑΒ( R join S join T ) 2. Κάθε εγγραφή στο R join S συνδέεται (join) µε τουλάχιστον µία εγγραφή του Τ 3. Κάθε εγγραφή στην T συνδέεται (join) µε τουλάχιστον µία εγγραφή στο R join S 4. R join S join T = R join S join T
ΑΠΑΝΤΗΣΗ: 1. Η έκφραση είναι αληθής. Το S αποτελείται από εγγραφές του S που συνδέονται µε εγγραφές του Τ. Το R αποτελείται από εγγραφές του R που συνδέονται µε εγγραφές του S και άρα του S join T. Άρα η έκφραση είναι αληθής. 2. Η έκφραση είναι αληθής. Μια εγγραφή στο R join S περιέχει τιµή για το attribute D από κάποια εγγραφή του S. To S αποτελείται από εγγραφές του S που συνδέονται µε το T. Συνεπώς, κάθε εγγραφή στο S έχει τιµή d για το attribute D η οποία επίσης περιλαµβάνεται σε κάποια εγγραφή του Τ. Επιπλέον, ήδη γνωρίζουµε πως κάθε εγγραφή στο R join S πρέπει να έχει µία από αυτές τις τιµές d. Συνεπώς, κάθε εγγραφή στο R join S συνδέεται µε τουλάχιστον µία εγγραφή στο Τ. Άρα η έκφραση είναι αληθής. 3. Η έκφραση είναι αληθής. Συνεπάγεται από τα 1 και 2. 4. Η έκφραση είναι αληθής. Σύµφωνα µε τα παραπάνω, το R αποτελείται από εγγραφές του R που συνδέονται µε τουλάχιστον µε µία εγγραφή του S join T. Ανάλογα ισχύουν για τα S και T. Άρα η έκφραση είναι αληθής.