3.5.1

3.5.1 Εισαγωγή στις έννοιες των Σχεσιακών Βάσεων Δεδομένων
Το επόμενο βήμα στον σχεδιασμό των βάσεων δεδομένων αποτελεί ο μετασχηματισμός του μοντέλου οντοτήτων συσχετίσεων στο σχεσιακό μοντέλο. Αυτό σημαίνει ότι οι οντότητες, τα γνωρίσματα, οι συσχετίσεις και τα μοναδικά αναγνωριστικά του ER διαγράμματος που γνωρίσαμε στις προηγούμενες υποενότητες θα μετατραπούν στα αντίστοιχα «αντικείμενα» του σχεσιακού μοντέλου.

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

Ας μελετήσουμε τώρα την δομή του σχεσιακού μοντέλου. Ένα σχεσιακό μοντέλο μπορεί να ειδωθεί ως ένα σύνολο από δισδιάστατους πίνακες. Στους δισδιάστατους αυτούς πίνακες οργανώνονται και αποθηκεύονται τα δεδομένα. Στο παρακάτω σχήμα παρουσιάζεται ο πίνακας ΕΡΓΑΖΟΜΕΝΟΙ, όπου αποθηκεύονται πληροφορίες σχετικά με τους εργαζόμενους.

Σχήμα 3.5.1: Πίνακας ΕΡΓΑΖΟΜΕΝΟΙ

Κάθε πίνακας περιέχει γραμμές και στήλες. Κάθε γραμμή περιγράφει και έναν εργαζόμενο ή ένα στιγμιότυπο της οντότητας ΕΡΓΑΖΟΜΕΝΟΣ. Οι γραμμές του πίνακα είναι τέσσερις. Όσοι και οι εργαζόμενοι. Κάθε στήλη χρησιμεύει για να αποθηκεύει συγκεκριμένο τύπο τιμών όπως είναι ο κωδικός του εργαζόμενου, το ονοματεπώνυμό του και ο κωδικός του τμήματος στο οποίο εργάζεται.

Το **πρωτεύoν κλειδί (primary key (PK))** είναι μία στήλη ή ένας συνδυασμός από στήλες που προσδιορίζει με μοναδικό τρόπο κάθε γραμμή του πίνακα. Στο παρακάτω σχήμα, το πρωτεύoν κλειδί του πίνακα ΕΡΓΑΖΟΜΕΝΟΙ είναι ο κωδικός του εργαζόμενου δηλαδή η στήλη Κωδικός_Εργαζομένου. Αυτό σημαίνει ότι δεν μπορούμε να έχουμε δύο εργαζόμενους με τον ίδιο κωδικό. Κάθε εργαζόμενος προσδιορίζεται από ένα μη μηδενικό κωδικό ο οποίος είναι μοναδικός για τον εργαζόμενο αυτόν.

Σχήμα 3.5.2: Το πρωτεύον κλειδί του πίνακα ΕΡΓΑΖΟΜΕΝΟΙ είναι η στήλη Κωδικός_Εργαζομένου

Αντίθετα στον πίνακα ΛΟΓΑΡΙΑΣΜΟΙ το πρωτεύoν κλειδί είναι ο συνδυασμός του κωδικού της τράπεζας και του κωδικού του λογαριασμού. Στην περίπτωση αυτή, δεν αρκεί μόνο μία στήλη για να προσδιοριστεί μοναδικά κάθε λογαριασμός. Διότι είναι δυνατό σε δύο διαφορετικές τράπεζες όπως συμβαίνει στην πρώτη και πέμπτη γραμμή του πίνακα, ο κωδικός λογαριασμού να είναι ο ίδιος. Άρα, χρειαζόμαστε και μία δεύτερη στήλη για να προσδιορίσουμε το πρωτεύoν κλειδί. Αυτή η δεύτερη στήλη είναι ο κωδικός της τράπεζας.

Σχήμα 3.5.3: Το πρωτεύον κλειδί του πίνακα ΛΟΓΑΡΙΑΣΜΟΙ είναι ο συνδυασμός των στηλών Κωδικός_Τράπεζας και Κωδικός_Λογαριασμού

Ένα **ξένο κλειδί (foreign key (FK))** είναι μία στήλη ή ένας συνδυασμός από στήλες ενός πίνακα που μας επιτρέπει να «συνδεθούμε» με μία γραμμή ενός άλλου πίνακα. Για παράδειγμα στο παρακάτω σχήμα από τον πίνακα ΕΡΓΑΖΟΜΕΝΟΙ (EMPLOYESS) γνωρίζουμε ότι Jennifer Whalen εργάζεται στο τμήμα με κωδικό 10. Αν θέλουμε να μάθουμε περισσότερα για το τμήμα στο οποίο εργάζεται η Jennifer Whalen, θα αναζητήσουμε στον πίνακα ΤΜΗΜΑΤΑ (DEPARTMENTS) εκείνη την γραμμή του πίνακα που έχει DEPARTMENT_ID το 10. Το τμήμα με κωδικό 10 έχει όνομα Administration. Άρα, η Jennifer Whalen εργάζεται στο τμήμα Administration.

Πρέπει να σημειώσουμε ότι το DEPARTMENT_ID ορίζεται ως το πρωτεύoν κλειδί για τον πίνακα ΤΜΗΜΑΤΑ (DEPARTMENTS) ενώ για τον πίνακα ΕΡΓΑΖΟΜΕΝΟΙ (EMPLOYEES) ο κωδικός τμήματος DEPARTMENT_ID ορίζεται ως το ξένο κλειδί. Κάθε τιμή της στήλης DEPARTMENT_ID του πίνακα ΕΡΓΑΖΟΜΕΝΟΙ (EMPLOYEES) πρέπει να «ταιριάζει» με μία τιμή από την στήλη DEPARTMENT_ID του πίνακα ΤΜΗΜΑΤΑ (DEPARTMENTS).

Οι δύο αυτές λοιπόν συσχετιζόμενες μεταξύ τους πληροφορίες «Jennifer Whalen» και «Administration» βρίσκονται σε διαφορετικούς πίνακες και η εύρεση της συσχέτισής τους γίνεται μέσω των ξένων και πρωτευόντων κλειδιών των αντίστοιχων πινάκων.

Σχήμα 3.5.4: Το ξένο κλειδί ενός πίνακα «συνδέεται» με το πρωτεύον κλειδί ενός άλλου πίνακα

**Ερωτήσεις / Δραστηριότητες**

Δίνεται το παρακάτω σχεσιακό μοντέλο. Παρατηρείτε λάθη στο σχεσιακό αυτό μοντέλο;
 * Δραστηριότητα**: Παραβίαση κανόνων

Σχήμα 3.5.5: Σχεσιακό μοντέλο

Δίνεται το παρακάτω σχεσιακό μοντέλο. Προσπαθήστε να απαντήσετε στις παρακάτω ερωτήσεις:
 * Δραστηριότητα**: Μελέτη σχεσιακού μοντέλου
 * Ο εργαζόμενος Πέτρος Θεοδώρου σε ποιο τμήμα δουλεύει;
 * Στο εμπορικό τμήμα πόσοι εργαζόμενοι απασχολούνται;
 * Ο εργαζόμενος με κωδικό 100 σε ποιο τμήμα δουλεύει;

Σχήμα 3.5.6: Σχεσιακό μοντέλο