====== Οντότητα ====== * Αντικείμενο με φυσική ύπαρξη (π.χ. ένας μαθητής) ή αντικείμενο εννοιολογικά υπαρκτό (π.χ. μάθημα). * Κάθε οντότητα έχει ένα //όνομα//. * Κάθε οντότητα έχει **ιδιότητες** που την περιγράφουν (π.χ. η οντότητα //Μαθητής// έχει Επώνυμο, Όνομα, Ημερομηνία γέννησης, κλπ). * Στις σχεσιακές ΒΔ αναπαριστώνται με πίνακες όπου κάθε //πεδίο// (στήλη) του πίνακα αντιστοιχεί σε μια ιδιότητα της οντότητας. * Μια συγκεκριμένη οντότητα αντιστοιχεί σε μια //εγγραφή// (γραμμή) έχει μια τιμή για κάθε μία από τις ιδιότητές της (π.χ., Επώνυμο = «Παπαδόπουλος»). Για παράδειγμα, η οντότητα //Μαθητής// έχει τις ιδιότητες: Επώνυμο, Όνομα, Ημερομηνία Γέννησης, Πατρώνυμο, Υπηκοότητα κ.α. Οι ιδιότητες αυτές αναπαρίστανται σε πίνακα ως εξής: ^ Επώνυμο ^ Όνομα ^ Ημερομηνία Γέννησης ^ Πατρώνυμο ^ Υπηκοότητα ^ |Παπαδόπουλος |Δημήτρης | 25/6/1995 | Νικόλαος |Ελληνική | ===== Ακεραιότητα Δεδομένων ===== Για κάθε ιδιότητα της οντότητας ορίζουμε τον τύπο δεδομένων της. Αυτό βοηθάει τη βάση στο να κάνει έλεγχο των δεδομένων του χρήστη. Οι τύποι δεδομένων που χρησιμοποιούμε είναι: * **Κείμενο**. Μέχρι 255 χαρακτήρες. Το χρησιμοποιούμε όταν έχουμε κείμενο ή κείμενο μαζί με αριθμούς, π.χ. ΖΑΑ6522 * **Υπόμνημα**. Κείμενο χωρίς περιορισμό μεγέθους. * **Αριθμός**. Μόνο αριθμός, ακέραιος ή δεκαδικός, θετικός ή αρνητικός. Όταν ένα πεδίο είναι αριθμός μπορεί να συμμετέχει σε μαθηματικές πράξεις. * **Νομισματική Μονάδα**. Πρακτικά είναι αριθμός αλλά μορφοποιείται ώστε να εμφανίζει το σύμβολο του νομίσματος και δύο δεκαδικές θέσεις, π.χ. 32,14€ * **Ημερομηνία / Ώρα**. Μπορεί να κρατήσει ημερομηνία, ώρα ή ημερομηνία και ώρα. * **Ναι / Όχι**. Χρησιμοποιείται σε όποια περίπτωση μπορούμε να απαντήσουμε με ναι/όχι, ισχύει/δεν ισχύει, αληθές/ψευδές. * **Συνημμένο**. Επιτρέπει να επισυνάψουμε ένα αρχείο στο πεδίο, π.χ. μια φωτογραφία. ===== Πρωτεύον Κλειδί ===== Κάθε πίνακας πρέπει να περιλαμβάνει μια στήλη ή σύνολο στηλών, που να προσδιορίζει μοναδικά κάθε γραμμή που είναι αποθηκευμένη στον πίνακα. Π.χ αριθμός μητρώου μαθητή, αριθμός κυκλοφορίας αυτοκινήτου. Στην ορολογία βάσης δεδομένων, αυτή η πληροφορία ονομάζεται **πρωτεύον κλειδί** του πίνακα. - Οι τιμές του πρέπει να είναι μοναδικές για κάθε εγγραφή. - Πρέπει να έχει πάντα μια τιμή. - Η τιμή του δε θα μεταβάλλεται. Σε περίπτωση που καμία ιδιότητα της οντότητας δεν πληροί τους παραπάνω περιορισμούς, προσθέτουμε μία ιδιότητα την οποία ονομάζουμε συνήθως με πρόθεμα //Κωδικός_// και το όνομα του πίνακα, π.χ. **Κωδικός_Πελάτη**. Στα παραδείγματα και στις ασκήσεις μας θα χρησιμοποιούμε πρωτεύον κλειδί που αποτελείται από μία στήλη και όχι σύνθετο (από πολλές στήλες). ==== Παράδειγμα ==== Στον πίνακα **Μαθητής** με ιδιότητες //Επώνυμο//, //Όνομα//, //Ημερομηνία Γέννησης//, //Πατρώνυμο//, //Υπηκοότητα// καμία απ' αυτές δε μπορεί να γίνει πρωτεύον κλειδί γιατί παραβιάζουν τον 1ο περιορισμό. Για το λόγο αυτό, προσθέτουμε μία στήλη που την ονομάζουμε Κωδικός_Μαθητή ή Αριθμός_Μητρώου. ^ Κωδικός_Μαθητή ^ Επώνυμο ^ Όνομα ^ Ημερομηνία Γέννησης ^ Πατρώνυμο ^ Υπηκοότητα ^ | 1 |Παπαδόπουλος |Δημήτρης | 25/6/1995 | Νικόλαος |Ελληνική | | 2 |Παπαδόπουλος |Μιχάλης | 15/9/1995 | Γεώργιος |Ελληνική | | 3 |Οικονόμου |Δημήτρης | 25/6/1995 | Νικόλαος |Ελληνική | ===== Άσκηση: Ακεραιότητα Δεδομένων - Πρωτεύον Κλειδί ===== FIXME ===== Άσκηση: Αναγνώριση Οντοτήτων - Ιδιοτήτων ===== Για τη διαχείριση των επαφών σε ένα τηλέφωνο, ο προγραμματιστής σχεδιάζει να χρησιμοποιήσει μια σχεσιακή ΒΔ. Συγκεκριμένα θα καταχωρεί: * Επαφές που θα εισάγει ο χρήστης. Για κάθε επαφή ενδιαφέρουν τα στοιχεία επώνυμο, όνομα, ψευδώνυμο, ημερομηνία γέννησης, σημειώσεις. * Τηλέφωνα που αντιστοιχούν σε κάθε επαφή. Για κάθε τηλέφωνο ενδιαφέρουν το νούμερο και ο τύπος του. Συνήθεις τύποι είναι: προσωπικό, οικίας, εργασίας, fax - Αναγνωρίστε και ονομάστε τις οντότητες. - Προσδιορίστε τις ιδιότητες κάθε οντότητας. - Προσδιορίστε το πρωτεύον κλειδί κάθε οντότητας. - Δηλώστε τον τύπο κάθε ιδιότητας. - Για κάθε οντότητα φτιάξτε τον πίνακά της. - Εισάγετε μερικές ενδεικτικές εγγραφές σε κάθε πίνακα.