Μοντέλο Οντοτήτων-Συσχετίσεων

Το **μοντέλο οντοτήτων-συσχετίσεων** (***μοντέλο Ο/Σ*** - ***ER model***) είναι ένα αφαιρετικό ιδεατό
 μοντέλο δεδομένων, τα οποία έχουν καθορισμένη δομή. Στη μηχανική λογισμικού χρησιμοποιείται για να παρέχει ένα εννοιολογικό σχήμα κατά τη σχεδίαση βάσεων δεδομένων, ως μοντέλο δεδομένων ενός συστήματος και των απαιτήσεών του με top-down προσέγγιση. Ένα διάγραμμα που δημιουργείται με αυτή τη διαδικασία σχεδίασης καλείται **διάγραμμα οντοτήτων-συσχετίσεων**, ή ***διάγραμμα Ο/Σ*** ή ***ΟΣΔ*** εν συντομία. Προτάθηκε αρχικά το 1976 από τον Peter Chen, ωστόσο στη συνέχεια επινοήθηκαν πολλές παραλλαγές της διαδικασίας.

## Χρήση

Χρησιμοποιείται στο πρώτο στάδιο σχεδίασης ενός συστήματος πληροφοριών, κατά την ανάλυση των απαιτήσεών του. Σκοπός του είναι να περιγράφει τις αναγκαίες πληροφορίες οι οποίες πρόκειται να αποθηκευτούν στη βάση δεδομένων ή τον τύπο τους. Η μοντελοποίηση δεδομένων γίνεται για την περιγραφή των χρησιμοποιούμενων όρων και των σχέσεών τους σε έναν ορισμένο τομέα ενδιαφέροντος. Στην περίπτωση σχεδιασμού ενός συστήματος πληροφοριών, που στηρίζεται σε μια βάση δεδομένων, το εννοιολογικό μοντέλο δεδομένων χαρτογραφείται σε προχωρημένο στάδιο σε ένα λογικό μοντέλο δεδομένων, όπως το σχεσιακό μοντέλο δεδομένων. Το στάδιο αυτό ονομάζεται συνήθως στάδιο λογικού σχεδιασμού. Ύστερα, κατά τη διάρκεια του φυσικού σχεδιασμού το λογικό μοντέλο χαρτογραφείται σε κάποιο φυσικό μοντέλο. Ορισμένες φορές και οι δύο φάσεις αναφέρονται ως "φυσικός σχεδιασμός".

## Σημειογραφία

Υπάρχουν διάφορες συμβάσεις για τη σημειογραφία που χρησιμοποιείται στα διαγράμματα οντότητων-συσχετίσεων (ERDs). Αρκετές φορές η σημειογραφία που υιοθετείται κατά το λογικό και φυσικό σχεδιασμό μιας βάσης δεδομένων διαφέρει ως προς τη σαφήνεια, τις δυνατότητες που έχει η γραφική γλώσσα, την υποστήριξη από πρότυπα και τα εργαλεία. Συνήθως για τις συσχετίσεις χρησιμοποιούνται ευθείες με διαφορετικές άκρες, ή με σημειώσεις που παριστάνουν την πληθικότητα του τύπου συσχέτισης.

Ιδιαίτερη - κυρίως ιστορική - σημασία έχουν οι παρακάτω σημειογραφίες:
*Η **σημειογραφία Chen**, του Peter Chen που δημιούργησε τα διαγράμματα το 1976.
*Η **σημειογραφία IDEF1X** ως de facto πρότυπο, χρησιμοποιούμενο για χρόνια από τις αρχές των ΗΠΑ.
*Η **σημειογραφία Martin** (πόδι του κόρακα) διαδεδομένη σε εργαλεία για διαγράμματα.
*Η **σημειογραφία του [[Charles Bachman]]**, σε εργαλεία διαγραμμάτων.
*Η **σημειογραφία (Min, max)**, του Jean Raymond Abrial το 1974.
*Η **[[UML|γλώσσα UML]]**, πρότυπο που χρησιμοποιείται ως αντικαταστάτης των διαγραμμάτων Ο/Σ.

## Όροι
Βάση για των μοντέλων Ο/Σ είναι η κατηγοριοποίηση αντικειμένων και των σχέσεών τους μεταξύ τους.

### Οντότητα

**Οντότητα** (entity) είναι ένα αντικείμενο ενδιαφέροντος στον πραγματικό κόσμο το οποίο ξεχωρίζει από τα υπόλοιπα. Μια οντότητα λειτουργεί αφαιρετικά σε έναν πολύπλοκο τομέα. Οντότητες μπορεί να είναι άνθρωποι, μέρη, αντικείμενα, γεγονότα, έννοιες κλπ. **Στιγμιότυπο** (instance) μιας οντότητας είναι μια συγκεκριμένη περίπτωση ενός τύπου οντότητας.

### Τύπος Οντότητας
Ο **τύπος** της οντότητας είναι μια συλλογή χαρακτηριστικών που περιγράφουν την οντότητα.

