3.3.2

3.3.2. Συσχετίσεις μεταξύ Οντοτήτων - Τύποι Συσχετίσεων
Ποια είναι η σχέση ανάμεσα σε εσάς και την θεία σας, τον θείο σας, τα ξαδέλφια σας, τη γιαγιά σας κλπ; Πώς θα μπορούσατε να εξηγήσετε σε κάποιον τρίτο ότι η Ιωάννα είναι ξαδέλφη σας; Είναι απαραίτητο για την κοινωνία μας να κατηγοριοποιεί τις σχέσεις μεταξύ των ανθρώπων ή της αρκεί να αναγνωρίζει τα άτομα μόνο με το όνομά τους; Για παράδειγμα, φανταστείτε ότι θέλετε να συστήσετε σε κάποιον την ξαδέλφη σας την Ιωάννα, χωρίς την αναφορά της λέξης «ξαδέλφη» ή κάποια άλλη παρεμφερή. Θα λέγατε τότε «Αυτή είναι η Ιωάννα, το παιδί της γυναίκας που έχει τους ίδιους γονείς με τους γονείς μου». Πολύ μεγάλη εισαγωγή και κουραστική. Δεν θα ήταν προτιμότερο να πείτε «Αυτή είναι η Ιωάννα, η κόρη της θείας μου» ή πιο απλά ακόμη «Αυτή είναι η Ιωάννα, ξαδέλφη μου»;

Το παραπάνω καθημερινό παράδειγμα των οικογενειακών σχέσεων συναντάται και στον χώρο των επιχειρήσεων και των οργανισμών. Γενικά, οι **σχέσεις (relationships)** μας βοηθούν να δούμε πώς τα διάφορα μέρη ενός συστήματος επηρεάζουν το ένα το άλλο. Για παράδειγμα, οι οντότητες ΜΑΘΗΤΗΣ (STUDENT) και ΜΑΘΗΜΑ (COURSE) συνδέονται μεταξύ τους. Κάθε μαθητής μπορεί να επιλέξει, για παράδειγμα το μάθημα «Εφαρμογές Πληροφορικής». Για να μοντελοποιήσουμε με ακρίβεια την επιχείρηση ή τον οργανισμό, οι σχέσεις μεταξύ των οντοτήτων είναι εξίσου σημαντικές με τις ίδιες τις οντότητες.

Στη συνέχεια παραθέτουμε κάποια παραδείγματα σχέσεων μεταξύ διαφόρων οντοτήτων:


 * Οι ΕΡΓΑΖΟΜΕΝΟΙ έχουν ΘΕΣΕΙΣ ΕΡΓΑΣΙΑΣ
 * Οι ΘΕΣΕΙΣ ΕΡΓΑΣΙΑΣ κατέχονται από ΕΡΓΑΖΟΜΕΝΟΥΣ
 * Τα ΠΡΟΪΟΝΤΑ κατατάσσονται σύμφωνα με τον ΤΥΠΟ ΤΟΥ ΠΡΟΪΟΝΤΟΣ
 * Ο ΤΥΠΟΣ ΤΟΥ ΠΡΟΪΟΝΤΟΣ αποτελεί μια κατηγοριοποίηση για ένα ΠΡΟΪΟΝ
 * Οι ΑΝΘΡΩΠΟΙ κάνουν ΚΡΑΤΗΣΕΙΣ ΕΙΣΙΤΗΡΙΩΝ
 * Οι ΚΡΑΤΗΣΕΙΣ ΕΙΣΙΤΗΡΙΟΥ γίνονται από ΑΝΘΡΩΠΟΥΣ

Οι σχέσεις είναι χαρακτηρίζονται ως **υποχρεωτικές (mandatory)** ή **προαιρετικές (optional)**. Θεωρήστε τις δύο οντότητες ΕΡΓΑΖΟΜΕΝΟΣ (EMPLOYEE) και ΘΕΣΗ ΕΡΓΑΣΙΑΣ (JOB). Για να μπορέσουμε να καθορίσουμε το είδος της σχέσης που διέπει τις παραπάνω οντότητες θα πρέπει να απαντήσουμε στα παρακάτω δύο ερωτήματα:


 * Πρέπει κάθε εργαζόμενος να έχει μια θέση εργασίας; Με άλλα λόγια, αυτό είναι ένα υποχρεωτικό ή προαιρετικό για κάθε εργαζόμενο;
 * Πρέπει κάθε θέση εργασίας να αντιστοιχεί σε έναν υπάλληλο; Με άλλα λόγια, αυτό είναι ένα υποχρεωτικό ή προαιρετικό για κάθε θέση εργασίας;

Σε μία σχέση ένα ή περισσότερα στιγμιότυπα μιας οντότητας μπορούν ή πρέπει να συσχετισθούν με ένα στιγμιότυπο της άλλης οντότητας. Το αν θα είναι ένα ή περισσότερα στιγμιότυπα εκφράζει αυτό που ονομάζουμε ως **πληθάριθμος (cardinality)** μιας σχέσης. Ο πληθάριθμος μιας σχέσης μετράει την ποσότητα από κάτι, απαντάει δηλαδή στην ερώτηση «Πόσα;». Για παράδειγμα:
 * Σε πόσες θέσεις εργασίας μπορεί ένας υπάλληλος να εργάζεται; Σε μία θέση εργασίας μόνο ή σε περισσότερες από μία;
 * Πόσοι υπάλληλοι μπορούν να κατέχουν μια συγκεκριμένη θέση εργασίας; Ένας υπάλληλος μόνο ή περισσότεροι από έναν εργαζόμενο;

