Μοντέλο Οντοτήτων-Συσχετίσεων
Το μοντέλο οντοτήτων-συσχετίσεων (μοντέλο Ο/Σ - ER model) είναι ένα αφαιρετικό[1] ιδεατό[2] [3] μοντέλο δεδομένων, τα οποία έχουν καθορισμένη δομή. Στη μηχανική λογισμικού χρησιμοποιείται για να παρέχει ένα εννοιολογικό σχήμα κατά τη σχεδίαση βάσεων δεδομένων, ως μοντέλο δεδομένων ενός συστήματος και των απαιτήσεών του με top-down προσέγγιση. Ένα διάγραμμα που δημιουργείται με αυτή τη διαδικασία σχεδίασης καλείται διάγραμμα οντοτήτων-συσχετίσεων, ή διάγραμμα Ο/Σ ή ΟΣΔ εν συντομία. Προτάθηκε αρχικά το 1976 από τον Peter Chen, ωστόσο στη συνέχεια επινοήθηκαν πολλές παραλλαγές της διαδικασίας.
Χρήση
[Επεξεργασία | επεξεργασία κώδικα]Χρησιμοποιείται στο πρώτο στάδιο σχεδίασης ενός συστήματος πληροφοριών, κατά την ανάλυση των απαιτήσεών του. Σκοπός του είναι να περιγράφει τις αναγκαίες πληροφορίες οι οποίες πρόκειται να αποθηκευτούν στη βάση δεδομένων ή τον τύπο τους. Η μοντελοποίηση δεδομένων γίνεται για την περιγραφή των χρησιμοποιούμενων όρων και των σχέσεών τους σε έναν ορισμένο τομέα ενδιαφέροντος. Στην περίπτωση σχεδιασμού ενός συστήματος πληροφοριών, που στηρίζεται σε μια βάση δεδομένων, το εννοιολογικό μοντέλο δεδομένων χαρτογραφείται σε προχωρημένο στάδιο σε ένα λογικό μοντέλο δεδομένων, όπως το σχεσιακό μοντέλο δεδομένων.[4] Το στάδιο αυτό ονομάζεται συνήθως στάδιο λογικού σχεδιασμού. Ύστερα, κατά τη διάρκεια του φυσικού σχεδιασμού το λογικό μοντέλο χαρτογραφείται σε κάποιο φυσικό μοντέλο. Ορισμένες φορές και οι δύο φάσεις αναφέρονται ως "φυσικός σχεδιασμός".
Σημειογραφία
[Επεξεργασία | επεξεργασία κώδικα]Υπάρχουν διάφορες συμβάσεις για τη σημειογραφία που χρησιμοποιείται στα διαγράμματα οντότητων-συσχετίσεων (ERDs). Αρκετές φορές η σημειογραφία που υιοθετείται κατά το λογικό και φυσικό σχεδιασμό μιας βάσης δεδομένων διαφέρει ως προς τη σαφήνεια, τις δυνατότητες που έχει η γραφική γλώσσα, την υποστήριξη από πρότυπα και τα εργαλεία. Συνήθως για τις συσχετίσεις χρησιμοποιούνται ευθείες με διαφορετικές άκρες, ή με σημειώσεις που παριστάνουν την πληθικότητα του τύπου συσχέτισης.
Ιδιαίτερη - κυρίως ιστορική - σημασία έχουν οι παρακάτω σημειογραφίες:
- Η σημειογραφία Chen, του Peter Chen που δημιούργησε τα διαγράμματα το 1976.
- Η σημειογραφία IDEF1X ως de facto πρότυπο, χρησιμοποιούμενο για χρόνια από τις αρχές των ΗΠΑ.
- Η σημειογραφία Martin (πόδι του κόρακα) διαδεδομένη σε εργαλεία για διαγράμματα.
- Η σημειογραφία του Charles Bachman, σε εργαλεία διαγραμμάτων.
- Η σημειογραφία (Min, max), του Jean Raymond Abrial το 1974.
- Η γλώσσα UML, πρότυπο που χρησιμοποιείται ως αντικαταστάτης των διαγραμμάτων Ο/Σ.
Όροι
[Επεξεργασία | επεξεργασία κώδικα]Βάση για των μοντέλων Ο/Σ είναι η κατηγοριοποίηση αντικειμένων και των σχέσεών τους μεταξύ τους.
Οντότητα
[Επεξεργασία | επεξεργασία κώδικα]![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/ERD-example1_el.svg/150px-ERD-example1_el.svg.png)
Οντότητα (entity) είναι ένα αντικείμενο ενδιαφέροντος στον πραγματικό κόσμο το οποίο ξεχωρίζει από τα υπόλοιπα.[5] Μια οντότητα λειτουργεί αφαιρετικά σε έναν πολύπλοκο τομέα. Οντότητες μπορεί να είναι άνθρωποι, μέρη, αντικείμενα, γεγονότα, έννοιες κλπ. Στιγμιότυπο (instance) μιας οντότητας είναι μια συγκεκριμένη περίπτωση ενός τύπου οντότητας.
Τύπος Οντότητας
[Επεξεργασία | επεξεργασία κώδικα]Ο τύπος της οντότητας είναι μια συλλογή χαρακτηριστικών που περιγράφουν την οντότητα.
Οι διάφοροι τύποι οντοτήτων (π.χ. ΕΡΓΑΖΟΜΕΝΟΣ, ΦΟΙΤΗΤΗΣ) παριστάνονται στο διάγραμμα Ο/Σ με ένα ορθογώνιο.
Χαρακτηριστικό
[Επεξεργασία | επεξεργασία κώδικα]![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/ERD-example2_el.svg/400px-ERD-example2_el.svg.png)
Κάθε οντότητα έχει διάφορα στοιχεία που την προσδιορίζουν. Ένα τέτοιο στοιχείο ονομάζεται ιδιότητα (attribute), χαρακτηριστικό ή πεδίο της οντότητας.[5] Τα χαρακτηριστικά χωρίζονται σε
- μονότιμα (single valued), τα οποία έχουν μόνο μια τιμή και
- πλειότιμα (multi-valued), τα οποία έχουν σύνολο από τιμές
Στο διάγραμμα Ο/Σ οι ιδιότητες που έχει μια οντότητα παριστάνονται μέσα σε έλλειψη, με υπογραμμισμένο το πρωτεύον κλειδί. Τα πλειότιμα χαρακτηριστικά μιας οντότητας παριστάνονται μέσα σε έλλειψη με διπλό περίγραμμα.
Συσχέτιση
[Επεξεργασία | επεξεργασία κώδικα]![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/71/ERD-example3_el.svg/400px-ERD-example3_el.svg.png)
Συσχέτιση (relationship) είναι η σύνδεση δύο ή περισσότερων τύπων οντοτήτων[5] που παρουσιάζει ενδιαφέρον για σχεδιασμό. Με συσχετίσεις μπορούν να συνδέονται και χαρακτηριστικά οντοτήτων.
Ένας τύπος συσχέτισης (σύνολο συσχετίσεων) παριστάνεται με ρόμβο. Στο εσωτερικό αναγράφεται το όνομα με μικρά γράμματα.
Υποδεικνύουμε τα όρια της συσχέτισης με ένα δείκτη.
Ως όρια μπούμε να συναντήσουμε:
- 0 έως άπειρο
- (κατώτατο όριο 0, ανώτατο όριο άπειρο)
- τουλάχιστον 1
- (κατώτατο όριο 1, ανώτατο όριο άπειρο)
- ακριβώς 1
- (κατώτατο όριο 1, ανώτατο όριο 1)
- το πολύ 1
- (κατώτατο όριο 0, ανώτατο όριο 1)
Βαθμός ή πολυπλοκότητα ενός τύπου συσχετίσεων
[Επεξεργασία | επεξεργασία κώδικα]![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/44/ERD-example4_el.svg/400px-ERD-example4_el.svg.png)
Ο βαθμός μιας συσχέτισης είναι ο αριθμός των τύπων οντοτήτων που παίρνουν μέρος στη συσχέτιση. Οι πιο συνηθισμένες συσχετίσεις είναι
- μοναδικές, ο βαθμός τους τότε είναι 1
- δυαδικές, ο βαθμός τους τότε είναι 2
- τριαδικές, ο βαθμός τους τότε είναι 3
Πληθικότητα
[Επεξεργασία | επεξεργασία κώδικα]Η πληθικότητα (cardinality), περιγράφει τον αριθμό στιγμιοτύπων ενός τύπου οντοτήτων που μπορούν να αντιστοιχίζονται με μία οντότητα ενός άλλου τύπου σε μια συσχέτιση.
Ο λόγος πληθικότητας ή πληθικός λόγος (cardinality ratio), είναι ο λόγος των πληθικοτήτων μιας συσχέτισης.
Μπορούμε να έχουμε συσχετίσεις με λόγο πληθικότητας:
- 1-1 (ένα-προς-ένα)
- Αντιστοιχίζεται μια οντότητα ενός τύπου με το πολύ ή ακριβώς μια οντότητα ενός άλλου τύπου.
- 1-Ν (ένα-προς-πολλά)
- Αντιστοιχίζεται μια οντότητα ενός τύπου με κανένα, ένα ή πολλά στιγμιότυπα ενός άλλου τύπου.
- Μ-Ν (πολλά-προς-πολλά)
- Αντιστοιχίζεται κάθε στιγμιότυπο του ενός τύπου με ένα, κανένα ή πολλά στιγμιότυπα του άλλου τύπου.[6]
Ασθενής Τύπος Οντότητας
[Επεξεργασία | επεξεργασία κώδικα]Αδύναμη ή ασθενής οντότητα λέγεται μια οντότητα που εξαρτάται από την ύπαρξη κάποιας άλλης. Οι αδύναμες οντότητες συμμετέχουν σε συσχετίσεις μέσω ταυτοποιητικών συσχετίσεων με ισχυρή οντότητα.
Ταυτοποιητική συσχέτιση ονομάζεται η συσχέτιση στην οποία το πρωτεύον κλειδί της ισχυρής οντότητας χρησιμοποιείται ως μέρος του πρωτεύοντος κλειδιού της αδύναμης οντότητας.
Διακριτικό ή μερικό κλειδί ονομάζεται το χαρακτηριστικό της αδύναμης οντότητας το οποίο μαζί με το πρωτεύον κλειδί της ισχυρής οντότητας είναι το πρωτεύον κλειδί της αδύναμης.
Κατά την αναπαράσταση αδύναμων οντοτήτων:
- η οντότητα παριστάνεται με διπλό ορθογώνιο
- ταυτοποιητική συσχέτιση με διπλό ρόμβο
- το μερικό κλειδί με διακεκομμένη γραμμή
Επαναλαμβανόμενες ομάδες
[Επεξεργασία | επεξεργασία κώδικα]Μια επαναλαμβανόμενη ομάδα είναι ένα σύνολο δύο ή περισσότερων πλειότιμων γνωρισμάτων που έχουν μια λογική σχέση μεταξύ τους.
Πλειότιμα χαρακτηριστικά
[Επεξεργασία | επεξεργασία κώδικα]Είδαμε ότι τα πλειότιμα χαρακτηριστικά παριστάνονται με μια διπλή έλλειψη. Ωστόσο, στην ιδανική περίπτωση πλειότιμα χαρακτηριστικά πρέπει να αφαιρούνται από το μοντέλο δεδομένων κατά τη φάση σχεδίασης. Με τον τρόπο αυτό, η σχέση βρίσκεται σε δεύτερη κανονική μορφή.
Για να επιτύχουμε κάτι τέτοιο στο μοντέλο Ο/Σ προσθέτουμε μια ακόμη συσχέτιση.
Υποκλάσεις και υπερκλάσεις
[Επεξεργασία | επεξεργασία κώδικα]Γενίκευση / Εξειδίκευση
[Επεξεργασία | επεξεργασία κώδικα]Με την έννοια γενίκευση (generalization) εννοούμε τον εντοπισμό ενός συνόλου οντοτήτων (κλάση) που έχουν κοινά χαρακτηριστικά με πιο γενικευμένα αντικείμενα (υπέρκλαση). Η εξειδίκευση (specialization) είναι το ακριβώς αντίθετο της γενίκευσης, δηλαδή ο εντοπισμός υποσυνόλων ενός τύπου οντοτήτων με κοινά χαρακτηριστικά, τα οποία τα διαφοροποιούν από τα υπόλοιπα μέλη του.
Η συσχέτιση μεταξύ κάθε υπόκλασης και υπέρκλασης ονομάζεται ISA συσχέτιση.[7]
Κληρονομικότητα
[Επεξεργασία | επεξεργασία κώδικα]Σε κάθε επίπεδο της ιεραρχίας οι τύποι οντοτήτων κληρονομούν τα χαρακτηριστικά των τύπων του αμέσως ανώτερου επιπέδου.
Περιορισμός Επικάλυψης
[Επεξεργασία | επεξεργασία κώδικα]Όταν υπάρχει περιορισμός επικάλυψης μια οντότητα δεν επιτρέπεται να ανήκει ταυτόχρονα σε δύο υποκλάσεις. (exclusive subtypes)
Ο περιορισμός επικάλυψης συμβολίζεται με μια καμπύλη γραμμή στο διάγραμμα Ο/Σ, που τέμνει την ακμή του τύπου οντοτήτων με κάθε ISA συσχέτιση.
Υπάρχει όμως περίπτωση να μην ισχύει κανένας περιορισμός. Στην περίπτωση αυτή ένα στιγμιότυπο μπορεί να ανήκει σε περισσότερες από μια υποκλάσεις. (non-exclusive subtypes)
Εργαλεία ελεύθερου λογισμικού για διαγράμματα Ο/Σ
[Επεξεργασία | επεξεργασία κώδικα]Εργαλεία που δέχονται SQL και μπορούν να παράγουν μοντέλα Ο/Σ ή και να κάνουν ανάλυση σε βάσεις δεδομένων.
- BrModelo
- DBDesigner-Fork
- ER2SQL[8]
- Ferret
- Gliffy
- ModelRight
- Mogwai ERDesigner NG
- MySQL Workbench
- Open System Architect
- Power*Architect
- StarUML
Τα παρακάτω εργαλεία δεν δημιουργούν διαγράμματα Ο/Σ, αλλά απλώς σχεδιάζουν τα σχήματα χωρίς να αντιλαμβάνονται τη σημασία τους ή να παράγουν SQL.
- Kivio
- Dia
Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ Allen Kent, Harold Lancour, William Z. Nasri, Jay E. Daily, Encyclopedia of Library and Information Science, CRC Press, 1968, σελ 90, ISBN 9780824720650
- ↑ γίνεται αντιληπτό μόνο ως ιδέα, υπάρχει μόνο στη νόηση, μη πραγματικό, νοητό
- ↑ Zongmin Ma, Fuzzy Database Modeling of Imprecise and Uncertain Engineering Information, Birkhäuser, 2006, σελ. 2, ISBN 9783540306757
- ↑ Shan Wang, Conceptual Modeling for Advanced Application Domains, Springer, 2004, σελ. 392, ISBN 9783540237228
- ↑ 5,0 5,1 5,2 Richard C. Dorf, The Electrical Engineering Handbook, CRC Press, 1997, σελ. 2184,ISBN 9780849385742
- ↑ Bhavani M. Thuraisingham, Data Mining, CRC Press, 1999, σελ. 25, ISBN 9780849318153
- ↑ Η ονομασία προέρχεται από τη φράση "is a", που σημαίνει "είναι μια" (εννοείται υπόκλαση/υπέρκλαση).
- ↑ «ER2SQL website». Αρχειοθετήθηκε από το πρωτότυπο στις 22 Δεκεμβρίου 2015. Ανακτήθηκε στις 21 Δεκεμβρίου 2015.