Βάσεις Δεδομένων/Μοντέλο Οντοτήτων-Συσχετίσεων

Από Βικιεπιστήμιο


Οντότητες και Γνωρίσματα[επεξεργασία]

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

Τα δεδομένα τα οποία θα αποθηκευτούν σε κάποια οντότητα του μοντέλου οντοτήτων-σχέσεων, αντιστοιχούν στις εγγραφές στο φυσικό επίπεδο μίας Βάσης Δεδομένων. Έτσι η οντότητα, θα πρέπει να έχει κάποιο όνομα, και κάποια στοιχεία που να καθορίζουν τα χαρακτηριστικά της συγκεκριμένης οντότητας.

Ας δούμε τώρα ένα παράδειγμα:

Έστω ότι έχουμε να εξετάσουμε ένα νοσοκομείο. Το νοσοκομείο αποτελείται από κλινικές στις οποίες εργάζονται γιατροί. Σε κάθε κλινική νοσηλεύονται ασθενείς. Τα στοιχεία που χαρακτηρίζουν κάθε κλινική είναι η ονομασία της, το όνομα του διεθυντή, ο αριθμός των ασθενών, ο αριθμός των κρεβατιών και ο αριθμός των γιατρών. Επίσης κάθε γιατρός, χαρακτηρίζεται από το όνομα του, το επώνυμο του, το πατρώνυμο, το Α.Φ.Μ του, την ειδικότητα, την ημερομηνία γέννησης του, και τα χρόνια προϋπηρεσίας του. Τέλος, ο ασθενής χαρακτηρίζεται από το όνομά του, το επίθετό του, το πατρώνυμό του, την ημερομηνία γέννησης, την ημερομηνία εισαγωγής και την ασθένεια που διαγνώστηκε.

Με όσα έχουμε πει σχετικά με το μοντέλο οντοτήτων-σχέσεων, θα μπορούσαμε να εντοπίσουμε τρεις οντότητες στο παράδειγμα:

  • Κλινική
  • Γιατρός
  • Ασθενής

Τα γνωρίσματα για κάθε οντότητα είναι τα εξής:

  • Για την οντότητα "Κλινική" η ονομασία, το όνομα του διεθυντή, ο αριθμός των ασθενών, ο αριθμός των κρεββατιών και ο αριθμός των γιατρών.
  • Για την οντότητα "Γιατρός" το όνομα, το επώνυμο, το πατρώνυμο, η ειδικότητα, η ημερομηνία γέννησης, και τα χρόνια προϋπηρεσίας.
  • Για την οντότητα "Ασθενής" το όνομα, το επώνυμο, το πατρώνυμο, η ημερομηνία γέννησης, η ημερομηνία εισαγωγής, και η ασθένεια που διαγνώστηκε.

Με τον παραπάνω τρόπο έχουμε περιγράψει τη Βάση Δεδομένων που θα χρησιμοποιήσουμε για να συγκεντρώσουμε τα δεδομένα του παραδείγματος.

Κάθε οντότητα περιγράφει μια συγκεκριμένη κατηγορία εγγραφών τις οποίες μπορούμε να ομαδοποιήσουμε. Έτσι όταν θα αναφερόμαστε σε εγγραφές που εντάσσονται στην οντότητα "Κλινική" θα γνωρίζουμε ότι θα πρέπει να έχουν πεδία που αντιστοιχούν στα παραπάνω χαρακτηριστικά. Παραδείγματα τεσσάρων εγγραφών κλινικών είναι τα ακόλουθα:

  1. ("Ορθοπεδική", "Νικολάου", "15", "24", "2")
  2. ("Δερματολογική", "Βασιλείου", "3", "20", "2")
  3. ("Ογκολογική", "Χατζηγιάννης", "10", "20", "2")
  4. ("Παιδιατρική", "Παπαχατζάκης", "30", "85", "8")

Τα γνωρίσματα μπορεί να είναι απλά ή σύνθετα. Τα απλά γνωρίσματα δέχονται απλές τιμές από κάποιο πεδίο τιμών. Π.χ. το γνώρισμα ηλικία είναι απλό γνώρισμα της οντότητας φοιτητής με τιμές στο σύνολο των φυσικών αριθμών. Τα σύνθετα γνωρίσματα αποτελούνται από ένα αριθμό γνωρισμάτων τα οποία σαν σύνολο περιγράφουν μια ιδιότητα. Π.χ. Το γνώρισμα διεύθυνση αποτελείται από τα γνωρίσματα οδός, αριθμός, πόλη, τκ.

Τα γνωρίσματα επίσης διακρίνονται σε μονότιμα (single-valued) και πλειότιμα (multi-valued).

Πρωτεύοντα Κλειδιά[επεξεργασία]

Κλειδί για μία οντότητα του διαγράμματος οντοτήτων-σχέσεων είναι το σύνολο των γνωρισμάτων της οντότητας τα οποία είναι μοναδικά για κάθε εγγραφή και την διακρίνουν πλήρως από τις άλλες.Ας δούμε το παράδειγμα των γιατρών.Εαν πούμε ο γιατρός "Νικολάου" είναι επαρκές για να καταλάβουμε σε ποιόν γιατρό αναφερόμαστε;Θα μπορούσε να είναι, αλλά κατά κανόνα είναι πολύ πιθανό να υπάρχουν δύο γιατρούς με το ίδιο επώνυμο στο νοσοκομείο.Αντίθετα, το Α.Φ.Μ του κάθε γιατρού, είναι μοναδικό (γιατί έτσι επιβάλλει η εφορία!). Γι' αυτό το λόγο, αυτό το χαρακτηριστικό είναι πρωτεύον κλειδί για την οντότητα.