Ο πληθάριθμος μιας σχέσης απαντάει στο ερώτημα αν το πλήθος είναι ένα ή περισσότερα από ένα. Δεν δίνει απάντηση με ένα συγκεκριμένο πλήθος για παράδειγμα τέσσερα (4).

Οι παραπάνω ερωτήσεις είναι πολύ σημαντικές και έχουν αντίκτυπο στον σχεδιασμό της βάσης δεδομένων και συγκεκριμένα στο μοντέλο συσχετίσεων οντοτήτων. Στο προαναφερθέν παράδειγμα επιλέγουμε τις παρακάτω παραδοχές για τις οποίες θα δούμε στην επόμενη ενότητα πώς απεικονίζονται με διαγραμματικό τρόπο:
 * Κάθε εργαζόμενος **υποχρεωτικά (mandatory)** πρέπει να έχει **ακριβώς μία (cardinality)** θέση εργασίας.
 * Μια θέση εργασίας **μπορεί (optionality**) να κατέχεται από **περισσότερους από έναν εργαζόμενους (cardinality)**. Δηλαδή για μία θέση εργασίας μπορεί να έχουμε κανέναν, έναν ή περισσότερους από έναν εργαζόμενους.

Γενικά, τα μοντέλα οντοτήτων συσχετίσεων χρησιμοποιούν τρεις τύπους σχέσεων:


 * **Ένα προς πολλά 1:M**
 * **Πολλά προς πολλά M:Μ**
 * **Ένα προς ένα 1:1**

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

Ένας ζωγράφος ζωγραφίζει πολλούς πίνακες, αλλά κάθε πίνακας αποτελεί δημιούργημα ενός μόνο ζωγράφου. Η σχέση «Ο ζωγράφος ζωγραφίζει πίνακες» είναι μία σχέση «ένα προς πολλά». Το «ένα» είναι από την πλευρά της οντότητας «ΖΩΓΡΑΦΟΣ», ενώ το «πολλά» είναι από την πλευρά της οντότητας «ΠΙΝΑΚΑΣ».
 * Ένα προς πολλά 1:M

Ένας εργαζόμενος μπορεί να μάθει πολλές δεξιότητες και κάθε δεξιότητα μπορεί να κατακτηθεί από πολλούς εργαζόμενους. Η σχέση «Ο εργαζόμενος μαθαίνει μία δεξιότητας» είναι μία σχέση «πολλά προς πολλά». Το «πολλά» είναι και από την πλευρά της οντότητας «ΕΡΓΑΖΟΜΕΝΟΣ», αλλά και από την πλευρά της οντότητας «ΔΕΞΙΟΤΗΤΑ».
 * Πολλά προς πολλά M:Μ

Μία εταιρεία λιανικού εμπορίου αναθέτει την διαχείριση για κάθε ένα από τα καταστήματά της σε ένα υπάλληλο. Κάθε υπεύθυνος καταστήματος διευθύνει ένα μόνο κατάστημα. Η σχέση «Ο εργαζόμενος διευθύνει ένα κατάστημα» είναι μία σχέση «ένα προς ένα». Το «ένα» είναι και από την πλευρά της οντότητας «ΕΡΓΑΖΟΜΕΝΟΣ», αλλά και από την πλευρά της οντότητας «ΚΑΤΑΣΤΗΜΑ».
 * Ένα προς ένα 1:1

Επιπλέον **περιορισμοί** που έχουν να κάνουν με τους κανόνες που διέπουν μία επιχείρηση ή έναν οργανισμό, όπως για παράδειγμα οι βαθμοί ενός μαθητή πρέπει να κυμαίνονται μεταξύ 8 και 20, δεν μπορούν να αναπαρασταθούν από έναν εννοιολογικό μοντέλο. Στην περίπτωση αυτή χρειάζεται να γραφτεί κώδικας που θα ικανοποιεί τις απαιτήσεις της επιχείρησης ή του οργανισμού.

**Ερωτήσεις / Δραστηριότητες** Προσδιορίστε τους διάφορους τύπους σχέσεων από τις παρακάτω προτάσεις:
 * Δραστηριότητα**: Αναγνώριση Τύπων Συσχετίσεων
 * Ένας εκπαιδευτής σκι μπορεί να εκπαιδεύσει έναν ή περισσότερους σκιέρ
 * Ένα ποδήλατο μπορεί να ανήκει σε ένα παιδί
 * Οι μαρκαδόροι μπορούν να χρησιμοποιηθούν από όλους τους μαθητές της τάξης
 * Ένα διαβατήριο ανήκει σε ένα πρόσωπο
 * Ένα θηλυκός ελέφαντας γεννάει έναν μικρό ελέφαντα