Επεκτεταμένο Μοντέλο Οντοτήτων Συσχετίσεων Βάσεις Γνώσεων Επεκτεταμένο Μοντέλο Οντοτήτων Συσχετίσεων Πάνος Βασιλειάδης pvassil@cs.uoi.gr Μάρτης 2003 www.cs.uoi.gr/~pvassil/courses/knowledge_bases/
«Database System Concepts», Silberschatz, Korth & Sudarshan Περιεχόμενα Επανάληψη Εξειδίκευση και Γενίκευση Συνάθροιση Από EER σε Σχεσιακή Μοντελοποίηση Παράρτημα Βασισμένο στο «Database System Concepts», Silberschatz, Korth & Sudarshan
Περιεχόμενα Επανάληψη Εξειδίκευση και Γενίκευση Συνάθροιση Από EER σε Σχεσιακή Μοντελοποίηση Παράρτημα
Διαγράμματα Οντοτήτων – Συσχετίσεων (E-R Diagrams) Παραλληλόγραμμα για τύπους οντοτήτων Ελλείψεις για γνωρίσματα Διπλές ελλείψεις για πλειότιμα γνωρίσματα. Διακεκομμένες ελλείψεις για παραγόμενα γνωρίσματα. Υπογράμμιση για πρωτεύοντα κλειδιά (στη συνέχεια...) Ρόμβοι για τύπους συσχετίσεων Ακμές για να συνδέσουν τύπους οντοτήτων με γνωρίσματα και τύπους συσχετίσεων
Γραφική Αναπαράσταση Τύπων Οντοτήτων
Γραφική Αναπαράσταση Τύπων Συσχετίσεων
Ρόλοι & Αυτοσυσχετίσεις Ρόλοι & Αυτοσυσχετίσεις Οι ρόλοι είναι ταμπέλες που βάζουμε στις ακμές ενός τύπου συσχέτισης για να δείξουμε περιγραφικά τη σημασία της συμμετοχής ενός τύπου οντοτήτων στον εν λόγω τύπο συσχετίσεων.
Περιεχόμενα Επανάληψη Εξειδίκευση και Γενίκευση Συνάθροιση Από EER σε Σχεσιακή Μοντελοποίηση Παράρτημα
Εξειδίκευση (Specialization) Ένα από τα αποτελέσματα της αναλυτικής (top-down) διαδικασίας σχεδίασης είναι ο εντοπισμός υποσυνόλων ενός τύπου οντοτήτων με κοινά χαρακτηριστικά, τα οποία τα διαφοροποιούν από τα υπόλοιπα μέλη του τύπου οντοτήτων Ένα τέτοιο υποσύνολο, ανάγεται σε ένα εξειδικευμένο τύπο οντοτήτων, με εξειδικευμένα γνωρίσματα ή συσχετίσεις, τα οποία δεν αφορούν τον αρχικό τύπο οντοτήτων από τον οποίο προήλθε Θυμάστε γιατί επέμενα στο διαχωρισμό εννοιολογικής και δομικής συνάφειας?
Εξειδίκευση Employee e1 e4 e7 e10 e13 e2 e5 e8 e11 e14 e3 e6 e9 e12
Εξειδίκευση Middle management Employee High management Plain e1 e4 e7
Εξειδίκευση και Έκταση Έκταση (extension) ενός τύπου οντοτήτων, τύπου συσχετίσεων, κλάσης, σχεσιακού πίνακα: το σύνολο των αντικειμένων που ανήκουν σε αυτόν Τα αντικείμενα ονομάζονται και στιγμιότυπα του τύπου / κλάσης / πίνακα / ... Σε ότι αφορά την εξειδίκευση, η σχέση τύπου και υποτύπου είναι ΠΑΝΤΑ σχέση υπερσυνόλου!!
Εξειδίκευση Middle management Employee Officer Secretary Teller High management Plain
Εξειδίκευση και Σχήμα Κληρονομικότητα Τύπων (Type Inheritance): Ο εξειδικευμένος τύπος οντοτήτων «κληρονομεί» (inherits) όλα τα γνωρίσματα του τύπου οντοτήτων από τον οποίο παράγεται Employee(Id,Name,Salary) PlainEmployee(Id,Name,Salary) MiddleManagement(Id,Name,Salary,Bonus) HighManagement(Id,Name,Salary,Rank)
Εξειδίκευση (Specialization) Η γραφική αναπαράσταση μιας σχέσης εξειδίκευσης γίνεται μέσω ενός τριγώνου που γράφει ISA Σε κάποιες αναπαραστάσεις το τρίγωνο δείχνει προς τον παραγόμενο και σε κάποιες προς τον γεννήτορα τύπο . Προσοχή: τα γνωρίσματα του παραγόμενου τύπου που κληρονομούνται, ΔΕΝ καταγράφονται στη γραφική αναπαράσταση
Παράδειγμα ISA Προσωπική προτίμηση:
Ιδιότητες της εξειδίκευσης Η σχέση τύπου και υποτύπου είναι ΠΑΝΤΑ σχέση υπερσυνόλου!! Άμεσο αποτέλεσμα αυτού είναι ότι τα στιγμιότυπα του υποτύπου αποτελούν ΚΑΙ στιγμιότυπα του υπερτύπου => ανήκουν και στους δύο τύπους!! MiddleManagement Employee xMiddleManagement => xEmployee
Ιδιότητες της εξειδίκευσης Τα κριτήρια της ταυτότητας ενός στιγμιοτύπου πρέπει να είναι συμβατά μεταξύ τους! Στη σχεδίαση: Για να είναι κάποιος τύπος C υποτύπος ενός τύπου Μ, πρέπει ΟΛΑ τα στιγμιότυπα του C να ΕΙΝΑΙ και στιγμιότυπα του Μ !! ΕΙΝΑΙ = «είναι» σημασιολογικώς, πληρούν τους λογικούς και δομικούς περιορισμούς, ... Εν γένει, για κάθε περιορισμό που ανήκει στον υπερτύπο, ο περιορισμός επιβάλλεται ΚΑΙ στον υπερτύπου, πιθανώς και σε πιο ισχυρή μορφή. π.χ., όλοι οι customer άνω των 65 είναι μέλη του υποτύπου senior-customer και όλοι οι πελάτες άνω των 85 είναι μέλη του υποτύπου ultra-senior-customer
Συσχετίσεις και Εξειδίκευση ? works for Employee Branch ISA ISA ISA public wf Teller Public Branch
Συσχετίσεις και Εξειδίκευση ? Το παραπάνω σχήμα είναι για να πάρετε την ιδέα και μόνο. Γενικά, οι εξειδικεύσεις συσχετίσεων ΔΕΝ είναι κοινά αποδεκτό τμήμα του μοντέλου! Προφανώς, αν σκεφτείτε την έννοια του υποσυνόλου, προφανώς πρέπει να ισχύει το προηγούμενο σχήμα! Επίσης, μη ξεχνάτε ότι, τυπικά, ένας τύπος είναι υποτύπος του εαυτού του...
Γενίκευση (Generalization) Αντίστροφα από την αναλυτική μέθοδο σχεδίασης, στην συνθετική (bottom-up) μέθοδο, μπορεί να εντοπίσουμε ένα σύνολο από τύπους οντοτήτων που έχουν κάποια κοινά γνωρίσματα Μπορούμε να εξάγουμε από τους τύπους αυτούς ένα γενικότερο τύπο οντοτήτων με τα κοινά αυτά χαρακτηριστικά. Η εξειδίκευση και η γενίκευση είναι αντίστροφες συσχετίσεις, αναπαριστούνται όμοια και εν γένει, χρησιμοποιούνται η μια στη θέση της άλλης
Ιεραρχίες εξειδίκευσης τύπων Επειδή η σχέση εξειδίκευσης είναι μεταβατική (A ISA B, B ISA C => A ISA C), αναφερόμαστε συχνά σε ιεραρχίες εξειδίκευσης (ή γενίκευσης), ιεραρχίες εξειδίκευσης τύπων, ή απλά ιεραρχίες τύπων Εναλλακτική ορολογία : υπερ-τύπος και υπο-τύπος υπερκλάση και υποκλάση
Ιεραρχίες εξειδίκευσης τύπων Ένας τύπος οντοτήτων μπορεί να εξειδικευθεί σε περισσότερους του ενός υποτύπους, στη βάση διαφορετικών χαρακτηριστικών Π.χ., μόνιμος-υπάλληλος και προσωρινός-υπάλληλος, αλλά και στέλεχος και γραμματέας και ταμίας Κάθε υπάλληλος θα ανήκει: Σε ένα εκ των μόνιμος-υπάλληλος και προσωρινός-υπάλληλος ΚΑΙ σε ένα εκ των στέλεχος, γραμματέας, ταμίας
Παράδειγμα Employee Permanent- Employee Officer Secretary Temporary- ISA ISA Permanent- Employee Officer Secretary Temporary- Employee Teller
Περιορισμοί Ιεραρχιών Τύπων Μπορούμε να ορίσουμε περιορισμούς στο ποιες οντότητες του υπερτύπου ανήκουν σε ένα υποτύπο, στη βάση μιας συνθήκης π.χ., όλοι οι πελάτες άνω των 65 είναι μέλη του υποτύπου Senior-customer Υποκλάσεις οριζόμενες βάση κατηγορήματος (predicate-based): xCustomer,x.age>=65 =>xSenior-customer
Περιορισμοί Ιεραρχιών Τύπων Σε πόσους υποτύπους της ίδιας ιεραρχίας επιτρέπεται μια οντότητα που ανήκει σε ένα υπερτύπο, να ανήκει? Μη επικαλυπτόμενη εξειδίκευση (disjoint) Μια οντότητα επιτρέπεται να ανήκει μόνο σε ένα υποτύπο μιας ιεραρχίας Διαγραμματικά σημειώνεται βάζοντας τη λέξη disjoint δίπλα στο τρίγωνο ISA Επικαλυπτόμενη (overlapping) Μια οντότητα επιτρέπεται να ανήκει σε περισσότερους του ενός υποτύπους μιας ιεραρχίας
Περιορισμοί Ιεραρχιών Τύπων Περιορισμός πληρότητας: επιτρέπεται μια οντότητα ενός τύπου να μην ανήκει σε κάποιον υποτύπο? πλήρης εξειδίκευση (total specialization): πρέπει υποχρεωτικά η οντότητα να ανήκει σε κάποιον υποτύπο μερική εξειδίκευση (partial specialization): η οντότητα μπορεί και να μην ανήκει σε κάποιον υποτύπο
Τυπικοί Ορισμοί Πλήρης εξειδίκευση, με C υπερτύπο και Si τους υποτύπους του: i(Si)=C Μη επικαλυπτόμενη εξειδίκευση: SiSj=, i,j,ij
Για το σπίτι Σε σχέση με τις εισαγωγές και διαγραφές οντοτήτων, τι περιορισμούς έχω και τι πράξεις πρέπει να εφαρμοσθούν κατά την εισαγωγή/διαγραφή/ανανέωση μιας οντότητας σε μια κλάση? Λάβετε υπόψη τα πρωτεύοντα κλειδιά, το αν οι ιεραρχίες είναι ολικές, επικαλυπτόμενες, βάση κατηγορήματος,...
Περιεχόμενα Επανάληψη Εξειδίκευση και Γενίκευση Συνάθροιση Από EER σε Σχεσιακή Μοντελοποίηση Παράρτημα
Συνάθροιση (aggregation) Ένας υπάλληλος δουλεύει σε ένα κλάδο της εταιρείας, για τον οποίο και κάνει μια δουλειά Μπορεί να δουλεύει και σε άλλους κλάδους με άλλες δουλειές Ένας manager επιβλέπει το συνδυασμό employee, job, branch
Συνάθροιση (aggregation) Ένας manager επιβλέπει το συνδυασμό employee, job, branch Εμείς, όμως, έχουμε μια συσχέτιση μεταξύ του manager και κάθε μιας από τις οντότητες αυτές Αφενός είναι λάθος μοντελοποίηση Κι αφετέρου είναι πλεονασμός…
Συνάθροιση (aggregation) Οι τύποι συσχετίσεων works-on και manages αναπαριστούν επικαλυπτόμενη, πλεονάζουσα πληροφορία Κάθε συσχέτιση που ανήκει στην manages αντιστοιχεί σε μια συσχέτιση που ανήκει στην works-on Όμως, μερικές συσχετίσεις της works-on μπορεί να μην αντιστοιχούν σε κάποιες συσχετίσεις manages (ήτοι, οι εργασίες αυτές γίνονται χωρίς επίβλεψη) Κατά συνέπεια, δεν μπορούμε να διώξουμε κανένα από τους δύο τύπους συσχετίσεων
Συνάθροιση Ένας υπάλληλος δουλεύει σε ένα κλάδο της εταιρείας, για τον οποίο και κάνει μια δουλειά Ένας manager επιβλέπει το συνδυασμό employee, job, branch
Συνάθροιση (aggregation) Την μία εκ των δύο συσχετίσεων, την αντιμετωπίζουμε ως οντότητα ? Επιτρέπεται να ορίσουμε συσχετίσεις μεταξύ των συσχετίσεων ? Αυτό που κατά βάση, όμως, κάνουμε είναι ότι αντιμετωπίζουμε το σύνολο των οντοτήτων της συνάθροισης ως μία οντότητα
Τυπικοί Ορισμοί works-on employee X job X branch works-on(employee-id, branch-name, title) WO_agg agg works-on WO_agg(employee-id, branch-name, title) manages manager X WO_agg manages(employee-id, branch-name, title, manager-name) Προσοχή: καταχρηστικά, ενώ ορίζω τις συσχετίσεις στο πεδίο Entity1 X … X Entityn, μετά ορίζω το σχήμα τους ως R(Attribute1, …, Attributen). Δεν είναι σωστό, είναι όμως βολικό...
E-R Διάγραμμα για μια τράπεζα
Περιεχόμενα Επανάληψη Εξειδίκευση και Γενίκευση Συνάθροιση Από EER σε Σχεσιακή Μοντελοποίηση Παράρτημα
Από EER σε Σχεσιακή Μοντελοποίηση Η βάση της αναγωγής είναι τα πρωτεύοντα κλειδιά, που επιτρέπουν σε οντότητες και συσχετίσεις να γίνουν σχέσεις της ΒΔ. Για κάθε τύπο οντότητας και κάθε τύπο συσχέτισης, εισάγουμε μία σχέση με το όνομα του τύπου οντότητας ή συσχέτισης Τα γνωρίσματα της σχέσης αντιστοιχούν λίγο-πολύ στα γνωρίσματα του αντίστοιχου τύπου
Ισχυροί Τύποι Οντοτήτων Ένας ισχυρός τύπος οντοτήτων ανάγεται σε μία σχέση με τα αντίστοιχα γνωρίσματα
Σύνθετα Γνωρίσματα Τα σύνθετα αντικείμενα «ανοίγουν», αγνοώντας τα και εισάγοντας σαν γνωρίσματα του πίνακα τα συστατικά τους. Π.χ., αν έχω ένα σύνθετο γνώρισμα name θα εισάγω αντί γι’ αυτό τα συστατικά του first-name και last-name στον σχεσιακό πίνακα που προκύπτει.
Πλειότιμα γνωρίσματα Ένα πλειότιμο γνώρισμα M μιας οντότητας E αντιστοιχίζεται σε μια σχέση EM, η οποία έχει τα γνωρίσματα του πρωτεύοντος κλειδιού της Ε (έστω Α1,…,Αn) και ένα γνώρισμα για το Μ (με πρωτεύον κλειδί (Α1,…,Αn,M) Π.χ., children του employee αναπαριστάται από employee-children(employee-id,childname)
Ασθενείς Οντότητες Ένας ασθενής τύπος οντοτήτων γίνεται μια σχέση που περιλαμβάνει και μια κολώνα για το πρωτεύον κλειδί της ιδιοκτήτριας οντότητας
Τύποι Συσχετίσεων Οι τύποι συσχετίσεων ανάγονται σε πίνακες με ένα γνώρισμα, για κάθε γνώρισμα του πρωτεύοντος κλειδιού των εμπλεκομένων οντοτήτων στη συσχέτιση, καθώς και τα κατάλληλα γνωρίσματα για όποια επιπλέον γνωρίσματα έχει η συσχέτιση per se
Γνωρίσματα αντί για πίνακες Ν:1 και 1:Ν συσχετίσεις με καθολική συμμετοχή στην πλευρά του Ν, μπορούν να αναπαρασταθούν με ένα επιπλέον γνώρισμα στον πίνακα του Ν (ως εξωτερικό κλειδί στον άλλο πίνακα) Π.χ., αντί για πίνακα account-branch, να βάζαμε ένα γνώρισμα branch-name στον πίνακα account Ν 1
Γνωρίσματα αντί για πίνακες Αν η συμμετοχή είναι μερική στην πλευρά Ν, το επιπλέον γνώρισμα θα έχει και τιμές null (τις οποίες θα αποφεύγαμε αν είχαμε τον αρχικό πίνακα, πληρώνοντας βέβαια, τον επιπλέον χώρο για το πρωτεύον κλειδί της πλευράς Ν) Για 1:1 συσχετίσεις μπορούμε να διαλέξουμε όποια πλευρά θέλουμε ως πλευρά Ν, για να προσθέσουμε το εξωτερικό κλειδί Ο πίνακας που αντιστοιχεί στη συσχέτιση που συνδέει μια ασθενή, με την ιδιοκτήτριά της οντότητα, είναι περιττός (μετά από τα παραπάνω)
Αναπαράσταση της εξειδίκευσης στο σχεσιακό μοντέλο (1η μέθοδος) Πίνακας Γνωρίσματα Person name, street, city Customer name, credit-rating Employee name, salary Μια σχέση για τον υπερτύπο Μια σχέση για τον υποτύπο, με το πρωτεύον κλειδί του υπερτύπου και τα δικά της γνωρίσματα (μόνο) Πρέπει να κάνουμε join για να ανασυνθέσουμε τον υποτύπο
Αναπαράσταση της εξειδίκευσης στο σχεσιακό μοντέλο (2η μέθοδος) Πίνακας Γνωρίσματα Person name, street, city Customer name, street, city, credit-rating Employee name, street, city, salary Μια σχέση για τον υπερτύπο Επανάληψη όλων των πεδίων του υπερτύπου στον υποτύπο Έχουμε επανάληψη (με κίνδυνο ασυνέπειας) της πληροφορίας Είναι σε κανονικοποιημένη μορφή οι πίνακες?
Αναπαράσταση της εξειδίκευσης στο σχεσιακό μοντέλο (2η μέθοδος) Αν η εξειδίκευση είναι καθολική, δεν χρειάζεται να ορίσουμε πίνακα για τον υπερτύπο Μπορούμε να ορίσουμε μια όψη (view) γι’ αυτή τη δουλειά, με την ένωση των πινάκων των υποτύπων Εξαίρεση: αν χρειάζεται κάποιο εξωτερικό κλειδί που να αναφέρεται στον υπερτύπο, είμαστε υποχρεωμένοι να κρατήσουμε τον αντίστοιχο πίνακα…
Συνάθροιση Χρειαζόμαστε ένα πίνακα με το πρωτεύον κλειδί της συναθροιζόμενης συσχέτισης, το πρωτεύον κλειδί της εμπλεκόμενης οντότητας, και όποια άλλα επιπλέον πεδία Μπορούμε να εφαρμόσουμε τις τεχνικές 1:Ν με τους σχετικούς κινδύνους…
Συνάθροιση Για την manages θα φτιάχναμε ένα πίνακα manages(employee-id, branch-name, title, manager-name) Ο πίνακας works-on μπορεί να λείψει αν είμαστε διατεθειμένοι να έχουμε null τιμές στο πεδίο manager-name για όποιες εργασίες δεν έχουν manager
«Database System Concepts», Silberschatz, Korth & Sudarshan Βασισμένο στο «Database System Concepts», Silberschatz, Korth & Sudarshan Παράρτημα: UML Ο λάθος τρόπος για να μάθεις κάτι είναι συγκρίνοντάς το με κάτι που ήδη ξέρεις… (θα τα ξαναπούμε επί του θέματος)
UML UML: Unified Modeling Language Τα Διαγράμματα Κλάσεων (Class Diagrams) είναι τα αντίστοιχα διαγράμματα σε σχέση με το μοντέλο Οντοτήτων Συσχετίσεων. Οι εν λόγω διαφάνειες σκοπό έχουν να συνοψίσουν το σχετικό κεφάλαιο του βιβλίου. Μην νομίσετε ότι μάθατε UML έτσι!!!
UML - Διαγράμματα Κλάσεων
UML - Διαγράμματα Κλάσεων Οι τύποι οντοτήτων πλέον είναι κλάσεις και αναπαριστώνται με ορθογώνια. Τα γνωρίσματα ενσωματώνονται μέσα στο κουτί του τύπου. Οι δυαδικές συσχετίσεις αναπαριστώνται με μια απλή ακμή. Το όνομα και οι ρόλοι της συσχέτισης βρίσκονται στο κέντρο και στα δύο άκρα της ακμής, αντίστοιχα. Εναλλακτικά, ιδίως αν η συσχέτιση έχει γνωρίσματα, μπορούμε να την αναπαραστήσουμε σαν οντότητα, που συνδέεται με την σχετική ακμή μέσω μιας διακεκομμένης γραμμής. Οι υπόλοιπες συσχετίσεις (βαθμός > 2) αναπαριστώνται όπως και στο ER, με το γνωστό ρόμβο.
UML - Διαγράμματα Κλάσεων overlapping disjoint
UML - Διαγράμματα Κλάσεων Οι πληθικότητες αναπαριστώνται με άνω και κάτω όριο, όπως είπαμε. Η αναπαράσταση είναι ανάποδα απ’ ότι έχουμε πει. Π.χ., στο προηγούμενο διάγραμμα, η μια οντότητα της Ε2 μπορεί να έχει από 0 έως 1 αντίστοιχές της οντότητες της Ε1. Εναλλακτικά, μπορούμε να έχουμε και σκέτο 1 αντί για ένα περιορισμό 1..1, και * αντί για 0..*. Η ιεραρχίες εξειδίκευσης αναπαριστώνται κατ’ αντιστοιχία με το ER, απλά αλλάζει η μορφή του τριγώνου ISA.