Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ-562 Προχωρημένα Θέματα Βάσεων Δεδομένων Βασίλης Χριστοφίδης Τελική Εξέταση (3 ώρες) Ημερομηνία: 15 Ιουνίου 2005 Άσκηση 1 (60 μονάδες) Σας δίνεται το παρακάτω αντικειμενοστρεφές σχήμα σύμφωνα με το πρότυπο ODMG που αναπαριστά πληροφορία σχετικά με την 7 η τέχνη. class Movie extend Movies key title {attribute string title; attribute string review;} class Theater {attribute integer number; attribute Movie Movie;} class Cinema extend Cinemas key name {attribute string name; attribute string address; attribute set <Theater> theaters;} class Person extend Persons key name {attribute string name;} class Actor : Person extend Actors key name {attribute set <Movie> acts_in;} class Spectator : Person extend Spectators key name {attribute set <Movie> likes;} class Producer : Person extend Producers key name {attribute: set <Movie> produces;} (α) (5 μονάδες) Το προηγούμενο αντικειμενοστρεφές σχήμα δεν εκμεταλλεύεται πλήρως την εκφραστικότητα του μοντέλου ODMG. Τροποποιήστε τις κλάσεις Actor και Movie, ώστε να δηλώνεται σαφώς ότι η acts_in είναι μία συσχέτιση (Ν επί Μ) των αντικειμένων της πρώτης κλάσης με τα αντικείμενα της δεύτερης (η stars μπορεί να θεωρηθεί ως η αντίστροφη σχέση της). class Movie extend Movies key title {attribute string title; attribute string review; relationship set <Actor> stars inverse Actor::acts_in;}
class Actor : Person extend Actors key name {relationship set <Movie> acts_in inverse Movie::stars;} (β) (25 μονάδες) Λαμβάνοντας υπόψη το αντικειμενοστρεφές σχήμα που σας δίνεται στην εκφώνηση, εκφράστε στη δηλωτική γλώσσα επερωτήσεων OQL τις παρακάτω ερωτήσεις: 1. Ποιοι παραγωγοί είναι επίσης και ηθοποιοί; select a from Actors a, Producers p where a = p 2. Ποιοι είναι οι τίτλοι των ταινιών που προβάλλονται στους κινηματογράφους αυτήν την περίοδο; select t.movie.title from t in (flatten (select c.theaters from c in Cinemas)) 3. Ποιοι ηθοποιοί παίζουν στην ταινία Small Time Crooks ; from Actors a, a.acts_in m where m.title = Small Time Crooks 4. Ποιοι είναι οι τίτλοι και οι κριτικές των ταινιών στις οποίες πρωταγωνιστεί η Victoria Abril και έχουν ως παραγωγό τον Almodovar ; select struct(title:m.title, review:m.review) from Actors a, Producers p, a.acts_in m where a.name = Victoria Abril and p.name = Almodovar and m in p.produces 5. Βρείτε τα ονόματα των ηθοποιών που έχουν πρωταγωνιστήσει στις περισσότερες ταινίες, δηλαδή εκείνων, για τους οποίους ο αριθμός των ταινιών στις οποίες έχουν συμμετάσχει (acts_in) είναι μέγιστος. from Actors a where count(a.acts_in)= max(select count(a1.acts_in) from Actors a1)
(γ) (20 μονάδες) Θεωρήστε την παρακάτω ερώτηση OQL: select t.movie.review from Producers p, Cinemas c, c.theaters t where p.name = Woody Allen and t.movie in p.produces 1. Τι υπολογίζει η παραπάνω ερώτηση; Find the reviews of films produced by Woody Allen, which we can currently see at a Cinema 2. Δώστε την αλγεβρική έκφραση της παραπάνω ερώτησης σύμφωνα με την οντοκεντρική άλγεβρα που παρουσιάστηκε στο μάθημα. πtmr (σpn= Woody Alain and tm in pp ( Maptmr:tm.review (Mappn:p.name (Maptm:t.movie (Mappp:p.produces (Producers[p] X (Cinemas[c] <c->theaters[t]>)))))) 3. Προτείνετε μια βελτιστοποίηση της αλγεβρικής έκφρασης που δώσατε στο προηγούμενο ερώτημα. Δικαιολογήστε την απάντησή σας. πtmr (Maptmr:tf.review (Maptm:t.movie (Cinemas[c]<c->theaters[t]> X tm in pp Mappp:p.produces(σp.name= Woody Alain (Producers[p])))) Steps: 1.Join and Map reordering 2.Push selection on producers. name (index support from extend key) 3.Transform selection into joint condition (δ) (10 μονάδες) Το ζήτημα των κλειδιών και των συναρτησιακών εξαρτήσεων είναι πολύ σημαντικό για τη σχεδίαση σχεσιακών σχημάτων. Είναι εξίσου σημαντικό ζήτημα και στα αντικειμενοστρεφή σχήματα; Δώστε τούς βασικούς λόγους εισαγωγής των κλειδιών και των συναρτησιακών εξαρτήσεων, και εξηγήστε κατά πόσο οι λόγοι αυτοί ισχύουν και στα πλαίσια των αντικειμενοστρεφών βάσεων δεδομένων. Ποιες είναι οι κοινές και ποιες οι διαφορετικές πτυχές του ζητήματος αυτού στα δύο πλαίσια; The keys defined on the table identify unique entities. They assure that every entity appears no more than once in the table, to avoid data duplication. When there are functional dependencies in the schema, anomalies may arise in the database; there are three types of anomalies (insertion, deletion and update anomalies). The schema must be normalized to avoid anomalies, which is achieved with schema decomposition. Keys serve a crucial role in schema decomposition, by allowing attributes in multiple tables to refer to they same entity, identified by its key.
In an OODB, when we insert a new object into the database, the system will automatically generate a unique identifier for it. One can then refer to the same object in many places without any data duplication. Values that serve as keys are not needed for identifying the object in question, because the object identifier serves this role. As for functional dependencies, they are an important consideration in OODB design. Data anomalies are still possible, and the schema designer must be sure that his design decisions (such as which attributes to group together, and where to include copies of references to an object) avoid these anomalies. Άσκηση 2 (40 μονάδες) (α) (15 μονάδες) Δημιουργήστε ένα αντικειμενοστρεφές-σχεσιακό (SQL3) σχήμα σύμφωνα με το σχήμα ODMG της άσκησης 1. Σημειώστε ότι οι τύποι πλειάδας (tuple) του ODMG αντιστοιχούν στους ROW TYPES της SQL3 και ότι η κληρονομικότητα ορίζεται επίσης σε πίνακες. Μπορείτε να αγνοήσετε τις ταυτότητες των αντικειμένων SQL3 για τους σκοπούς αυτής της άσκησης. CREATE ROW TYPE Movie (title: string, review: string); CREATE ROW TYPE Theater (number: integer, movie: Movie); CREATE ROW TYPE Cinema (name: string, address: string, theaters: set (Theater)); CREATE ROW TYPE Person (name: string); CREATE TABLE Movies OF Movie CREATE TABLE Cinemas OF Cinema CREATE TABLE Persons OF Person CREATE TABLE Actors UNDER Persons (acts_in: set (Movie)) CREATE TABLE Spectators UNDER Persons (likes: set (Movie)) CREATE TABLE Producers UNDER Persons (produces: set (Movie)) (β) (25 μονάδες) Λαμβάνοντας υπόψη το αντικειμενοστρεφές-σχεσιακό σχήμα που δημιουργήσατε στο προηγούμενο υποερώτημα, εκφράστε στη δηλωτική γλώσσα επερωτήσεων SQL3 τις παρακάτω ερωτήσεις: 1. Ποιοι παραγωγοί είναι επίσης και ηθοποιοί; from Actors a, Producers p where a.name = p.name
2. Ποιοι είναι οι τίτλοι των ταινιών που προβάλλονται στους κινηματογράφους αυτήν την περίοδο; select m.title from Cinemas c, Movies m where m.title in c.theaters movie.title 3. Ποιοι ηθοποιοί παίζουν στην ταινία Small Time Crooks ; from Actors a, Movies m where m in a.acts_in and m.title = Small Time Crooks 4. Ποιοι είναι οι τίτλοι και οι κριτικές των ταινιών στις οποίες πρωταγωνιστεί η Victoria Abril και έχουν ως παραγωγό τον Almodovar ; select m.title, m.review from Actors a, Producers p, Movies m where a.name = Victoria Abril and p.name = Almodovar and m in p.produces and m in p.acts_in 5. Βρείτε τα ονόματα των ηθοποιών που έχουν πρωταγωνιστήσει στις περισσότερες ταινίες, δηλαδή εκείνων, για τους οποίους ο αριθμός των ταινιών στις οποίες παίζουν (acts_in) είναι μέγιστος. from Actors a where count(a.acts_in)>= all(select count(a1.acts_in) from Actors a1)