Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων Δρ. Θεοδώρου Παύλοσ theodorou@uoc.gr
Περιεχόμενα Τι είναι οι Βάςεισ Δεδομζνων (DataBases) Τι είναι Σφςτθμα Διαχείριςθσ Βάςεων Δεδομζνων (DBMS) Οι Στόχοι μιασ Βάςθσ Δεδομζνων Τα Στοιχεία μιασ Βάςθσ Δεδομζνων Μοντζλα Βάςεων Δεδομζνων Διαχειριςτισ Βάςθσ Δεδομζνων Πίνακεσ ςτθν Access: Κριτιρια και πϊσ κάνω ςυνδυαςμοφσ Κριτθρίων 2
Βάςεισ Δεδομένων (DataBases) Μια Βάση Δεδομζνων (DataBase) είναι ζνασ οργανωμζνοσ τρόποσ αποκικευςθσ πλθροφοριϊν και πρόςβαςισ τουσ με πολλοφσ τρόπουσ από διάφορα προγράμματα. Μια βάςθ δεδομζνων είναι κάτι παραπάνω από μια απλι ςυλλογι αποκθκευμζνων ςτοιχείων. 3
Σύστημα Διαχείρισης Βάσεων Δεδομένων (DBMS) Το Σύςτημα Διαχείριςησ Βάςεων Δεδομζνων (DBMS, DataBase Management System) είναι ζνα ςφνολο από προγράμματα που επιτρζπουν τον χειριςμό των δεδομζνων μιασ ι περιςςοτζρων βάςεων δεδομζνων που ανικουν ςτο ίδιο ςφςτθμα. Ζνα DBMS περιζχει κάποια εργαλεία γενικισ χριςθσ για να μποροφμε να δθμιουργοφμε και να χειριηόμαςτε τα δεδομζνα. 4
Στόχοι μιασ Βάςησ Δεδομένων Ο περιοριςμόσ τθσ πολλαπλισ αποκικευςθσ των ίδιων ςτοιχείων (redundancy). Ο καταμεριςμόσ (sharing) των ίδιων ςτοιχείων ς' όλουσ τουσ χριςτεσ. Η ομοιομορφία (uniformity) ςτον χειριςμό και τθν αναπαράςταςθ των δεδομζνων. Η επιβολι κανόνων αςφαλείασ (security). Η διατιρθςθ τθσ ακεραιότθτασ (integrity) και τθσ αξιοπιςτίασ (reliability) των δεδομζνων. Η ανεξαρτθςία των δεδομζνων (data independence) και των προγραμμάτων από τον φυςικό τρόπο αποκικευςθσ των δεδομζνων. 5
Τα Στοιχεία μιασ Βάςησ Δεδομένων Τα δεδομζνα μιασ βάςθσ δεδομζνων αποκθκεφονται (οργανϊνονται) ςτισ εξισ ςτοιχειϊδεισ μορφζσ : Πεδίο (Field), είναι το μικρότερο κομμάτι δεδομζνων ςτο οποίο μποροφμε να αναφερκοφμε και περιζχει ζνα μόνο χαρακτθριςτικό ενόσ ςτοιχείου τθσ βάςθσ δεδομζνων. Εγγραφι (Record), είναι ζνα ςφνολο από διαφορετικά πεδία που περιζχει όλεσ τισ πλθροφορίεσ για ζνα ςτοιχείο τθσ βάςθσ δεδομζνων. Αρχείο (File), είναι ζνα ςφνολο από πολλά παρόμοια ςτοιχεία (εγγραφζσ) τθσ βάςθσ δεδομζνων. Πρωτεφον Κλειδί (Primary Key), είναι ζνα πεδίο ι ςυνδυαςμόσ πεδίων που χαρακτθρίηει μοναδικά μια εγγραφι. Ξζνο Κλειδί (Foreign Key), είναι ζνα πεδίο που ζχει το ίδιο ςφνολο τιμϊν με το πρωτεφον κλειδί ενόσ άλλου αρχείου. 6
Μοντέλα Βάςεων Δεδομένων Ιεραρχικζσ Βάςεισ Δεδομζνων Δικτυωτζσ Βάςεισ Δεδομζνων Σχεςιακζσ Βάςεισ Δεδομζνων 7
Ιεραρχικέσ Βάςεισ Δεδομένων Στισ Ιεραρχικζς (Hierarchical) βάςεισ δεδομζνων τα δεδομζνα αναπαρίςτανται με δενδρικισ μορφισ δομζσ δεδομζνων και ςυνδζονται μεταξφ τουσ με ςυνδζςμουσ (links). Η κάκε εγγραφι μπορεί να ςυνδζεται προσ τα πάνω μόνο με μία άλλθ εγγραφι (γονζασ), ενϊ μπορεί να ζχει ζωσ δφο εγγραφζσ που να εξαρτϊνται απ' αυτιν (παιδιά). Υπάρχει μία μόνο εγγραφι ρίηα (root), απ' τθν οποία εξαρτϊνται όλεσ οι άλλεσ εγγραφζσ τθσ βάςθσ δεδομζνων. Ζχουν το μειονζκτθμα ότι είναι πολφπλοκεσ ςτθν επεξεργαςία των εγγραφϊν τουσ (προςκικθ, διαγραφι, τροποποίθςθ). 8
Δικτυωτέσ Βάςεισ Δεδομένων Στισ Δικτυωτζς (Network) βάςεισ δεδομζνων τα δεδομζνα αναπαρίςτανται με δενδρικισ μορφισ δομζσ δεδομζνων και ςυνδζονται μεταξφ τουσ με ςυνδζςμουσ (links), όπωσ ακριβϊσ και ςτισ ιεραρχικζσ βάςεισ δεδομζνων. Η διαφορά με τισ ιεραρχικζσ βάςεισ δεδομζνων είναι ότι μια εγγραφι μπορεί να ςυνδζεται προσ τα πάνω με περιςςότερεσ από μία πατρικζσ εγγραφζσ (parent records). Είναι λογικά πιο δφςχρθςτεσ αλλά και πιο γριγορεσ από τισ ιεραρχικζσ βάςεισ δεδομζνων. 9
Σχεςιακέσ Βάςεισ Δεδομένων Στισ Σχεσιακζς (Relational) βάςεισ δεδομζνων, τα δεδομζνα ςυνδζονται μεταξφ τουσ με σχζσεις (relations), οι οποίεσ προκφπτουν από τα κοινά πεδία που υπάρχουν ςε διαφορετικά αρχεία. Τα αρχεία αποκαλοφνται πίνακεσ (tables), οι εγγραφζσ γραμμζσ (rows) και τα πεδία ςτήλεσ (columns). Η φπαρξθ μιασ κοινισ τιμισ ςτα πεδία δφο αρχείων κακορίηει και μια ςχζςθ μεταξφ των γραμμϊν διαφορετικϊν πινάκων. Οι ςχεςιακζσ βάςεισ δεδομζνων ζχουν το πλεονζκτθμα ότι είναι λογικά κατανοθτζσ και πολφ ευζλικτεσ και δεκτικζσ ςε αλλαγζσ. 10
Διαχειριςτήσ μιασ Βάςησ Δεδομένων Ο Διαχειριςτισ μιασ Βάςθσ Δεδομζνων (DBA, DataBase Administrator) είναι αυτόσ που ζχει τθν ευκφνθ για τον ςωςτό, αποδοτικό και αξιόπιςτο τρόπο δθμιουργίασ και λειτουργίασ μια βάςθσ δεδομζνων. Οι αρμοδιότθτζσ του είναι οι εξισ : Η απόφαςθ για το είδοσ των πλθροφοριϊν που πρζπει να αποκθκευκοφν. Η απόφαςθ για τον τρόπο αποκικευςθσ και πρόςβαςθσ ςτισ πλθροφορίεσ αυτζσ. Η ςυνεργαςία με τουσ τελικοφσ χριςτεσ. Η απόφαςθ για τον τρόπο εξαςφάλιςθσ των πλθροφοριϊν. Η απόφαςθ για το κάκε πότε κα γίνονται αντίγραφα αςφαλείασ (backup) των αρχείων. Η παρακολοφκθςθ τθσ ςωςτισ λειτουργίασ τθσ βάςθσ δεδομζνων και θ απαιτοφμενθ προςαρμογι τθσ. 11
ΠΙΝΑΚΕΣ 12
Περιεχόμενα Πίνακεσ ςτθν Access: Κριτιρια και πϊσ κάνω ςυνδυαςμοφσ Κριτθρίων Σχζςθσ (Relationship) ανάμεςα ςε πίνακεσ τθσ Access Η Κανονικοποίθςθ (normalazation) 13
Κριτήρια τησ Access και πώσ κάνω ςυνδυαςμούσ Κριτηρίων Τα κριτιρια είναι οι περιοριςμοί που κζτω ςτισ τιμζσ των πεδίων για να φιλτράρω (απομονϊςω) τα αποτελζςματα, όπωσ τα κζλω. Μπορϊ να χρθςιμοποιιςω πολλοφσ τελεςτζσ για να προςδιορίςω τα κριτιριά μου. Η χριςθ τουσ κα φανεί καλφτερα με παραδείγματα : LIKE Ακινα να είναι ίςο με Ακινα LIKE Α* να αρχίηει με Α LIKE *ίδθσ να τελειϊνει ςε ίδθσ LIKE *α* να ζχει το α ενδιάμεςα LIKE *ΑΒΓ+* να αρχίηει μ ζνα από τα γράμματα ΑΒΓ ΙΝ ( Ακινα, Θες/νίκθ, Πάτρα ) να είναι μια από τισ τρεισ πόλεισ Ακινα Or Ηράκλειο να είναι ίςο με Ακινα ι Ηράκλειο >20 and <40 να είναι μεταξφ 20 και 40, χωρίσ να περιζχει το 20 ι το 40 between 10 and 30 να είναι μεταξφ 10 και 30, περιζχοντασ το 10 και το 30 <= 100 Or > 200 μικρότερο ι ίςο του 100 ι μεγαλφτερο του 200 LIKE??α* να ζχει δφο χαρακτιρεσ ςτθ αρχι, μετά το α και μετά οτιδιποτε LIKE ##00 ζνασ τετραψιφιοσ αρικμόσ που τελειϊνει ςε 00 LIKE *!ΑΒ+* να μθν αρχίηει από τα γράμματα Α ι Β και μετά να ζχει οτιδιποτε 14
Σχέςησ (Relationship) ανάμεςα ςε πίνακεσ τησ Access Ζνα προσ πολλά (one to many) Σε μια εγγραφι του ενόσ πίνακα, αντιςτοιχοφν πολλζσ εγγραφζσ του άλλου πίνακα, αλλά ςε μια εγγραφι του δεφτερου πίνακα, αντιςτοιχεί μία μόνο εγγραφι του πρϊτου πίνακα. Παράδειγμα: Σ ζνα νοςοκομείο, ζνασ γιατρόσ μπορεί να παρακολουκεί πολλοφσ αςκενείσ, αλλά ζνασ αςκενισ παρακολουκείται μόνο από ζναν γιατρό. Πολλά προσ πολλά (many to many) Σε μια εγγραφι του ενόσ πίνακα, αντιςτοιχοφν πολλζσ εγγραφζσ του άλλου πίνακα, αλλά και ςε μια εγγραφι του δεφτερου πίνακα, αντιςτοιχοφν πολλζσ εγγραφζσ του πρϊτου πίνακα Παράδεγμα: Ζνασ κακθγθτισ διδάςκει ςε πολλοφσ μακθτζσ, αλλά και ζνασ μακθτισ διδάςκεται από πολλοφσ κακθγθτζσ. Ζνα προσ ζνα (one to one) Σε μια εγγραφι του ενόσ πίνακα, αντιςτοιχεί μία μόνο εγγραφι του άλλου πίνακα, και αλλά ςε μια εγγραφι του δεφτερου πίνακα, αντιςτοιχεί μία μόνο εγγραφι του πρϊτου πίνακα Παράδειγμα : Ζνασ οδθγόσ μπορεί να ζχει ζνα μόνο δίπλωμα οδιγθςθσ, αλλά και ζνα δίπλωμα οδιγθςθσ ανικει μόνο ς ζναν οδθγό. 15
Η Κανονικοποίηςη (normalization) Τα προβλιματα που είναι πικανό να παρουςιαςκοφν κατά τθ διαδικαςία τθσ υλοποίθςθσ του ςχεδιαςμοφ μιασ βάςθσ δεδομζνων είναι θ περιττι (άςκοπθ) επανάλθψθ πλθροφοριϊν. Γιαν τθν αποφυγι του παραπάνω προβλιματοσ χρθςιμοποιοφμε τθ διαδικαςία τθσ κανονικοποίθςθσ. Η κανονικοποίθςθ (normalization) είναι τεχνικι που αςχολείται με τθν ανάλυςθ των ςχζςεων (ςυςχετίςεων) ςε μια βάςθ δεδομζνων, με ςκοπό να μετατρζψουμε τουσ αρχικοφσ μεγάλουσ πινάκεσ ςε μικρότερουσ. 16
Παράδειγμα κανονικοποίηςησ πίνακα Student# Advisor Αρτικός πίνακας Adv- Room Class1 Class2 Class3 1022 Jones 412 101-07 143-01 159-02 4123 Smith 216 201-01 211-02 214-01 1 ος κανόνας: απαλείθοσμε ηα επαναλαμβανόμενα πεδία, έηζι έτοσμε ένα πεδίο για Class Student# Advisor Adv-Room Class# 1022 Jones 412 101-07 1022 Jones 412 143-01 1022 Jones 412 159-02 4123 Smith 216 201-01 4123 Smith 216 211-02 4123 Smith 216 214-01 17
Παράδειγμα κανονικοποίηςησ πίνακα students Student# Advisor Adv-Room 1022 Jones 412 4123 Smith 216 faculty Student# Class# 1022 101-07 1022 143-01 1022 159-02 4123 201-01 4123 211-02 4123 214-01 18