Οι διάφοροι τύποι οντοτήτων (π.χ. ΕΡΓΑΖΟΜΕΝΟΣ, ΦΟΙΤΗΤΗΣ) παριστάνονται στο διάγραμμα Ο/Σ με ένα ορθογώνιο.

### Χαρακτηριστικό

thumb|400px|Ένας φοιτητής μπορεί να έχει το πεδίο ΜΑΘΗΜΑ, το οποίο όμως δέχεται ως τιμές ένα σύνολο μαθημάτων που παρακολουθεί.
Κάθε οντότητα έχει διάφορα στοιχεία που την προσδιορίζουν. Ένα τέτοιο στοιχείο ονομάζεται **ιδιότητα** (attribute), **χαρακτηριστικό** ή **πεδίο** της οντότητας. Τα χαρακτηριστικά χωρίζονται σε
***μονότιμα** (single valued), τα οποία έχουν μόνο μια τιμή και
***πλειότιμα** (multi-valued), τα οποία έχουν σύνολο από τιμές

Στο διάγραμμα Ο/Σ οι ιδιότητες που έχει μια οντότητα παριστάνονται μέσα σε έλλειψη, με υπογραμμισμένο το πρωτεύον κλειδί. Τα πλειότιμα χαρακτηριστικά μιας οντότητας παριστάνονται μέσα σε έλλειψη με διπλό περίγραμμα.

### Συσχέτιση

thumb|400px|Η συσχέτιση σε αυτό το παράδειγμα ονομάζεται "Παρακολουθεί". Τα βέλη δείχνουν μια συσχέτιση πολλά-προς-πολλά. Κάθε φοιτητής μπορεί να παρακολουθεί ένα ή περισσότερα μαθήματα. Κάθε μάθημα μπορεί να παρακολουθείται από έναν ή περισσότερους μαθητές. Από τη σχέση αυτή μπορούμε να βρούμε ποιοι φοιτητές παρακολουθούν ένα μάθημα ή ποια μαθήματα παρακολουθεί ένας φοιτητής.
**Συσχέτιση** (relationship) είναι η σύνδεση δύο ή περισσότερων τύπων οντοτήτων που παρουσιάζει ενδιαφέρον για σχεδιασμό. Με συσχετίσεις μπορούν να συνδέονται και χαρακτηριστικά οντοτήτων.

Ένας τύπος συσχέτισης (σύνολο συσχετίσεων) παριστάνεται με ρόμβο. Στο εσωτερικό αναγράφεται το όνομα με μικρά γράμματα.

Υποδεικνύουμε τα όρια της συσχέτισης με ένα δείκτη.

Ως όρια μπούμε να συναντήσουμε:
;0 έως άπειρο:(κατώτατο όριο 0, ανώτατο όριο άπειρο)
;τουλάχιστον 1:(κατώτατο όριο 1, ανώτατο όριο άπειρο)
;ακριβώς 1:(κατώτατο όριο 1, ανώτατο όριο 1)
;το πολύ 1:(κατώτατο όριο 0, ανώτατο όριο 1)

### Βαθμός ή πολυπλοκότητα ενός τύπου συσχετίσεων

thumb|400px|Βαθμός συσχέτισης: 3 (Οι τύποι οντοτήτων ΠΡΟΜΗΘΕΥΤΗΣ, ΠΕΛΑΤΗΣ και ΠΡΟΪΟΝ παίρνουν μέρος στη συσχέτιση)
Ο βαθμός μιας συσχέτισης είναι ο αριθμός των τύπων οντοτήτων που παίρνουν μέρος στη συσχέτιση. Οι πιο συνηθισμένες συσχετίσεις είναι
*μοναδικές, ο βαθμός τους τότε είναι 1
*δυαδικές, ο βαθμός τους τότε είναι 2
*τριαδικές, ο βαθμός τους τότε είναι 3

### Πληθικότητα
Η **πληθικότητα** (cardinality), περιγράφει τον αριθμό στιγμιοτύπων ενός τύπου οντοτήτων που μπορούν να αντιστοιχίζονται με μία οντότητα ενός άλλου τύπου σε μια συσχέτιση.

Ο **λόγος πληθικότητας** ή **πληθικός λόγος** (cardinality ratio), είναι ο λόγος των πληθικοτήτων μιας συσχέτισης.

Μπορούμε να έχουμε συσχετίσεις με λόγο πληθικότητας:
;1-1 (ένα-προς-ένα)
:Αντιστοιχίζεται μια οντότητα ενός τύπου με το πολύ ή ακριβώς μια οντότητα ενός άλλου τύπου.
;1-Ν (ένα-προς-πολλά)
:Αντιστοιχίζεται μια οντότητα ενός τύπου με κανένα, ένα ή πολλά στιγμιότυπα ενός άλλου τύπου.
;Μ-Ν (πολλά-προς-πολλά)
:Αντιστοιχίζεται κάθε στιγμιότυπο του ενός τύπου με ένα, κανένα ή πολλά στιγμιότυπα του άλλου τύπου.