Σχέσεις Οντοτήτων[επεξεργασία]

Είναι φανερό ότι υπάρχει μια σχέση ανάμεσα στους γιατρούς και τις κλινικές. Κάθε κλινική επανδρώνεται από κάποιους γιατρούς. Άρα οι οντότητες μπορούν να έχουν σχέσεις μεταξύ τους. Για παράδειγμα, η ερώτηση "σε ποια κλινική εργάζεται ο Τάδε γιατρός;" είναι μια πολύ λογική ερώτηση στη Βάση Δεδομένων του παραδείγματος μας. Η ερώτηση αυτή δεν αφορά κάποια συγκεκριμένη οντότητα, αλλά τη σχέση δύο οντοτήτων. Δηλαδή η σχέση ανάμεσα σε οντότητες καθορίζει ένα σύνολο από συσχετισμούς ανάμεσα στις εγγραφές αυτών των δύο οντοτήτων.

ΚΑΤΗΓΟΡΙΕΣ ΣΧΕΣΕΩΝ

Οι σχέσεις διακρίνονται στις παρακάτω κατηγορίες:

  • Σχέσεις 1 προς 1
  • Σχέσεις ISA
  • Σχέσεις 1 προς Ν
  • Σχέσεις Ν προς Μ

Μερικά βιβλία δεν αναφέρουν καθόλου την σχέση ISA, γιατί θεωρείται απλά μια εξειδικευμένη μορφή της 1 προς 1 σχέσης.

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

Η σχέση 1 προς Ν σημαίνει ότι κάθε εγγραφή της πρώτης οντότητας σχετίζεται με πολλές εγγραφές της δεύτερης οντότητας, αλλά κάθε εγγραφή της δεύτερης οντότητας σχετίζεται μόνο με μία εγγραφή της πρώτης οντότητας. Στο παράδειγμά μας, ένας ασθενής εξετάζεται από ένα γιατρό, και κάθε γιατρός μπορεί να έχει πολλούς ασθενείς.

Η σχέση Ν προς Μ σημαίνει ότι πολλές εγγραφές κάθε οντότητας σχετίζονται με πολλές εγγραφές της άλλης. Για παράδειγμα, σε μια τράπεζα πολλοί πελάτες μπορούν να έχουν μια πιστωτική κάρτα, και ένας πελάτης μπορεί να έχει πολλές πιστωτικές.

Τέλος η σχέση ISA η οποία σημαίνει ότι η οντότητα μπορεί να κατηγοριοποιηθεί σε δύο (ή περισσότερες) υποοντότητες. Για παράδειγμα, σε ένα νοσοκομείο η οντότητα Γιατροί, μπορεί να κατηγοριοποιηθεί σε κλινικούς και εργαστηριακούς γιατρούς.

Δομικά Στοιχεία των Διαγραμμάτων[επεξεργασία]

Ισχυρές Οντότητες και Χαρακτηριστικά[επεξεργασία]

Μια οντότητα με ένα γνώρισμα κι ένα κλειδί

Η βασική ιδέα πίσω από τα διαγράμματα οντοτήτων συσχετίσεων, είναι να μπορούμε να έχουμε μια εικόνα της Βάσης Δεδομένων μας βλέποντας ένα σχέδιό της. Στο σχήμα φαίνεται μια οντότητα.

Οι οντότητες στο διάγραμμα οντοτήτων συσχετίσεων σχεδιάζονται ως παραλληλόγραμμα και το όνομα της μέσα στο παραλληλόγραμμο, ενώ τα χαρακτηριστικά αναπαριστάνονται σαν ελλείψεις, και το όνομα τους γράφεται μέσα στην έλλειψη. Όποιο χαρακτηριστικό είναι και πρωτεύων κλειδί υπογραμμίζεται.

Τέλος, οι σχέσεις αναπαριστάνονται σαν ρόμβοι, που μέσα αναγράφεται το όνομα της σχέσης.

Ασθενείς Οντότητες[επεξεργασία]

Οι ασθενείς οντότητες , είναι οντότητες οι οποίες δεν έχουν αυθύπαρκτη υπόσταση, δηλαδή εξαρτώνται από άλλες οντότητες για να υπάρξουν. Μια οντότητα Ε1 λέγεται ασθενής (weak) αν η ύπαρξη της εξαρτάται από μια άλλη οντότητα Ε2 μέσω μιας σχέσης R. H E2 λέγεται ισχυρή (strong) οντότητα.Οι ασθενείς οντότητες δεν έχουν δικά τους αναγνωριστικά γνωρίσματα, αλλά μπορούν να έχουν μερικά αναγνωριστικά (partial identifiers), δηλαδή ένα σύνολο γνωρισμάτων τα οποία καθορίζουν με μοναδικό τρόπο στιγμιότυπα της ασθενούς οντότητας που σχετίζονται με το ίδιο στιγμιότυπο της ισχυρής οντότητας. Τα αναγνωριστικά γνωρίσματα για τις ασθενείς οντότητες δημιουργούνται από τα αναγνωριστικά γνωρίσματα της ισχυρής οντότητας και τα μερικά αναγνωριστικά της ασθενούς οντότητας.