Μοντέλο Οντοτήτων Συσχετίσεων Βάσεις Γνώσεων Μοντέλο Οντοτήτων Συσχετίσεων Πάνος Βασιλειάδης pvassil@cs.uoi.gr Φλεβάρης 2003 www.cs.uoi.gr/~pvassil/courses/knowledge_bases/
«Database System Concepts», Silberschatz, Korth & Sudarshan Περιεχόμενα Βασισμένο στο «Database System Concepts», Silberschatz, Korth & Sudarshan Εισαγωγή Τύποι Οντοτήτων Τύποι Συσχετίσεων Κλειδιά, Ρόλοι και Βαθμός Συσχέτισης Περιορισμοί Ειδικά Θέματα Προβληματισμοί για τον σχεδιαστή Σύνοψη Γραφικής Αναπαράστασης
Περιεχόμενα Εισαγωγή Τύποι Οντοτήτων Τύποι Συσχετίσεων Κλειδιά, Ρόλοι και Βαθμός Συσχέτισης Περιορισμοί Ειδικά Θέματα Προβληματισμοί για τον σχεδιαστή Σύνοψη Γραφικής Αναπαράστασης
Μοντέλο Οντοτήτων Συσχετίσεων Το μοντέλο Οντοτήτων Συσχετίσεων (Entity Relationship Model – ER Model) είναι ένα εννοιολογικό μοντέλο ... ... που χρησιμοποιείται για να καταγράψει τις απαιτήσεις των χρηστών ενός νέου πληροφοριακού συστήματος ... ... με γραφικό τρόπο (άρα, πιο τυπικά από μια αναπαράστασή τους σε φυσική γλώσσα).
Μοντέλο Οντοτήτων Συσχετίσεων Μια βάση δεδομένων μπορεί να μοντελοποιηθεί εννοιολογικά σαν: Ένα σύνολο οντοτήτων (entities), Συσχετίσεις (relationships) μεταξύ των οντοτήτων αυτών. Εννοιολογική Μοντελοποίηση Conceptual Modeling. Εναλλακτικά: Ιδεατή, Σημασιολογική, Οντολογική ...
Περιεχόμενα Εισαγωγή Τύποι Οντοτήτων Τύποι Συσχετίσεων Κλειδιά, Ρόλοι και Βαθμός Συσχέτισης Περιορισμοί Ειδικά Θέματα Προβληματισμοί για τον σχεδιαστή Σύνοψη Γραφικής Αναπαράστασης
Οντότητες Μια οντότητα (entity) είναι ένα υπαρκτό αντικείμενο, που είναι διακριτό από τα άλλα αντικείμενα της ΒΔ Π.χ., ο άνθρωπος Βασίλης, το αυτοκίνητο ΤοΑμάξιΜου, η εταιρεία Αλογάκι ΑΕ, κλπ.
Τύποι Οντοτήτων (Entity Types ή Sets) Ένα τύπος οντοτήτων είναι ένα σύνολο από σημασιολογικά όμοιες οντότητες Π.χ., το σύνολο όλων των υπαλλήλων μιας εταιρείας, το σύνολο όλων των αυτοκινήτων κλπ ΠΡΟΣΟΧΗ: Άλλο οντότητα και άλλο τύπος οντοτήτων! Στον προφορικό λόγο, συνηθίζεται να τα συγχέουμε...
Τύποι Οντοτήτων Customer Car Person Company
Γνωρίσματα (Attributes) Τα γνωρίσματα είναι ιδιότητες των οντοτήτων που σκοπό έχουν να τις περιγράψουν Όλες οι οντότητες ενός τύπου οντοτήτων έχουν τα ίδια γνωρίσματα Πολλές φορές περιγράφουμε ένα τύπο οντοτήτων με το όνομά του και το σύνολο των γνωρισμάτων του. Π.χ., customer = (customer-id, customer-name, customer-street, customer-city) loan = (loan-number, amount)
Γνωρίσματα (Attributes) Π.χ., ο άνθρωπος Βασίλης, έχει Όνομα και Διεύθυνση, με τιμές «Βασίλης Τσάρτας» και «Καππαδοκίας 2» αντίστοιχα. ΠΡΟΣΟΧΗ: Σε αντίθεση με το σχεσιακό μοντέλο, στο ER μοντέλο είναι επιτρεπτό να ορίσουμε οντότητες χωρίς γνωρίσματα!
Τύποι Οντοτήτων (Entity Types ή Sets) Θα θεωρήσουμε ότι η σημασιολογική ομοιότητα αντανακλάται στη δομική ομοιότητα, ήτοι, οι οντότητες του ιδίου τύπου έχουν τα ίδια γνωρίσματα. Θα συναντήσετε την ορολογία Entity Sets (σύνολο από σημασιολογικά όμοιες οντότητες) και Entity Types (καλούπι για γνωρίσματα) στη βάση του παραπάνω διαχωρισμού.
Σύνολα οντοτήτων customer και loan customer-id customer- customer- customer- loan- amount name street city number
Πεδία ορισμού (Domains) Πεδίο Ορισμού είναι το σύνολο των επιτρεπτών τιμών για κάθε γνώρισμα Π.χ., το πεδίο έχει Ηλικία έχει ως τιμές το εύρος των ακεραίων τιμών [0..140]. ΠΡΟΣΟΧΗ: τα attributes τα αποκαλούμε πολλές φορές «πεδία». Αυτό είναι αποδεκτό, αρκεί να μην τα συγχέουμε με τα «πεδία ορισμού» τους.
Κατηγοριοποίηση των γνωρισμάτων Απλά (ή Ατομικά) και Σύνθετα (γνωρίσματα που μπορούν να αποσυντεθούν σε επί μέρους γνωρίσματα) Μονότιμα (μια οντότητα επιτρέπεται να έχει το πολύ μια τιμή σε αυτό το γνώρισμά της) και πλειότιμα (... περισσότερες από μία...) Π.χ., τα τηλέφωνα ενός Ανθρώπου Αποθηκευμένα και Παραγόμενα (που μπορούν να υπολογισθούν από άλλα γνωρίσματα) Π.χ., η ηλικία υπολογιζόμενη από την Ημ. Γέννησης
Σύνθετα Γνωρίσματα
Τιμή NULL NULL τιμή: ειδική τιμή την οποία χρησιμοποιούμε όταν Υπάρχει τιμή, αλλά δεν την ξέρουμε (π.χ., το γνώρισμα Τηλέφωνο για την οντότητα Πρωθυπουργός), ή Δεν ξέρουμε αν υπάρχει τιμή (π.χ., το γνώρισμα ΚινητόΤηλέφωνο για την οντότητα Πρωθυπουργός), ή Η τιμή δεν ορίζεται (π.χ., το γνώρισμα Husband για την οντότητα Κώστας) για ένα γνώρισμα μιας συγκεκριμένης οντότητας
Τιμή NULL Με βάση τα προηγούμενα, ένα γνώρισμα δεν υπάρχει/ορίζεται για μια οντότητα, τότε αυτή ΔΕΝ μπορεί να ανήκει στον αντίστοιχο τύπο οντοτήτων. Η καθημερινή πρακτική όμως, ξεπέρασε το θεωρητικό περιορισμό, με αποτέλεσμα να προσεγγίσουμε ξανά τη θεωρητική θεμελίωση, εισάγοντας και NULL τιμές (και μάλιστα, πολλών ειδών, όπως είπαμε)
Γραφική Αναπαράσταση Τύπων Οντοτήτων Customer Παραλληλόγραμμα για τύπους οντοτήτων Ελλείψεις για γνωρίσματα Διπλές ελλείψεις για πλειότιμα γνωρίσματα. Διακεκομμένες ελλείψεις για παραγόμενα γνωρίσματα. Ακμές για να συνδέσουν τύπους οντοτήτων με γνωρίσματα Υπογράμμιση για πρωτεύοντα κλειδιά (στη συνέχεια...) Cust-Id Phones Age
Γραφική Αναπαράσταση Τύπων Οντοτήτων
Περιεχόμενα Εισαγωγή Τύποι Οντοτήτων Τύποι Συσχετίσεων Κλειδιά, Ρόλοι και Βαθμός Συσχέτισης Περιορισμοί Ειδικά Θέματα Προβληματισμοί για τον σχεδιαστή Σύνοψη Γραφικής Αναπαράστασης
Συσχετίσεις (Relationships) Μια συσχέτιση είναι μια εννοιολογική σύνδεση μεταξύ κάποιων οντοτήτων. Π.χ., Οντότητα Μιχάλης του Τ.Ο. Άνθρωπος Οντότητα LiverBird-ΑΕ του Τ.Ο. Εταιρεία Συσχέτιση Εργάζεται-Για Με τον όρο «σχέση» συνήθως αναφερόμαστε στο σχεσιακό μοντέλο. Στο ER μοντέλο χρησιμοποιούμε τον όρο «συσχέτιση»
Τύποι Συσχετίσεων (Relationship Type ή Set) Τυπικά, πρόκειται για το σύνολο συσχετίσεων {(e1, e2, … en) | e1 E1, e2 E2, …, en En} όπου το (e1, e2, …, en) είναι μια συσχέτιση, τα ei είναι οντότητες και Eι τα είναι τύποι οντοτήτων
Τύπος Συσχέτισης Borrower (321-12-3123,L-17), (019-28-3746,L-23), (019-28-3746,L-11), …, (335-57-7991,L-16) }
Μη σκέφτεστε έτσι... Loan Customer l1 c1 l2 c2 l3
…αλλά έτσι !!! Loan Customer c1_l1 l1 c1 l2 c2 c2_l2 l3 c2_l3
Τύποι Συσχέτισης – ΠΡΟΣΟΧΗ! Όπως και με τους τύπους οντοτήτων, οι έννοιες «σύνολο συσχέτισης» και «τύπος συσχέτισης» αναφέρονται στη σημασιολογική και δομική ομοιότητα, αντίστοιχα. Ούτε εδώ θα κάνουμε διάκριση... Όπως και με τις οντότητες, άλλο είναι η συσχέτιση και άλλο ο τύπος συσχέτισης. Ομοίως, και εδώ, συχνά στον προφορικό λόγο τα συγχέουμε ...
Τύποι Συσχετίσεων και Γνωρίσματα Ένας τύπος συσχετίσεων μπορεί να έχει και αυτός γνωρίσματα Π.χ., ο τύπος συσχετίσεων depositor μεταξύ των customer και account μπορεί να χαρακτηρίζεται και από το γνώρισμα access-date
Τύποι Συσχετίσεων και Γνωρίσματα
Γραφική Αναπαράσταση Τύπων Συσχετίσεων
Τυπικός Ορισμός e μια οντότητα E = {e1,…,en} ένα σύνολο οντοτήτων r = [e1,…,en], τ.ω., e1E1,…,enEn μια συσχέτιση R={r1,…,rm}={[e1,…,en] | e1E1,…,enEn} ένα σύνολο συσχετίσεων
Τυπικός Ορισμός Ω ένα άπειρο απαριθμήσιμο σύνολο τιμών = πεδίο ορισμού P(Ω) το δυναμοσύνολο του Ω f: Τ->Ω μονότιμο, απλό γνώρισμα f: Τ->P(Ω) πλειότιμο, απλό γνώρισμα f: Τ->Ω1x…xΩn μονότιμο, σύνθετο γνώρισμα f: Τ->P(Ω1x…xΩn) πλειότιμο, σύνθετο γνώρισμα όπου Τ μπορεί να είναι μια οντότητα Ε, ή μια συσχέτιση R Συμβολισμός: dom(Τ) το πεδίο ορισμού του Τ
Περιεχόμενα Εισαγωγή Τύποι Οντοτήτων Τύποι Συσχετίσεων Κλειδιά, Ρόλοι και Βαθμός Συσχέτισης Περιορισμοί Ειδικά Θέματα Προβληματισμοί για τον σχεδιαστή Σύνοψη Γραφικής Αναπαράστασης
Κλειδιά για Τύπους Οντοτήτων Υπερκλειδί (super key) ενός τύπου οντοτήτων είναι ένα σύνολο γνωρισμάτων των οποίων οι τιμές καθορίζουν μονοσήμαντα μια οντότητα του εν λόγω τύπου οντοτήτων. Υποψήφιο κλειδί (candidate key) είναι ένα υπερκλειδί με το ελάχιστο μέγεθος (ήτοι, αριθμό γνωρισμάτων) μεταξύ των υπερκλειδιών Πρωτεύον κλειδί (primary key) είναι ένα υποψήφιο κλειδί το οποίο ορίζει ο σχεδιαστής της ΒΔ. ... θα το αποκαλούμε και απλώς κλειδί
Κλειδιά Υπερκλειδιά: Υποψήφια κλειδιά: Κλειδί ΑΤ ΑΦΜ Υπερκλειδιά: ΑΤ, Όνομα ΑΤ, Όνομα, Δ/ση ΑΦΜ, ΑΤ, Όνομα, Δ/ση ΑΦΜ ... και άλλα... Υποψήφια κλειδιά: ΑΤ Κλειδί Πελάτης Όνομα Δ/ση Ελάχιστο μέγεθος υπερκλειδιού = 1 Διότι έτσι διαλέγω ως σχεδιαστής...
Ιδιότητες (Υποψηφίου) Κλειδιού Μοναδικότητα: Δεν μπορώ να έχω δύο διαφορετικές οντότητες με ίδιο κλειδί (εναλλακτικά: αν δύο οντότητες βρεθούν να έχουν το ίδιο κλειδί, τελικά πρόκειται για την ίδια οντότητα) Ελαχιστότητα: Δεν υπάρχει γνήσιο υποσύνολο του κλειδιού που να έχει την προηγούμενη ιδιότητα
Κλειδιά ΠΡΟΣΟΧΗ: από την στιγμή που ορίσουμε γνωρίσματα σε ένα τύπο οντοτήτων πρέπει να ορίσουμε και πρωτεύον κλειδί!!
Κλειδιά για Τύπους Συσχετίσεων Ο συνδυασμός των κλειδιών των εμπλεκομένων τύπων οντοτήτων συνήθως φτιάχνει ένα υπερκλειδί για τον τύπο συσχετίσεων. Π.χ., customer-id, account-number είναι το υπερκλειδί του depositor
Κλειδιά για Τύπους Συσχετίσεων Αν όμως, κάποιος θέλει να βάλει δύο φορές χρήματα στο λογαριασμό του ? Τυπικά ορθή λύση: το access-date πλειότιμο γνώρισμα ή νέα οντότητα Εναλλακτική λύση: το access-date τμήμα του κλειδιού ΠΡΟΣΟΧΗ: η τυπική θεωρία δεν το προβλέπει [στα βιβλία δεν αναφέρεται], αλλά πρακτικά μπορεί να χρησιμοποιηθεί!!!
Ρόλοι και Αυτοσυσχετίσεις Οι ρόλοι είναι ταμπέλες που βάζουμε στις ακμές ενός τύπου συσχέτισης για να δείξουμε περιγραφικά τη σημασία της συμμετοχής ενός τύπου οντοτήτων στον εν λόγω τύπο συσχετίσεων. Οι τύποι οντοτήτων που συμμετέχουν σε ένα τύπο συσχέτισης δεν είναι απαραίτητα διαφορετικοί μεταξύ τους – ο εν λόγω τύπος συσχετίσεως καλείται τύπος αυτοσυσχέτισης.
Ρόλοι & Αυτοσυσχετίσεις Ρόλοι & Αυτοσυσχετίσεις Οι ρόλοι manager και worker περιγράφουν πώς οι υπάλληλοι συμμετέχουν στην αυτοσυσχέτιση works-for. Οι ρόλοι είναι προαιρετικοί και συνήθως χρησιμοποιούνται σε περιπτώσεις όπου το διάγραμμα είναι εννοιολογικά ασαφές (π.χ., αυτοσυσχετίσεις)
Βαθμός (Degree) Τύπου Συσχέτισης Ο βαθμός ενός τύπου συσχέτισης αναφέρεται στον αριθμό των οντοτήτων που υποχρεωτικώς συμμετέχουν σε μια συσχέτιση. Ένας τύπος συσχέτισης που περιλαμβάνει 2 οντότητες ονομάζεται δυαδικός (binary), 3 οντότητες τριαδικός (ternary), κ.ο.κ. Οι πιο συνηθισμένοι τύποι συσχετίσεων είναι δυαδικοί, ενώ οι υπόλοιποι τύποι συσχετίσεων είναι μάλλον σπάνιοι...
Βαθμός (Degree) Τύπου Συσχέτισης Αν υποθέσουμε ότι ένας υπάλληλος μιας τράπεζας μπορεί να έχει διαφορετικά καθήκοντα σε διαφορετικούς τομείς της τράπεζας, προκύπτει ένας τριαδικός τύπος συσχέτισης ανάμεσα στους τύπους οντοτήτων Υπάλληλος, Καθήκον και Tομέας.
t1,t2Τ, t1t2 => t1[I]t2[I] Τυπικός Ορισμός Αν δύο οντότητες βρεθούν να έχουν το ίδιο κλειδί, τελικά πρόκειται για την ίδια οντότητα Έστω Ι ένα σύνολο γνωρισμάτων και T μια οντότητα ή συσχέτιση. Αν tΤ, t[Ι] είναι η τιμή του t για τα γνωρίσματα I. Το κλειδί ορίζεται ως ο ακόλουθος περιορισμός: t1,t2Τ, t1[I]=t2[I] => t1t2 ή t1,t2Τ, t1t2 => t1[I]t2[I]
ER Διάγραμμα Το διάγραμμα οντοτήτων συσχετίσεων (ER Diagram) για μια βάση δεδομένων είναι μια γραφική αναπαράσταση των καταστάσεων που είναι πιθανές (και επιτρεπτές) στον υπό μοντελοποίηση κόσμο
ER Διάγραμμα
Περιεχόμενα Εισαγωγή Τύποι Οντοτήτων Τύποι Συσχετίσεων Κλειδιά, Ρόλοι και Βαθμός Συσχέτισης Περιορισμοί Ειδικά Θέματα Προβληματισμοί για τον σχεδιαστή Σύνοψη Γραφικής Αναπαράστασης
Άνω και Κάτω Όριο Συσχέτισης Για την ακμή ενός τύπου συσχετίσεων R, που την συσχετίζει ένα τύπο οντοτήτων E μπορούμε να καταγράψουμε Το Κάτω Όριο Συμμετοχής: για κάθε οντότητα που ανήκει στο E, πόσες ακμές κατ’ ελάχιστον πρέπει να ξεκινούν προς συσχετίσεις του R Το Άνω Όριο Συμμετοχής: για κάθε οντότητα που ανήκει στο E, πόσες ακμές το πολύ πρέπει να ξεκινούν προς συσχετίσεις του R
Γραφική Αναπαράσταση Πληθικότητας και Συμμετοχής Κάτω όριο Άνω όριο Άνω όριο Κάτω όριο
Μη σκέφτεστε έτσι... Loan Customer l1 c1 l2 c2 c3 l3
…αλλά έτσι !!! Loan Customer Κάθε ci έχει 0..Ν ακμές c1_l1 l1 c1 l2 c2 c2_l2 c3 l3 c2_l3 Κάθε ci έχει 0..Ν ακμές Κάθε lj έχει 1..1 ακμές
Άνω και Κάτω Όριο Συσχέτισης Αν το κάτω όριο είναι 0, τότε υπάρχουν οντότητες της Ε που μπορούν και να μην συμμετέχουν στον τύπο συσχετίσεων R Αλλιώς, η συμμετοχή είναι υποχρεωτική (ολική) Αν το άνω όριο είναι 1, τότε μια οντότητα της Ε μπορεί να συσχετίζεται με μία το πολύ συσχέτιση της R Αλλιώς, με πολλές
Επιτρέπεται και ... 3..4 1..1 Ένας customer σχετίζεται με τουλάχιστον 3 ως το πολύ 4 loan μέσω της borrower Ένα loan σχετίζεται ακριβώς με ένα customer μέσω της borrower
Τυπικός Ορισμός Για μια δυαδική συσχέτιση συσχέτιση R μεταξύ των A,B: Άνω όριο Cmax[R(Α|Β)] = Κ, Κ > 0 aΑ, Card[{<a,b>|<a,b>R}]<=K Κάτω όριο Cmin[R(Α|Β)] = Κ, Κ >=0 aΑ, Card[{<a,b>|<a,b>R}]>=K όπου για ένα σύνολο S={x|c}, το S αποτελείται από τα στοιχεία x, για τα οποία ισχύει η c Card[S] είναι ο αριθμός των στοιχείων του S
aΑ, Card[{<a,b>|<a,b>R}] <= K Μετάφραση aΑ, Card[{<a,b>|<a,b>R}] <= K Για κάθε οντότητα aΑ, ο αριθμός των στοιχείων ri=<a,b> που ανήκουν στην R είναι μικρότερος ή ίσος από K Κάθε στοιχείο της συσχέτισης R ορίζεται σαν ένα ζεύγος ri=<a,b> Ισοδύναμα, αντί να σκεφτόμαστε τα στοιχεία ri=<a,b> που σχετίζονται με την οντότητα a, μπορούμε να μετράμε τις ακμές που ξεκινούν από το a προς την συσχέτιση R.
Τυπικός Ορισμός Cmax[R(Α|Β)] = 2 Cmin[R(Α|Β)] = 0 Cmax[R(B|A)] = 1 Cmin[R(B|A)] = 1 R Β Α <a1,b1> b1 a1 b2 a2 <a2,b2> a3 b3 <a2,b3> Κάθε ai έχει 0..2 ακμές Κάθε bj έχει 1..1 ακμές
Πληθικότητα και Λόγος Πληθικότητας Η πληθικότητα (cardinality), περιγράφει πόσες οντότητες από ένα τύπο οντοτήτων μπορούν να αντιστοιχισθούν σε μία οντότητα ενός άλλου τύπου οντοτήτων μέσω του εμπλεκομένου τύπου συσχετίσεων Ο λόγος πληθικότητας (cardinality ratio) σε ένα δυαδικό τύπο συσχετίσεων περιγράφει το συνδυασμό των πληθικοτήτων μιας συσχέτισης
Πληθικότητα Πληθικότητα Α = Ν: Μία (1) οντότητα από το Β, αντιστοιχίζεται σε πολλές (Ν) οντότητες από το Α Πληθικότητα Β = 1: Μία (1) οντότητα από το Α, αντιστοιχίζεται σε μία (1) οντότητα από το Β Η πληθικότητα ενός Τ.Ο. Χ περιγράφει πόσες οντότητες από ένα Τ.Ο. Χ μπορούν να αντιστοιχισθούν σε μία (1) οντότητα ενός άλλου Τ.Ο. Y μέσω του εμπλεκομένου τύπου συσχετίσεων X-Y Ν:1
Λόγος Πληθικότητας Σε ένα δυαδικό τύπο συσχετίσεων ο λόγος πληθικότητας μπορεί να είναι: 1:1 1:Ν ή Ν:1 Ν:Μ
Λόγος Πληθικότητας 1:1 1:Ν
Λόγος Πληθικότητας Ν:1 Ν:Μ
Λόγος Πληθικότητας 1:Ν 1 Ν Ένας customer σχετίζεται με πολλά (ίσως και με 0) loan μέσω της borrower Ένα loan σχετίζεται το πολύ με ένα (ίσως και με 0) customer μέσω της borrower
Συμμετοχή Οντοτήτων σε Συσχετίσεις Ολική Συμμετοχή (Total participation): κάθε οντότητα του εμπλεκόμενου τύπου οντοτήτων συμμετέχει υποχρεωτικά σε τουλάχιστον μία συσχέτιση του σχετικού τύπου συσχετίσεων Αναπαριστάται με διπλή γραμμή Μερική Συμμετοχή (Partial participation): επιτρέπεται κάποιες οντότητες να μην συμμετέχουν σε συσχέτιση του σχετικού τύπου συσχετίσεων
Συμμετοχή Οντοτήτων σε Συσχετίσεις Η συμμετοχή του customer στην borrower είναι μερική Η συμμετοχή του loan στην borrower είναι ολική Ήτοι, κάθε loan πρέπει να σχετίζεται μέσω της borrower με ένα customer
Εξάρτηση ύπαρξης (existential dependency) Αν η ύπαρξη της δευτερεύουσας οντότητας y εξαρτάται από την ύπαρξη της κύριας οντότητας x => o y είναι υπαρξιακά εξαρτημένος από τον x payment loan loan-payment Αν διαγραφεί ένα loan τότε πρέπει να διαγραφούν όλες οι σχετικές payment ΠΡΟΣΟΧΗ: στο βιβλίο ΔΕΝ γίνεται η σχετική νύξη!
Γραφική Αναπαράσταση Πληθικότητας και Συμμετοχής Η απλή γραμμή σημαίνει σχέση Μ:Ν Ένας customer σχετίζεται με πολλά (ίσως και 0) loans μέσω της borrower Ένα loan σχετίζεται με πολλούς (ίσως και 0) customers μέσω της borrower
Γραφική Αναπαράσταση Πληθικότητας και Συμμετοχής 1 Ν Ένας customer σχετίζεται με πολλά (ίσως και με 0) loan μέσω της borrower Ένα loan σχετίζεται ακριβώς με ένα customer μέσω της borrower
Σωστό ή λάθος? Συμμετοχή customer Πληθικότητα customer Πληθικότητα loan Συμμετοχή loan
Οδηγίες Χρησιμοποιήστε άφοβα τον συμβολισμό [κάτω όριο..άνω όριο]. Είναι πιο σίγουρος (για να μην κάνετε λάθη) Είναι πιο εκφραστικός (επιτρέπει και όρια, αντί μόνο για πληθικότητες) Ο συμβολισμός με τους λόγους πληθικότητας είναι πιο εύχρηστος Αν είστε σίγουροι, είναι πιο γρήγορος και κομψός
Εναλλακτικές αναπαραστάσεις Ίσως πιο παράξενες, αλλά ευρέως διαδεδομένες Βελάκι για «ένα» (1) Απλή γραμμή — για πολλά (Ν ή *)
Ένα προς Ένα Ένας customer σχετίζεται το πολύ με ένα (ίσως και με 0) loan μέσω της borrower Ένα loan σχετίζεται το πολύ με ένα (ίσως και με 0) customer μέσω της borrower
Ένα προς Πολλά Ένας customer σχετίζεται με πολλά (ίσως και με 0) loan μέσω της borrower Ένα loan σχετίζεται το πολύ με ένα (ίσως και με 0) customer μέσω της borrower
Πολλά προς Ένα Ένας customer σχετίζεται το πολύ με ένα (ίσως και με 0) loan μέσω της borrower Ένα loan σχετίζεται με πολλά (ίσως και με 0) customer μέσω της borrower
Παγκόσμιος Κανόνας Ότι γράφεται εύκολα (και γρήγορα), διαβάζεται δύσκολα (και αργά) Ότι γράφεται δύσκολα (και αργά), διαβάζεται εύκολα (και γρήγορα) …, SQL, Unix, Prolog, Γραμμική Β’, ζωγραφική, ... Στο διαγώνισμα, προσέξτε τι γράφετε και πώς…
Περιεχόμενα Εισαγωγή Τύποι Οντοτήτων Τύποι Συσχετίσεων Κλειδιά, Ρόλοι και Βαθμός Συσχέτισης Περιορισμοί Ειδικά Θέματα Προβληματισμοί για τον σχεδιαστή Σύνοψη Γραφικής Αναπαράστασης
Ασθενείς Τύποι Οντοτήτων Ασθενής Τύπος Οντοτήτων (Weak Entity Type): Ένας τύπος οντοτήτων στον οποίο δεν μπορούμε να ορίσουμε πρωτεύον κλειδί με βάση τα γνωρίσματά του και μόνο Οι οντότητες ενός ασθενούς τύπου προσδιορίζονται και εξαρτώνται από τις οντότητες κάποιου άλλου τύπου οντοτήτων, τον οποίο και αποκαλούμε προσδιορίζοντα (identifying) ή ιδιοκτήτη (owner) τύπο οντοτήτων. Ο ασθενής τύπος σχετίζεται με τον προσδιορίζοντα τύπο μέσω ενός ολικού, 1:Ν, τύπου συσχετίσεων από τον προσδιορίζοντα προς τον ασθενή. Επίσης, και «μη ισχυρός», ή «αδύναμος» Τ.Ο.
Ασθενείς Τύποι Οντοτήτων Το μερικό κλειδί (partial key) μιας ασθενούς οντότητας, είναι εκείνο το σύνολο γνωρισμάτων της που την κάνει να ξεχωρίζει από τις υπόλοιπες οντότητες που αντιστοιχούν στην ίδια οντότητα-ιδιοκτήτη Το πρωτεύον κλειδί ενός ασθενούς τύπου οντοτήτων είναι η ένωση του πρωτεύοντος κλειδιού του τύπου ιδιοκτήτη της με το μερικό κλειδί της (ένωση, διότι τα κλειδιά είναι σύνολα γνωρισμάτων)
Ασθενείς Τύποι Οντοτήτων Ένας ασθενής τύπος οντοτήτων αναπαριστάται με διπλή γραμμή στο παραλληλόγραμμό του. Η συσχέτιση που τον προσδιορίζει (τον συνδέει, δηλ., με τον ιδιοκτήτη τύπο) έχει επίσης διπλή γραμμή Το μερικό κλειδί υπογραμμίζεται με διακεκομμένη γραμμή
Ασθενείς Τύποι Οντοτήτων Ασθενής οντότητα: payment Μερικό κλειδί: payment-number Κλειδί του payment : (loan-number, payment-number)
Ασθενείς Τύποι Οντοτήτων Μπορούμε να ορίσουμε μια ασθενή οντότητα έχουσα ιδιοκτήτη μια επίσης ασθενή οντότητα (μεταβατική ιδιότητα) Απαγορεύεται προφανώς να υπάρξει κύκλος στην προσδιορίζουσα σχέση των παραπάνω ασθενών οντοτήτων... Το κλειδί κάθε φορά προκύπτει από τη σταδιακή ένωση των επί μέρους κλειδιών...
Τριαδικές Σχέσεις
Πληθικότητα και Συμμετοχή σε Τριαδικές Συσχετίσεις Χρησιμοποιείστε τον φορμαλισμό [n1..n2], αν πρέπει να ορίσετε και συμμετοχές και πληθικότητα ΠΑΝΤΑ η πληθικότητα της οντότητας μετράται σε σχέση με την συσχέτιση Το ίδιο ισχύει και στην απίθανη περίπτωση που έχετε συσχέτιση μεγαλύτερου βαθμού...
Ποτέ μη σκέφτεστε έτσι... Job Employee Branch Works-On j1 j2 j3 e1 b1
…αλλά έτσι !!! Job Employee Branch Works-On j1 j2 j3 e1 b1 e2 b2 e3 e1b1j1 b2 e3 e1b1j2 e2b2j2 e3b2j3 Works-On
Τυπικός Ορισμός Για μια n-κή συσχέτιση R μεταξύ των E1,E2,…,En, W=Z-(ΧΥ) Άνω όριο Cmax[R(X|Y)] = Κ, Κ > 0 xX, Card[{<x,y1>|w1W:<x,y1,w1>R}]<=K Κάτω όριο Cmin[R(X|Y)] = Κ, Κ >= 0 xX, Card[{<x,y1>|w1W:<x,y1,w1>R}]>=K
xX, Card[{<x,y1>|w1W:<x,y1,w1>R}]<=K Μετάφραση xX, Card[{<x,y1>|w1W:<x,y1,w1>R}]<=K Για κάθε οντότητα xX, ο αριθμός των στοιχείων εκείνων που ανήκουν στην R, και τα οποία, για τα σύνολα οντοτήτων Χ,Υ παίρνουν τις τιμές r1=<x,y1>, r2=<x,y2>,…,rn είναι μικρότερος ή ίσος από K Κάθε στοιχείο της συσχέτισης R ορίζεται σαν μια n-άδα ri=<e1,…,en>. Επειδή τους τύπους οντοτήτων Ε1,…,Εn τους έχουμε χωρίσει σε τρία γκρουπ, Χ,Υ,W, μπορούμε να γράψουμε το εν λόγω στοιχείο ως μια τριάδα ri=<x,y,w>
Επί παραδείγματι ... {<e1,b1>|w1W:<e1,b1,w1>R}={<e1,b1,j1>, <e1,b1,j2>} Employee j1 j2 j3 Job Branch e1 b1 e2 e1b1j1 b2 e3 e1b1j2 e2b2j2 e3b2j3 Works-On
Επί παραδείγματι ... Cmax[W-O(Job|Employee)] = 10 Μια δουλειά μπορεί να την κάνουν το πολύ 10 άτομα Cmax[W-O(Job,Employee|Branch)] = 1 Ένας άνθρωπος, μια δουλειά μπορεί να την κάνει το πολύ σε ένα τμήμα άτομα Cmin[W-O(Employee|Job)] = 5 Ένας υπάλληλος κάνει τουλάχιστον 5 δουλειές
Τριαδικές Σχέσεις Οι τριαδικές σχέσεις είναι συνήθως N:M:K Για κάθε ζεύγος employee,branch υπάρχει ακριβώς μια job (ήτοι, ένας υπάλληλος κάνει ακριβώς μία δουλειά σε κάθε παράρτημα που δουλεύει) 1 Ν Μ
Μετασχηματισμός Τριαδικών σε Δυαδικές Συσχετίσεις Αντί για τον τύπο συσχέτισης R μεταξύ των A, B και C, εισήγαγε τον τύπο οντοτήτων E, και 3 τύπους συσχετίσεων: 1. RA, μεταξύ E & A 2.RB, μεταξύ E & B 3. RC, μεταξύ E & C Εισήγαγε τεχνητό κλειδί για την E Πρόσθεσε όλα τα γνωρίσματα της R στην E Για κάθε συσχέτιση (ai , bi , ci) της R, φτιάξε 1. οντότητα ei που ανήκει στην E 2. πρόσθεσε (ei , ai ) στο RA 3. πρόσθεσε (ei , bi ) στο RB 4. πρόσθεσε (ei , ci ) στο RC
Μετασχηματισμός Τριαδικών σε Δυαδικές Συσχετίσεις Θυμηθείτε να προσθέσετε όποιους περιορισμούς είχε η παλιά τριαδική συσχέτιση Είναι πιθανόν να χάσετε κάποιους ...
Περιεχόμενα Εισαγωγή Τύποι Οντοτήτων Τύποι Συσχετίσεων Κλειδιά, Ρόλοι και Βαθμός Συσχέτισης Περιορισμοί Ειδικά Θέματα Προβληματισμοί για τον σχεδιαστή Σύνοψη Γραφικής Αναπαράστασης
Σχεδιαστικοί Προβληματισμοί Πρόβλημα: έχετε ένα πελάτη που σας περιγράφει τη ΒΔ που θέλει να του φτιάξετε. Ο πελάτης ξέρει περίπου τι θέλει. Πρέπει να καταγράψετε αυτά που ο πελάτης θέλει (κι ας μην τα ξέρει πλήρως), και δεν πρέπει να φτιάξετε μια ΒΔ που να είναι εντελώς άσχετη με αυτά που σκέφτεται ο πελάτης => ακούμε με προσοχή! ΔΕΝ γίνεται με την πρώτη => κάνουμε υπομονή στις αλλαγές, είναι μέρος του προβλήματος...
Σχεδιαστικοί Προβληματισμοί Υπάρχουν πράγματα που ΔΕΝ μπορεί να καταγράψει το ER μοντέλο => τα καταγράφουμε με κάποια γλώσσα (φυσική, γραφική, τυπική,...) εξωτερικά του μοντέλου! Πάντα, όμως, καταγράφουμε μέσα στο διάγραμμα όσα περισσότερα στοιχεία μπορούμε!! Μην ξεχνάτε την συνέπεια του διαγράμματος: πρέπει να είναι συντακτικό σωστό!! Μην ξεχνάτε τα κλειδιά: αφορούν τη συνέπεια των περιεχομένων του διαγράμματος!!
Επανάληψη μητήρ πάσας ασυνεπείας... Customer Cust-Id Loan Loan-Id C-Name Λάθος! Customer Loan Cust-Id Loan-Id C-Name Σωστό!
Επανάληψη μητήρ πάσας ασυνεπείας... Customer Loan Loan Cust-Id Loan-Id Loan-Id C-Name C-Name Cust-Id Σωστό! Λάθος επίσης!
Σχεδιαστικοί Προβληματισμοί Οντότητα ή Γνώρισμα? Η εκλογή εξαρτάται από το context της μοντελοποίησης και τη σημασία της εν λόγω οντότητας / γνώρισμα. Απλοϊκός κανόνας [συνήθως σωστός]: Όταν κάτι είναι παραπάνω από ένα όνομα ή ένα id, με αλληλοεξαρτήσεις μεταξύ γνωρισμάτων, τότε είναι οντότητα! Όταν κάτι μοιράζεται από περισσότερες από μία οντότητες (π.χ., υπάρχουν συσχετίσεις προς αυτό) τότε είναι υποχρεωτικά οντότητα! Όταν κάτι είναι το «Ν» σε μια συσχέτιση Ν:1, τότε είναι οντότητα! (προτιμήστε οντότητες, αντί για πλειότιμα γνωρίσματα)
Σχεδιαστικοί Προβληματισμοί Οντότητα ή Συσχέτιση? Υπάρχει ένα «άγραφος» κανόνας που, δοθείσης μιας λεκτικής περιγραφής σχετίζει τα ουσιαστικά με οντότητες και τα ρήματα με συσχετίσεις. Επικίνδυνος!! (τι είναι η «κατάθεση» χρημάτων?)
Σχεδιαστικοί Προβληματισμοί Δυαδικές ή n-ary συσχετίσεις? Κατ’ αρχήν προσπαθούμε να διατηρήσουμε την πιο φυσιολογική σε σχέση με τον πραγματικό κόσμο! Προσοχή στις n-ary! Παράδειγμα: η σχέση parent. Ενώ μπορεί κάλλιστα να μοντελοποιήσει τριάδες <father,mother,child> (π.χ., Δίας, Ήρα,Άρης), έχει και προβλήματα (π.χ., Δίας,NULL,Αθηνά). Σε τέτοιες περιπτώσεις, τις σπάμε σε δυαδικές (father και mother)… Πλειότιμα γνωρίσματα ή χωριστές οντότητες? Συνήθως χωριστές οντότητες – σε ειδικές περιπτώσεις πλειότιμα γνωρίσματα...
Σχεδιαστικοί Προβληματισμοί Μην το παρακάνετε με τις ασθενείς οντότητες!! Δεν είναι κακό να φτιάξετε ένα τεχνητό κλειδί, αρκεί να έχει κάποιο λογικό νόημα!! Φτιάχνουμε ασθενείς οντότητες, ΜΟΝΟ αν ένα τεχνητό κλειδί ΔΕΝ έχει νόημα. Απλοϊκός κανόνας: μια ασθενής οντότητα είναι μια καλή εναλλακτική σε ένα πλειότιμο γνώρισμα... Π.χ., εξαρτώμενα παιδιά υπαλλήλου: αν δεν τα θέλουμε ως πλειότιμο γνώρισμα και μας αφορά απλώς να τα καταγράψουμε
Σχεδιαστικοί Προβληματισμοί Η μεγαλύτερη αρετή του σχεδιαστή είναι η απλότητα των διαγραμμάτων του! [και η ακρίβεια και η πληρότητα, μην ξεχνιόμαστε, ε?] Μην ντρέπεστε να βάλετε οντότητες ή συσχετίσεις, αν προκύπτουν από το πρόβλημα. Μη βάζετε όμως άχρηστες, διότι το διάγραμμα γίνεται πολύπλοκο. Το ER είναι μάλλον δύσχρηστο μοντέλο...
Σχεδιαστικοί Προβληματισμοί Ο σκοπός του ER διαγράμματος είναι να καταγράψει την πραγματικότητα όσο πιο τυπικά γίνεται και να αποτελεί σημείο αναφοράς της διαδικασίας σχεδίασης και υλοποίησης της ΒΔ => αυτά που πρέπει να καταγραφούν, πρέπει να είναι μέσα στο διάγραμμά μας (άρα να μην έχουμε ελλείψεις), με σωστό τρόπο (για να τα εννοούν και άλλοι), και μόνο αυτά !!!
Περιεχόμενα Εισαγωγή Τύποι Οντοτήτων Τύποι Συσχετίσεων Κλειδιά, Ρόλοι και Βαθμός Συσχέτισης Περιορισμοί Ειδικά Θέματα Προβληματισμοί για τον σχεδιαστή Σύνοψη Γραφικής Αναπαράστασης
Διαγράμματα Οντοτήτων – Συσχετίσεων (E-R Diagrams) Παραλληλόγραμμα για τύπους οντοτήτων Ελλείψεις για γνωρίσματα Διπλές ελλείψεις για πλειότιμα γνωρίσματα. Διακεκομμένες ελλείψεις για παραγόμενα γνωρίσματα. Υπογράμμιση για πρωτεύοντα κλειδιά (στη συνέχεια...) Ρόμβοι για τύπους συσχετίσεων Ακμές για να συνδέσουν τύπους οντοτήτων με γνωρίσματα και τύπους συσχετίσεων
Γραφική Αναπαράσταση Τύπων Οντοτήτων
Γραφική Αναπαράσταση Τύπων Συσχετίσεων
Γραφική Αναπαράσταση Πληθικότητας και Συμμετοχής Κάτω όριο Άνω όριο Άνω όριο Κάτω όριο
Ρόλοι & Αυτοσυσχετίσεις Ρόλοι & Αυτοσυσχετίσεις Οι ρόλοι είναι ταμπέλες που βάζουμε στις ακμές ενός τύπου συσχέτισης για να δείξουμε περιγραφικά τη σημασία της συμμετοχής ενός τύπου οντοτήτων στον εν λόγω τύπο συσχετίσεων.
Ασθενείς Τύποι Οντοτήτων Ασθενής οντότητα: payment Μερικό κλειδί: payment-number Κλειδί του payment : (loan-number, payment-number)
ER Διάγραμμα