### Ασθενής Τύπος Οντότητας
**Αδύναμη** ή ασθενής οντότητα λέγεται μια οντότητα που εξαρτάται από την ύπαρξη κάποιας άλλης. Οι αδύναμες οντότητες συμμετέχουν σε συσχετίσεις μέσω ταυτοποιητικών συσχετίσεων με ισχυρή οντότητα.

**Ταυτοποιητική συσχέτιση** ονομάζεται η συσχέτιση στην οποία το πρωτεύον κλειδί της ισχυρής οντότητας χρησιμοποιείται ως μέρος του πρωτεύοντος κλειδιού της αδύναμης οντότητας.

**Διακριτικό ή μερικό κλειδί** ονομάζεται το χαρακτηριστικό της αδύναμης οντότητας το οποίο μαζί με το πρωτεύον κλειδί της ισχυρής οντότητας είναι το πρωτεύον κλειδί της αδύναμης.

Κατά την αναπαράσταση αδύναμων οντοτήτων:
*η οντότητα παριστάνεται με διπλό ορθογώνιο
*ταυτοποιητική συσχέτιση με διπλό ρόμβο
*το μερικό κλειδί με διακεκομμένη γραμμή

### Επαναλαμβανόμενες ομάδες
Μια **επαναλαμβανόμενη ομάδα** είναι ένα σύνολο δύο ή περισσότερων πλειότιμων γνωρισμάτων που έχουν μια λογική σχέση μεταξύ τους.

### Πλειότιμα χαρακτηριστικά
Είδαμε ότι τα πλειότιμα χαρακτηριστικά παριστάνονται με μια διπλή έλλειψη. Ωστόσο, στην **ιδανική** περίπτωση πλειότιμα χαρακτηριστικά πρέπει να αφαιρούνται από το μοντέλο δεδομένων κατά τη φάση σχεδίασης. Με τον τρόπο αυτό, η σχέση βρίσκεται σε δεύτερη κανονική μορφή.

Για να επιτύχουμε κάτι τέτοιο στο μοντέλο Ο/Σ προσθέτουμε μια ακόμη συσχέτιση.

### Υποκλάσεις και υπερκλάσεις
#### Γενίκευση / Εξειδίκευση
Με την έννοια **γενίκευση** (generalization) εννοούμε τον εντοπισμό ενός συνόλου οντοτήτων (κλάση) που έχουν κοινά χαρακτηριστικά με πιο γενικευμένα αντικείμενα (υπέρκλαση). Η **εξειδίκευση** (specialization) είναι το ακριβώς αντίθετο της γενίκευσης, δηλαδή ο εντοπισμός υποσυνόλων ενός τύπου οντοτήτων με κοινά χαρακτηριστικά, τα οποία τα διαφοροποιούν από τα υπόλοιπα μέλη του.

Η συσχέτιση μεταξύ κάθε υπόκλασης και υπέρκλασης ονομάζεται ISA συσχέτιση.

### Κληρονομικότητα
Σε κάθε επίπεδο της ιεραρχίας οι τύποι οντοτήτων κληρονομούν τα χαρακτηριστικά των τύπων του αμέσως ανώτερου επιπέδου.

### Περιορισμός Επικάλυψης

Όταν υπάρχει περιορισμός επικάλυψης μια οντότητα δεν επιτρέπεται να ανήκει ταυτόχρονα σε δύο υποκλάσεις. (exclusive subtypes)

Ο περιορισμός επικάλυψης συμβολίζεται με μια καμπύλη γραμμή στο διάγραμμα Ο/Σ, που τέμνει την ακμή του τύπου οντοτήτων με κάθε ISA συσχέτιση.

Υπάρχει όμως περίπτωση να μην ισχύει κανένας περιορισμός. Στην περίπτωση αυτή ένα στιγμιότυπο μπορεί να ανήκει σε περισσότερες από μια υποκλάσεις. (non-exclusive subtypes)

## Εργαλεία ελεύθερου λογισμικού για διαγράμματα Ο/Σ

Εργαλεία που δέχονται SQL και μπορούν να παράγουν μοντέλα Ο/Σ ή και να κάνουν ανάλυση σε βάσεις δεδομένων.

* BrModelo
* DBDesigner-Fork
* ER2SQL
* Ferret
* Gliffy
* ModelRight
* Mogwai ERDesigner NG
* MySQL Workbench
* Open System Architect
* Power*Architect
* StarUML

Τα παρακάτω εργαλεία δεν δημιουργούν διαγράμματα Ο/Σ, αλλά απλώς σχεδιάζουν τα σχήματα χωρίς να αντιλαμβάνονται τη σημασία τους ή να παράγουν SQL.

* Kivio
* Dia

## Παραπομπές


Κατηγορία:Βάσεις δεδομένων
Κατηγορία:Διαγράμματα