ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Ανάπτυξη βάσεως δεδομένων για τηλεϊατρικές υπηρεσίες. των σπουδαστών : ΑΓΓΕΛΙΓΗΣ ΝΙΚΟΛΑΟΣ ΓΑΛΑΝΟΣ ΝΙΚΟΛΑΟΣ - ΜΑΡΙΝΟΣ



Σχετικά έγγραφα
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 2 ο Μάθημα: Βασικά Θέματα Βάσεων Δεδομένων. Δρ. Κωνσταντίνος Χ.

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΕΥΡΕΣΗ ΠΡΟΫΠΗΡΕΣΙΑΣ ΩΡΟΜΗΣΘΙΩΝ ΚΑΘΗΓΗΤΩΝ, ΜΕ ΤΗΝ ΧΡΗΣΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ

Το Σχεσιακό Μοντέλο Βάσεων Δεδομένων

Κεφάλαιο 4 Σχεδίαση Βάσεων Δεδομένων

Εργαστηριακές Ασκήσεις Σελίδα 1

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Σχεδιασμός Βάσεων Δεδομένων

ΕΦΑΡΜΟΓΕΣ Η/Υ ΣΤΗ ΔΑΣΟΠΟΝΙΑ

Σχεσιακό Μοντέλο Περιορισμοί Μετατροπή ER σε Σχεσιακό Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Relational Model

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Η Θεωρία των Βάσεων Δεδομένων

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

Βάσεις Δεδομένων. Εισαγωγή Ανάλυση Απαιτήσεων. Φροντιστήριο 1 ο

Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων

ΠΕΛΑΤΗΣ ΠΑΡΑΓΓΕΛΙΑ ΠΡΟΪΟΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

ΜΕΛΕΤΗ ΚΑΙ ΚΑΤΑΣΚΕΥΗ ΠΛΗΡΟΦΟΡΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΛΑΤΟΛΟΓΙΟΥ ΙΔΙΩΤΙΚΟΥ ΤΗΛΕΟΠΤΙΚΟΥ ΔΙΑΥΛΟΥ

Εισαγωγή στην πληροφορική

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Δείχτες Επιτυχίας και Δείχτες Επάρκειας

Αρχιτεκτονική Συστημάτων Βάσεων Δεδομένων. Κατηγορίες χρηστών ΣΔΒΔ Αρχιτεκτονική ANSI/SPARC Γλώσσες ερωτημάτων Μοντέλα δεδομένων Λειτουργίες ΣΔΒΔ

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Εργαστήριο Βάσεων Δεδομένων. Relational Model Σχεσιακό Μοντέλο

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Τ.Ε.Ι ΘΕΣΣΑΛΟΝΙΚΗΣ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΔΒΔ (ΕΡΓΑΣΤΗΡΙΟ 4) Τελευταία ενημέρωση: 11/2011. Μετασχηματισμός διαγράμματος ER σε σχεσιακό σχήμα ΒΔ

Ιατρική Πληροφορική. Δρ. Π. ΑσβεστΑΣ ΤμΗμα ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ

Πληροφοριακού Συστήματος Ενημέρωσης Καιρικών Συνθηκών

Εισαγωγή στις Βάσεις Δεδομζνων II

Βάσεις Δεδομένων 3η εργαστηριακή άσκηση

Πληροφορική 2. Γλώσσες Προγραμματισμού

Σχεδιασμός Βάσεων Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ασκήσεις και ερωτήσεις

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

µπιτ Λύση: Κάθε οµάδα των τεσσάρων µπιτ µεταφράζεται σε ένα δεκαεξαδικό ψηφίο 1100 C 1110 E Άρα το δεκαεξαδικό ισοδύναµο είναι CE2

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Σχεσιακό Μοντέλο. Σχεδιασμός Βάσεων Δεδομένων Μάθημα 2 ο Μαρία Χαλκίδη

Μοντέλο Οντοτήτων-Συσχετίσεων

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

ΜοντέλοΟντοτήτωνΣυσχετίσεων & ΔιάγραμμαΟντοτήτων Συσχετίσεων. Μοντέλο Οντοτήτων Συσχετίσεων

Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Διαχείριση Πολιτισμικών Δεδομένων

Πληροφορική 2. Βάσεις Δεδομένων (Databases)

Προγραμματισμός ΙI (Θ)

. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Σύβακας Σταύρος ΠΕ19,MSc. IT ΣΥΒΑΚΑΣ ΣΤΑΥΡΟΣ ΕΡΩΤΗΜΑΤΑ

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

ÈÛ ÁˆÁ ÛÙÈ μ ÛÂÈ Â ÔÌ ÓˆÓ

ΤΙΤΛΟΣ ΕΡΓΑΣΙΑΣ. Πετρογεωργάκης Μανούσος Σπυρόπουλος Σταύρος

Σχεδίαση Βάσεων Δεδομένων

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

Τύποι δεδομένων, τελεστές, μεταβλητές

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στην Πληροφορική

Διαχείριση Πολιτισμικών Δεδομένων

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Βάσεις δεδομένων. (2 ο μάθημα) Ηρακλής Βαρλάμης

Σχεδίαση Βάσεων Δεδομένων

Μοντέλο Οντοτήτων-Συσχετίσεων. Η ανάγκη Διαγράμματα ΟΣ Σύνολα Οντοτήτων-Συσχετίσεων Απεικονίσεις Επεκτάσεις

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

Το σχεσιακό μοντέλο βάσεων δεδομένων

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

Εισαγωγή στη γλώσσα προγραμματισμού C++

Εισαγωγή στις Βάσεις Δεδομένων (ΒΔ)

Ανάπτυξη και Σχεδίαση Λογισμικού

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Τεχνολογία Πολιτισμικού Λογισμικού

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

Έννοιες Διαχείρισης Βάσεων Δεδομένων και Αρχιτεκτονική

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Δομημένος Προγραμματισμός (ΤΛ1006)

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Εισαγωγή στις Βάσεις Δεδομένων (ΒΔ)

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Transcript:

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ με θέμα : Ανάπτυξη βάσεως δεδομένων για τηλεϊατρικές υπηρεσίες των σπουδαστών : ΑΓΓΕΛΙΓΗΣ ΝΙΚΟΛΑΟΣ ΓΑΛΑΝΟΣ ΝΙΚΟΛΑΟΣ - ΜΑΡΙΝΟΣ ΚΑΒΑΛΑ ΝΟΕΜΒΡΙΟΣ 2007

ΠΕΡΙΕΧΟΜΕΝΑ ΠΡΑΚΤΙΚΟ ΜΕΡΟΣ ΠΡΟΛΟΓΟΣ ΚΕΦΑΛΑΙΟ 1 ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΗΣΕΩΝ... 6 ΚΕΦΑΛΑΙΟ 2 EMBEDDED SQL - PRO*C/C++...15 ΚΕΦΑΛΑΙΟ 3 ΠΙΝΑΚΕΣ ΒΑΣΕΩΣ ΔΕΔΟΜΕΝΩΝ...19 ΚΕΦΑΛΑΙΟ 4 ΥΛΟΠΟΙΗΣΗ ΚΩΔΙΚΑ ΚΑΙ ΣΧΟΛΙΑΣΜΟΣ... 24 ΚΕΦΑΛΑΙΟ 5 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΤΗΛΕΪΑΤΡΙΚΗ ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ 5.1 ΤΗΛΕΪΑΤΡΙΚΗ: ΑΠΟΠΕΙΡΑ ΟΡΙΣΜΟΥ... 78 5.2 ΑΝΑΦΟΡΑ ΣΤΗΝ ΙΣΤΟΡΙΑ ΤΗΣ ΤΗΛΕΪΑΤΡΙΚΗΣ...80 ΚΕΦΑΛΑΙΟ 6 ΙΑΤΡΙΚΟΣ ΕΞΟΠΛΙΣΜΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΤΗΛΕΪΑΤΡΙΚΗΣ 6.1 ΣΥΣΤΗΜΑΤΑ ΠΡΟΝΟΣΟΚΟΜΕΙΑΚΗΣ ΤΗΛΕΪΑΤΡΙΚΗΣ...90 6.2 ΣΥΣΤΗΜΑΤΑ ΕΙΚΟΝΟΔΙΑΣΚΕΨΗΣ - ΤΗΛΕΔΙΑΣΚΕΨΗΣ...91 6.3 ΕΦΑΡΜΟΓΕΣ ΡΟΜΠΟΤΙΚΗΣ...92 6.4 ΗΛΕΚΤΡΟΝΙΚΑ ΚΙΟΣΚΙΑ ΥΓΕΙΑΣ...93 ΚΕΦΑΛΑΙΟ 7 ΚΛΙΝΙΚΕΣ ΕΦΑΡΜΟΓΕΣ 7.1 ΤΗΛΕΔΙΑΓΝΩΣΗ... 95 7.2 ΤΗΛΕΚΑΡΔΙΟΛΟΓΙΑ...95 7.3 ΤΗΛΕΠΑΘΟΛΟΓΙΑ...95 7.4.ΤΗΛΕ-ΑΚΤΙΝΟΛΟΓΙΑ...96 7.5.ΤΗΛΕΠΑΘΟΛΟΓΟΑΝΑΤΟΜΙΑ... 96 7 6.ΤΗΛΕΔΕΡΜΑΤΟΛΟΓΙΑ... 96 2

ΚΕΦΑΛΑΙΟ 8 ΤΗΛΕΪΑΤΡΙΚΕΣ ΕΦΑΡΜΟΓΕΣ 8.1 ΣΤΗΝ ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΤΗΣ ΚΥΗΣΗΣ...98 8.2 Η ΧΡΗΣΗ ΤΗΣ ΤΗΛΕΪΑΤΡΙΚΗΣ ΣΤΗΝ ΠΑΙΔΙΑΤΡΙΚΗ... 99 8.3 ΑΣΥΡΜΑΤΗ ΕΝΔΟΣΚΟΠΗΣΗ ΜΕ ΚΑΨΟΥΛΑ... 99 8.4 ΤΗΛΕΟΦΘΑΛΜΟΛΟΓΙΑ... 100 8.5 ΤΗΛΕΧΕΙΡΟΥΡΓΙΚΗ...101 8.6 ΤΗΛΕ-ΕΚΠΑΙΔΕΥΣΗ...102 8.7 ΥΠΟΣΤΗΡΙΞΗ ΔΙΑΣΤΗΜΙΚΩΝ ΣΤΑΘΜΩΝ...102 8.8 ΨΗΦΙΑΚΗ ΧΕΙΡΟΥΡΓΙΚΗ...103 8.9 ΕΞ' ΑΠΟΣΤΑΣΕΩΣ ΧΕΙΡΟΥΡΓΙΚΗ...103 ΚΕΦΑΛΑΙΟ 9 ΚΑΤ ΟΙΚΟΝ ΝΟΣΗΛΕΙΑ 9.1 ΗΟΜΕ CARE ΚΑΙ ΥΠΗΡΕΣΙΕΣ Ε-ΗΕΑLΤΗ... 104 9.2 ΤΗΛΕΪΑΤΡΙΚΗ ΥΠΟΣΤΗΡΙΞΗ ΑΤΟΜΩΝ ΤΗΣ ΤΡΙΤΗΣ ΗΛΙΚΙΑΣ...113 9.3 ΤΗΛΕΙΑΤΡΙΚΕΣ ΕΦΑΡΜΟΓΕΣ ΝΟΣΗΛΕΥΤΙΚΗΣ ΚΑΤΟΙΚΟΝ ΦΡΟΝΤΙΔΑΣ.. 116 ΚΕΦΑΛΑΙΟ 10 ΑΣΥΡΜΑΤΗ ΤΗΛΕΪΑΤΡΙΚΗ 10.1 ΑΣΥΡΜΑΤΑ ΣΥΣΤΗΜΑΤΑ ΤΗΛΕΪΑΤΡΙΚΗΣ... 121 10.2 ΑΣΥΡΜΑΤΕΣ ΤΕΧΝΟΛΟΓΙΕΣ... 121 ΒΙΒΛΙΟΓΡΑΦΙΑ...133 3

ΠΡΟΛΟΓΟΣ Η πτυχιακή μας εργασία υλοποιήθηκε από τις αρχές Ιουνίου ως και τον Οκτώβριο με την αμέριστη συμπαράσταση και βοήθεια του καθηγητή κ. Ιωάννη Βραδέλη. Στόχος αυτής της πτυχιακής εργασίας ήταν η δημιουργία βάσεως δεδομένων με πλήρη στοιχεία των ασθενών ( Κωδικός ασθενούς, όνομα, επώνυμο, διεύθυνση, πόλη, μητρώο ασθενούς) και η αποστολή τους σε όποιο κέντρο τηλεϊατρικής ζητηθεί. Το μικρό θεωρητικό μέρος περιλαμβάνει αναφορά στα είδη της τηλεϊατρικής που υπαρχουν και η περιγραφή τους γενικότερα, καθώς και τις εμπειρίες μας από την επίσκεψή μας στο τηλεϊατρικό κέντρο του εχίνου. Η πτυχιακή εργασία περιλαμβάνει : Για την δημιουργία της βάσεως δεδομένων χρησιμοποιήθηκε η SQL PLUS. Απο την οπτική γωνία της εφαρμογής έχουμε μία Βάση Δεδομένων η οποία επεξεργάζεται λεπτομεριακά τα στοιχεία ενός ασθενούς ο οποίος πάσχει απο κάποια νόσο και θα γίνεται η εύρεση του τηλεϊατρικού κέντρου στο οποίο θα πρέπει να απευθυνθεί ο γιατρός. Λεπτομερέστερα στην βάση δεδομένων θα υπάρχει ο κωδικός του ασθενή: δηλαδή ένας αριθμός ο οποίος θα αντιστοιχεί σε ένα και μοναδικό ασθενή ο οποίος θα δίνεται από τον ασθενή στο γιατρό και στην συνέχεια θα εμφανίζεται η καρτέλα με το ιστορικό και με την πάθηση του ασθενή καθώς και όλα τα στοιχεία που θα αφορούν τον ασθενή. Η Βάση δεδομένων περιλαμβάνει δηλαδή ακόμα το όνομά του, το επώνυμό του, τη διεύθυνσή του, τη πόλη του, την ομάδα αίματός του και το μητρώο ασθενείας του. Όταν ζητήται από κάποιο κέντρο τηλεϊατρικής τα στοιχεία αυτά του ασθενούς που πρόκειται να εξεταστεί θα αποστέλονται on-line μεσω της Βασης Δεδομένων η οποία θα είναι κοινή για όλα τα κέντρα της τηλειατρικής. Το λογισμικό που αναπτυχθηκε είναι προιόν της Oracle η SQL PLUS στην οποία θα αναφέρεται η ποιότητα του δικτύου που θα γίνεται η σύνδεση με το κέντρο της τηλεϊατρικής μονάδας, επίσης ο αριθμός των διαθέσιμων κρεβατιών που ίσως καλεστούν να φιλοξενήσουν τον ασθενή.ακόμα θα αναφέρεται λεπτομερειακά σε μια νέα καρτέλα ο γιατρός που εξέτασε τον ασθενή καθώς και η φαρμακευτική αγωγή που δέχτηκε ο ασθενής,καθώς και το όνομα της φαρμακευτικής εταιρείας. Θα θέλαμε να ευχαριστήσουμε θερμά τον Καθηγητή μας κ. Ιωάννη Βραδέλη καθώς και την διευθύντρια του ιατρικού κέντρου Εχίνου Καραλευθέρη Μαρία για τον χρόνο που αφιέρωσαν, για τις συμβουλές και επισημάνσεις και για την συνεχή ενθάρρυνση, κατά τη διάρκεια συγγραφής της παρούσας εργασίας. 4

Αφιερώνεται στους γονείς μας Ανέστη και Κυριακούλα, Ηλίας και Ελένη 5

ΚΕΦΑΛΑΙΟ 10 Μοντέλο Οντοτήτων - Συσχετήσεων Το μοντέλο που έχει επικρατήσει σήμερα για να παραστήσει τις έννοιες ή τη δομή μιας βάσης δεδομένων είναι το Μοντέλο Οντοτήτων-Συσχετίσεων (ΟΣ). Οι βασικές (θεμελιώδεις) έννοιες του μοντέλου αυτού είναι οι εξής : Οντότητες Ιδιότητες ή Χαρακτηριστικά Συσχετίσεις Για να αναπαραστήσουμε ένα Μοντέλο Οντοτήτων - Συσχετίσεων χρησιμοποιούμε ειδικά διαγράμματα, όπου τα ορθογώνια συμβολίζουν τις οντότητες, οι ρόμβοι τις συσχετίσεις και οι ελλείψεις τις ιδιότητες. Με ευθείες γραμμές συνδέουμε τις οντότητες που συσχετίζονται με κάποιο τρόπο μεταξύ τους. Όλα τα παραπάνω αποτελούν τη λογική δομή μιας βάσης δεδομένων, μια εργασία που είναι απαραίτητο να γίνει πριν από την καταχώριση και την επεξεργασία των στοιχείων (πληροφοριών) της βάσης δεδομένων. Το μοντέλο οντοτήτων - συσχετίσεων αποτελεί μια γενική περιγραφή των γενικών στοιχείων που απαρτίζουν μια βάση δεδομένων και απεικονίζει την αντίληψη που έχουμε για τα δεδομένα (εννοιολογικό), χωρίς να υπεισέρχεται σε λεπτομέρειες υλοποίησης. Οι Οντότητες (Entities) Με τον όρο οντότητα (entity) εννοούμε ένα αντικείμενο, ένα πρόσωπο, μια κατάσταση και γενικά ο,τιδήποτε μπορεί να προσδιορισθεί σαν ανεξάρτητη ύπαρξη (αυτόνομη μονάδα του φυσικού κόσμου). Στη βάση δεδομένων μας οντότητες είναι οι γιατροί, οι ασθενείς κ.ά. Το Μοντέλο Οντοτήτων Συσχετίσεων (Entity Relationship Model, ER Model) είναι μια διαγραμματική αναπαράσταση της δομής μιας βάσης δεδομένων και χρησιμοποιείται κατά τη φάση του λογικού σχεδιασμού της βάσης. Δηλαδή, δεν ασχολείται με τον τρόπο που αποθηκεύονται τα δεδομένα της βάσης, αλλά με την ταυτοποίηση των δεδομένων και με τον τρόπο με τον οποίο αυτά συσχετίζονται μεταξύ τους. Οι Ιδιότητες (Attributes) Με τον όρο ιδιότητα ή χαρακτηριστικό ή και πεδίο (attribute) μιας οντότητας, αναφερόμαστε σ ένα από τα συστατικά της στοιχεία που την περιγράφουν και την κάνουν να ξεχωρίζει από τα άλλα στοιχεία της ίδιας οντότητας. Για παράδειγμα, η οντότητα ΑΣΘΕΝΗΣ μπορεί να έχει ως ιδιότητες (χαρακτηριστικά) τον κωδικό, το επώνυμο, το όνομα, τη διεύθυνση, το τηλέφωνο, με τη βοήθεια των οποίων μπορούμε να ξεχωρίσουμε τους ασθενείς μεταξύ τους. Τα Στιγμιότυπα (Snapshots) Το κάθε διαφορετικό (αυτόνομο) στοιχείο μιας οντότητας αποκαλείται στιγμιότυπο (snapshot) ή και εμφάνιση της οντότητας. Για παράδειγμα, στην οντότητα 6

ΑΣΘΕΝΗΣ, άλλο στιγμιότυπο είναι ο ασθενής με επώνυμο Παπαδόπουλος και άλλο στιγμιότυπο είναι ο ασθενής με επώνυμο Σουμπάσης. Το Πρωτεύον Κλειδί (Primary Key) Πρωτεύον κλειδί ή πεδίο κλειδί (primary key) μιας οντότητας καλείται εκείνη η ιδιότητα (ή ο συνδυασμός ιδιοτήτων) που έχει μοναδική τιμή για όλα τα στιγμιότυπα (εμφανίσεις) της οντότητας. Για παράδειγμα, στην οντότητα ΑΣΘΕΝΗΣ πρωτεύον κλειδί είναι ο κωδικός ασθενή. Υπάρχουν περιπτώσεις όπου το πεδίο κλειδί ενός τύπου οντότητας μπορεί να μην είναι απλό αλλά σύνθετο, να αποτελείται δηλαδή από πολλά απλά πεδία και τότε η συνθήκη της μοναδικότητας για την τιμή του κλειδιού δεν εφαρμόζεται σε κάθε πεδίο του σύνθετου κλειδιού αλλά στο σύνολο του συνδυασμού αυτών των πεδίων. Στην πράξη, το πρωτεύον κλειδί έχει διαφορετική τιμή για κάθε εμφάνιση της οντότητας ή για κάθε γραμμή (εγγραφή) του πίνακα και ποτέ δεν μπορεί να έχει μηδενική (κενή) τιμή (null). Ο συνδυασμός δύο ή και περισσοτέρων ιδιοτήτων (πεδίων) για τη δημιουργία ενός πρωτεύοντος κλειδιού αποκαλείται σύνθετο κλειδί. Ένα παράδειγμα σύνθετου κλειδιού θα μπορούσε να είναι ο συνδυασμός των ιδιοτήτων Επώνυμο, Όνομα και Πατρώνυμο, εφόσον φυσικά είμαστε απολύτως βέβαιοι ότι δεν υπάρχουν δύο ή και περισσότερα άτομα με κοινές τιμές στις παραπάνω ιδιότητες. Ξένο κλειδί αποκαλείται μια ιδιότητα (πεδίο) που είναι πρωτεύον κλειδί σε μια οντότητα (πίνακας) αλλά που υπάρχει και σε μια άλλη οντότητα (πίνακας) σαν απλή ιδιότητα. Τα ξένα κλειδιά είναι απαραίτητα για να μπορέσουμε να κάνουμε τις συσχετίσεις (συνδέσεις, επικοινωνίες) ανάμεσα στις οντότητες (πίνακες). Για παράδειγμα, στην οντότητα ΓΙΑΤΡΟΣ, το πεδίο Κωδικός Γιατρού είναι πρωτεύον κλειδί, ενώ στην οντότητα ΑΣΘΕΝΗΣ, το πεδίο Κωδικός Γιατρού είναι ξένο κλειδί και είναι απαραίτητο για να μπορέσουμε να υλοποιήσουμε τη συσχέτιση ΠΑΡΑΚΟΛΟΥΘΕΙΤΑΙ, δηλ. να αντλήσουμε την πληροφορία ποιοι ασθενείς παρακολουθούνται από ποιους γιατρούς. Προφανώς, στην οντότητα ΓΙΑΤΡΟΣ, το πεδίο Κωδικός Γιατρού θα έχει μοναδικές τιμές, ενώ στην οντότητα ΑΣΘΕΝΗΣ, το πεδίο Κωδικός Γιατρού θα έχει επαναλαμβανόμενες τιμές και αυτό γιατί πολλοί ασθενείς θα παρακολουθούνται από τον ίδιο γιατρό, αλλά ένας ασθενής παρακολουθείται μόνο από έναν γιατρό. Αυτό αποτελεί βέβαια μια παραδοχή που κάνουμε για να μπορέσουμε να υλοποιήσουμε μια συσχέτιση σαν την παραπάνω σε μια βάση δεδομένων ενός Νοσοκομείου, αλλά μπορεί να θεωρήσει κάποιος ότι ένας ασθενής μπορεί να παρακολουθείται από πολλούς γιατρούς ταυτόχρονα, οπότε θα πρέπει να μεταβάλλουμε και τον τρόπο συσχέτισης των παραπάνω οντοτήτων. Οι Συσχετίσεις (Relationships) Με τον όρο συσχέτιση (relationship) αναφερόμαστε στον τρόπο σύνδεσης (επικοινωνίας) δύο ξεχωριστών οντοτήτων, ώστε να μπορούμε να αντλούμε στοιχεία (πληροφορίες) από τον συνδυασμό τους. Για παράδειγμα, η οντότητα ΓΙΑΤΡΟΣ συσχετίζεται με την οντότητα ΑΣΘΕΝΗΣ αλλά και με την οντότητα ΚΛΙΝΙΚΗ στη βάση δεδομένων ενός νοσοκομείου. Μπορούμε να δεχθούμε ότι ένας γιατρός παρακολουθεί (συσχετίζεται με) πολλούς ασθενείς, αλλά ένας ασθενής παρακολουθείται από (συσχετίζεται με) έναν μόνο γιατρό και επίσης ένας γιατρός συσχετίζεται με (ανήκει σε) μία μόνο κλινική, αλλά μια κλινική συσχετίζεται με (απασχολεί) πολλούς γιατρούς. 7

Οι Συσχετίσεις Μεταξύ Οντοτήτων Ο σωστός σχεδιασμός και προσδιορισμός των οντοτήτων και των ιδιοτήτων τους αποτελούν τα θεμελιώδη βήματα για τη σωστή σχεδίαση και υλοποίηση μιας βάσης δεδομένων. Μια συσχέτιση συνδέει δύο ή και περισσότερες οντότητες μεταξύ τους και παριστάνεται στο διάγραμμα οντοτήτων-συσχετίσεων μ έναν ρόμβο. Οι συσχετίσεις είναι απαραίτητες για να μπορέσουμε να αντλήσουμε πληροφορίες που αφορούν δύο ή και περισσότερες οντότητες. Όταν οι οντότητες που συμμετέχουν σε μια συσχέτιση είναι δύο, η συσχέτιση αποκαλείται διμελής ή δυαδική. Ο βαθμός μιας συσχέτισης είναι ίσος με το πλήθος των οντοτήτων που συμμετέχουν σ αυτήν. Μια συσχέτιση μπορεί και η ίδια να έχει ιδιότητες που να περιγράφουν ορισμένα χαρακτηριστικά της. Όταν σχεδιάζουμε μια βάση δεδομένων, θα πρέπει να εκχωρούμε ιδιότητες μόνο στις οντότητες και να έχουμε τις συσχετίσεις απλά και μόνο για να κατανοούμε τις λογικές συνδέσεις ανάμεσα στις οντότητες. Οι Διμελείς Συσχετίσεις Υπάρχουν τρία βασικά είδη συνδέσεων σ αυτές, τα εξής : Ένα-προς-ένα (1:1), όπου μια εμφάνιση της μιας οντότητας συνδέεται με μία και μόνο μία εμφάνιση της άλλης οντότητας. Στην περίπτωση των διμελών συσχετίσεων του τύπου ένα-προς-ένα, μπορούμε να ενώσουμε τα στοιχεία και των δύο ιδιοτήτων και να δημιουργήσουμε μια μοναδική οντότητα (πίνακα). Ένα-προς-πολλά (1:Μ), όπου μια εμφάνιση της μιας οντότητας συνδέεται με πολλές εμφανίσεις της άλλης οντότητας αλλά κάθε εμφάνιση της δεύτερης οντότητας συνδέεται με μία και μόνο μία εμφάνιση της πρώτης οντότητας. Οι διμελείς συσχετίσεις του τύπου ένα-προς-ένα είναι οι πιο συχνά συναντώμενες και οι πιο βολικές στη διαχείριση. Πολλά-προς-πολλά (Μ:Ν), όπου σε μια εμφάνιση της μιας οντότητας αντιστοιχούν πολλές εμφανίσεις της άλλης οντότητας και σε κάθε εμφάνιση της δεύτερης οντότητας αντιστοιχούν πολλές εμφανίσεις της πρώτης οντότητας. Για να μπορέσουμε να διαχειριστούμε μια διμελή σχέση του τύπου πολλά-προς-πολλά, θα πρέπει να δημιουργήσουμε έναν τρίτο πίνακα που θα περιέχει δύο μόνο ιδιότητες (πεδία), δηλ. τα πεδία κλειδιά των δύο οντοτήτων, οπότε ο συνδυασμός τους θα είναι και το πεδίο κλειδί (σύνθετο κλειδί) του νέου πίνακα. Το Διάγραμμα Οντοτήτων Συσχετίσεων Για να μπορέσουμε να διαμορφώσουμε το διάγραμμα οντοτήτων συσχετίσεων, θα πρέπει να ακολουθήσουμε τα εξής βήματα : Να ορίσουμε τις οντότητες (πίνακες) που θα ανήκουν στη βάση δεδομένων που θέλουμε να δημιουργήσουμε. Να ορίσουμε τις ιδιότητες (πεδία) και τα πρωτεύοντα κλειδιά της κάθε οντότητας (πίνακα). Να ορίσουμε τις συσχετίσεις ανάμεσα στις οντότητες. Δημιουργούμε το διάγραμμα οντοτήτων - συσχετίσεων, όπου θα απεικονίσουμε τις οντότητες, τις ιδιότητές τους και τις συσχετίσεις τους. Το Σχεσιακό Μοντέλο Βάσεων Δεδομένων 8

Το σχεσιακό (relational) μοντέλο έχει επικρατήσει σήμερα στην αναπαράσταση των δεδομένων καθώς διαθέτει σημαντικά πλεονεκτήματα ως προς τα άλλα δύο και οι βάσεις δεδομένων που σχεδιάζονται σύμφωνα μ αυτό αποκαλούνται σχεσιακές (relational databases). Με τις σχεσιακές βάσεις δεδομένων διαθέτουμε έναν σαφή, απλό και εύκολα κατανοητό τρόπο για να μπορέσουμε να αναπαραστήσουμε και να διαχειριστούμε τα δεδομένα μας. Υστερούν μόνο σε ταχύτητα υπολογισμών και σε χώρο αποθήκευσης, αλλά μόνο όταν έχουμε να κάνουμε με πολύ μεγάλες βάσεις δεδομένων. Στο μοντέλο αυτό οι βάσεις δεδομένων περιγράφονται με αυστηρές μαθηματικές έννοιες και ο χρήστης βλέπει τις οντότητες και τις συσχετίσεις με τη μορφή πινάκων (tables) και σχέσεων (relations) αντίστοιχα. Ένας πίνακας (table) αποτελείται από γραμμές (rows) και στήλες (columns), όπου τοποθετούμε τα στοιχεία σε οριζόντια και κάθετη μορφή. Η κάθε στήλη του πίνακα χαρακτηρίζει κάποια ιδιότητα της οντότητας και αποκαλείται χαρακτηριστικό (attribute) ή πεδίο (field), ενώ η κάθε γραμμή του πίνακα περιέχει όλες τις πληροφορίες (στήλες) που αφορούν ένα στοιχείο της οντότητας και αποκαλείται πλειάδα (tuple) ή εγγραφή (record). Κάθε πεδίο του πίνακα μπορεί να πάρει ορισμένες μόνο τιμές, οι οποίες μπορεί να καθορίζονται από τον τύπο δεδομένων της ιδιότητας, όπως ονόματα ή αριθμοί για παράδειγμα, ή και από αυτό που εκφράζει, όπως το ότι δεν μπορούμε να έχουμε αρνητικό βάρος ή αρνητικό ΑΦΜ, για παράδειγμα. Το σύνολο των αποδεκτών τιμών μιας οντότητας αποκαλείται πεδίο ορισμού (domain). Οι κανόνες που πρέπει να ακολουθούμε πιστά κατά τον σχεδιασμό μιας σχεσιακής βάσης δεδομένων είναι οι εξής : Η κάθε οντότητα πρέπει να παριστάνεται ως ένας ξεχωριστός πίνακας. Η κάθε στήλη του πίνακα αντιστοιχεί σε μια ιδιότητα της οντότητας. Η κάθε γραμμή του πίνακα αντιστοιχεί σε μια εμφάνιση της οντότητας. Η κάθε γραμμή πρέπει να είναι μοναδική, δηλ. αποκλείεται να υπάρχουν δύο ή και περισσότερες γραμμές που να περιέχουν τα ίδια ακριβώς στοιχεία. Η σειρά εμφάνισης των γραμμών δεν έχει καμία σημασία. Η κάθε στήλη έχει μια δική της μοναδική ονομασία. Οι τιμές που ανήκουν στην ίδια στήλη πρέπει να είναι του ιδίου τύπου, δηλ. ή όλες αριθμοί ή όλες αλφαριθμητικές κοκ. Η στήλη που αποτελεί το πρωτεύον κλειδί (primary key) μιας οντότητας, δεν πρέπει να είναι ποτέ κενή (null). Αποκλείεται να υπάρχουν δύο ή και περισσότερες γραμμές που να περιέχουν την ίδια τιμή στο πρωτεύον κλειδί. Το πρωτεύον κλειδί μιας οντότητας αποκαλείται ξένο κλειδί (foreign key) σε μια άλλη οντότητα, με την οποία υπάρχει συσχετισμός. Μπορεί να υπάρχουν πολλές γραμμές που να έχουν την ίδια τιμή στο ξένο κλειδί. Λογικός Σχεδιασμός μιας Βάσης Δεδομένων Αφού έχουμε δημιουργήσει το διάγραμμα οντοτήτων συσχετίσεων και έχουμε επιλέξει το σχεσιακό μοντέλο δεδομένων για την υλοποίηση της βάσης δεδομένων, ακολουθούμε τη διαδικασία της κανονικοποίησης και είμαστε έτοιμοι για την καταχώριση των στοιχείων της βάσης δεδομένων. Ανάλογα 9

τώρα με το είδος της διμελούς συσχέτισης, διακρίνουμε τις εξής περιπτώσεις ως προς τον λογικό σχεδιασμό που θα πρέπει να ακολουθήσουμε : Αν η συσχέτιση των δύο πινάκων είναι ένα-προς-ένα, τότε μπορούμε είτε να συνενώσουμε τους δύο πίνακες, με τις αντίστοιχες εγγραφές φυσικά, ή να προσθέσουμε το ένα από τα δύο πεδία κλειδιά σαν ξένο κλειδί στον άλλον πίνακα ή τέλος να δημιουργήσουμε έναν καινούργιο πίνακα με μόνα πεδία τα πεδία κλειδιά των δύο πινάκων (σύνθετο κλειδί). Η προτιμότερη διαδικασία είναι η πρώτη, δηλ. η συνένωση των δύο πινάκων σ έναν ενιαίο πίνακα. Αν η συσχέτιση των δύο πινάκων είναι ένα-προς-πολλά, τότε μπορούμε είτε να προσθέσουμε το ένα από τα δύο πεδία κλειδιά σαν ξένο κλειδί στον άλλον πίνακα ή να δημιουργήσουμε έναν καινούργιο πίνακα με μόνα πεδία τα πεδία κλειδιά των δύο πινάκων (σύνθετο κλειδί). Η προτιμότερη διαδικασία είναι η πρώτη, δηλ. η προσθήκη του ξένου κλειδιού στην πλευρά πολλά της σχέσης. Αν η συσχέτιση των δύο πινάκων είναι πολλά-προς-πολλά, τότε το μόνο που μπορούμε και πρέπει να κάνουμε είναι να δημιουργήσουμε έναν καινούργιο πίνακα με μόνα πεδία τα πεδία κλειδιά των δύο πινάκων (σύνθετο κλειδί), όπου το κάθε πεδίο κλειδί από μόνο του γίνεται ξένο κλειδί. Οι δύο αρχικοί πίνακες δεν μεταβάλλονται. Στην περίπτωσή μας έχουμε την οντότητα «ΑΣΘΕΝΗΣ» που αντιστοιχεί σε έναν πίνακα. Η οντότητα «ΑΣΘΕΝΗΣ» έχει τα παρακάτω χαρακτηριστικά : 1. Κωδικός 2. Όνομα 3. Επώνυμο 4. Όνομα Πατρός 5. Όνομα Μητρός 6. Ημερομηνία Γέννησης 7. Διεύθυνση 8. Αριθμός 9. Πόλη 10. Τηλέφωνο 11. Επάγγελμα 12. Ασφάλεια 13. Ομάδα Αίματος 14. Ιστορικό 10

Ιστορικά Κω δικός Ονουα Επώνυμο Ομάδα Αίματος Όνομα Πατρός Ασφαλεία Α ΣΘ Ε Ν Η Σ Όνομα Μ ητρός Επ άγγελμα Ημερομηνία Γέννησης Τηλέφω νο Αριθμός Διεύθυνση Έχουμε την οντότητα «ΔΙΚΤΥΟ» που αναφέρεται στην ποιότητα της σύνδεσης του δικτύου του κάθε τηλεϊατρικού κέντρου και που αντιστοιχεί σε έναν πίνακα. Η οντότητα «ΔΙΚΤΥΟ» έχει τα παρακάτω χαρακτηριστικά : 1. Κωδικός 2. Quality Έχουμε την οντότητα «ΙΑΤΡΙΚΟ ΚΕΝΤΡΟ» που αντιστοιχεί σε έναν πίνακα. Η οντότητα «ΙΑΤΡΙΚΟ ΚΕΝΤΡΟ» έχει τα παρακάτω χαρακτηριστικά : 1. Κωδικός 2. Όνομα Κέντρου 3. Διεύθυνση 4. Αριθμός 5. Πόλη 6. Τηλέφωνο 7. Αριθμός Διαθέσιμων Κρεβατιών 11

Κωδικός Όνομα Κέντρου Διεύθυνση Τηλέφωνα ΙΑΤΡΙΚΟ ΚΕΝΤΡΟ Αριθμός Διαθέσιμων Κρεβατιων Αριθμός Έχουμε την οντότητα «ΓΙΑΤΡΟΣ» που αντιστοιχεί σε έναν πίνακα. Η οντότητα «ΓΙΑΤΡΟΣ» έχει τα παρακάτω χαρακτηριστικά : 1. Κωδικός 2. Όνομα 3. Επώνυμο 4. Όνομα Πατρός 5. Όνομα Μητρός 6. Τηλέφωνο 7. Ειδικότητα 8. Ιατρικό Κέντρο Τηλέφωνα Κωδικός Επώνυμα Ιατρικό Κέντρα ΑΤΡΟΣ Όνομα Πατρός Ειδικότητα Όνομα Μητρός Έχουμε την οντότητα «ΦΑΡΜΑΚΑ» που αντιστοιχεί σε έναν πίνακα. Η οντότητα «ΦΑΡΜΑΚΑ» έχει τα παρακάτω χαρακτηριστικά : 1. Κωδικός 2. Όνομα 12

3. Παρενέργεια 4. Δοσολογία 5. Χρήση Έχουμε την οντότητα «ΦΑΡΜΑΚΕΥΤΙΚΗ ΕΤΑΙΡΕΙΑ» που αντιστοιχεί σε έναν πίνακα. τητα «ΦΑΡΜΑΚΕΥΤΙΚΗ ΕΤΑΙΡΕΙΑ» χαρακτηριστικά : 1. Κωδικός 2. Όνομα 3. Διεύθυνση 4. Αριθμός 5. Πόλη 6. Τηλέφωνο Έτσι για την δική μας βάση δεδομένων το διάγραμμα οντοτήτων - συσχετίσεων, όπου απεικονίζουμε τις οντότητες, τις ιδιότητές τους και τις συσχετίσεις τους,στο οποίο βλέπουμε ότι το κάθε ιατρικό κέντρο έχει το δικό του δίκτυο, προμηθεύεται πολλά φάρμακα και νοσηλευει πολλούς ασθενείς οι φαρμακευτικές εταιρείες παρέχουν πολλά φάρμακα που τα δίνουν οι γιατροί οι γιατροί παρακολουθούν πολλούς ασθενείς είναι το ακόλουθο : 13

^Επώνυμα, Τηλέφωνο Κωδικός Ομάδα Αίματος ΑΣΘΕΝΗΣ Ιατρικό Κέντρα ΓΙΑΤΡΟΣ Ονομα Πατρός Επάγγελμα Ημερομηνία Γέννησης Π ό λη ) (Αριθμός ΝΟΣΗΛΕΥΕΙ ΠΑΡΑΚΟΛΟΥΘΕΙ Υ 1 ΠΑΙΡΝΕΙ Κωδικός Παρενέργεια ΙΑΤΡΙΚΟ ΚΕΝΤΡΟ ΠΡΟΜΗΘΕΥΕΤΑΙ ΦΑΡΜΑΚΑ Αριθμός Διαθέσιμων Κρεβατιών Αριθμός Δοσολογία ΠΑΡΕΧΕΙ Κωδικός ΦΑΡΜΑΚΕΥΤΙΚΗ ΕΤΑΙΡΕΙΑ ΔΙΚΤΥΟ Αριθμός Κωδικός 14

ΚΕΦΑΛΑΙΟ 20 EMBEDDED SQL - PRO*C/C++ Η βάση δεδομένων Μία βάση δεδομένων που είναι εγκατεστημένη σε ένα οργανισμό, σε κάποια επιχείρηση ή και σε ένα μεμονωμένο επαγγελματία είναι, συνήθως, ένα είδος ηλεκτρονικής αρχειοθέτησης ε γ γ ρ α φ ώ ν ^ ^ ^ ) / στοιχείων(data) μαζί με το σύνολο των εφαρμογών που επιτρέπουν στον ενδιαφερόμενο να τα διαχειριστεί αποτελεσματικά. Γιατίχρησιμοποιούμε βάση δεδομένων Ο πιο βασικός λόγος χρησιμοποίησης συστημάτων βάσεων δεδομένων σε μία επιχείρηση ή ένα οργανισμό είναι το γεγονός ότι ένα τέτοιο σύστημα οργάνωσης και ανάκτησης δεδομένων, οικοδομείται με την εποπτεία και την καθοδήγηση του οργανισμού ή της επιχείρησης ώστε να καλύψει τις ανάγκες του συνόλου των τμημάτων και εφοδιάζει τον οργανισμό ή την επιχείρηση με Κεντρικό έλεγχο (centralized control) των λειτουργικών στοιχείων (operational data) του, δηλαδή: ο σχεδιασμός των εφαρμογών δε γίνεται ευκαιριακά από διάφορα Τμήματα του Οργανισμού ή της επιχείρησης αλλά γίνεται κεντρικά από ειδικούς στους οποίους ανατίθεται το έργο αυτό. υιοθετούνται ευκολότερα πρότυπα κατά τη σχεδίαση και την υλοποίηση του συστήματος βάσης δεδομένων. αποφεύγονται πλεονασμοί κατά τη φύλαξη στοιχείων κάθε νέα εφαρμογή αποτελεί αντικείμενο ειδικής μελέτης και (πρέπει να) είναι συμβατή με τις παλαιότερες εφαρμογές οι εφαρμογές κατασκευάζονται με τη χρήση των ίδιων εργαλείων διαχείρισης βάσεων δεδομένων κτλ Τι σημαίνει Embedded SQL Ο όρος embedded SQL αναφέρεται σε εντολές SQL που είναι τοποθετημένες μέσα σε ένα πρόγραμμα. Αυτό σημαίνει ότι μπορούμε μέσα στον κώδικα ενός προγράμματος να ενσωματώσουμε εντολές όπως INSERT, UPDATE, DELETE και SELECT. Γιατί Embedded SQL 15

Ένα πληροφοριακό σύστημα ή μια ρεαλιστική εφαρμογή συνήθως βασίζονται σε κάποια βάση δεδομένων και χρειάζονται έναν τρόπο για να επικοινωνήσουν μαζί της. Οι ενσωματωμένες εντολές SQL είναι το προγραμματιστικό μέσο που επιτρέπει στα προγράμματα να συνδεθούν, να αποσυνδεθούν με τη βάση δεδομένων και να διαχειριστούν τα στοιχεία της. Επειδή το πρόγραμμα φιλοξενεί τις εντολές SQL καλείται host program, και η γλώσσα στην οποία έχει γραφτεί καλείται host language. Αρχιτεκτονική Client / Server Μια εφαρμογή client/server αποτελείται από δυο μέρη ένα client και ένα server. Οι εφαρμογές client υποβάλλουν αιτήσεις σε servers, ενώ οι servers ικανοποιούν τις αιτήσεις των clients και συνήθως επιστρέφουν δεδομένα κατά την απόκρισή τους. Όταν εργαζόμαστε με μια βάση δεδομένων που είναι αποθηκευμένη σε ένα server, τότε αυτός ο server καλείται database server. Στο παρακάτω σχήμα φαίνεται ένα τυπικό client/server περιβάλλον που δείχνει τρεις client μηχανές να υποβάλλουν αιτήσεις που ικανοποιούνται από ένα μοναδικό server. Ο server μπορεί να αποκρίνεται σε αιτήσεις που υποβάλλονται ταυτόχρονα από πολλούς clients. Όταν ο server ικανοποιήσει την αιτούμενη λειτουργία τότε απαντά στον αντίστοιχο client. Αν ζητηθεί στο server να απαντήσει σε ένα query, θα απαντήσει στον client επιστρέφοντας ένα result set. Αν αντίθετα του ζητηθεί να εκτελέσει κάποια άλλη λειτουργία (ίσως εισαγωγή ή τροποποίηση γραμμών σε μια βάση δεδομένων), τότε θα απαντήσει με έναν κωδικό που θα δείχνει αν η λειτουργία εκτελέστηκε επιτυχημένα ή όχι. Α νταλλαγή δεδομένω ν Είναι προφανές από την πλευρά του προγραμματιστή πως όταν ένα πρόγραμμα επικοινωνεί (σύνδεση, εισαγωγή, ενημέρωση, αναζήτηση, διαγραφή, αποσύνδεση, κλπ) με μια βάση δεδομένων ανταλλάσσει στοιχεία. Η ανταλλαγή αυτή εξασφαλίζεται με τις host variables (μεταβλητές ξενιστή) και είναι μέρος του ορισμού embedded SQL. 16

Host Variables Οι host variables είναι το κλειδί για την επικοινωνία του προγράμματος μας με την Oracle. Μια host variable είναι μια μεταβλητή που δηλώνεται στο πρόγραμμά μας, ενώ τη μοιράζεται με την Oracle, εννοώντας πως και το πρόγραμμα και η Oracle μπορούν να αποκτήσουν πρόσβαση στην τιμή αυτής της μεταβλητής. Το πρόγραμμά μας χρησιμοποιεί input host variables για να περάσει δεδομένα στην Oracle. Η Oracle χρησιμοποιεί output host variables για να περάσει δεδομένα και πληροφορίες κατάστασης στο πρόγραμμά μας. Το πρόγραμμα εκχωρεί τιμές στις input host variables. Η Oracle εκχωρεί τιμές στις output host variables. Embedded SQL and Oracle Data types Συνήθως ένα host program εισάγει δεδομένα στην Oracle, και η Oracle εξάγει δεδομένα στο πρόγραμμα. Η Oracle αποθηκεύει τα δεδομένα εισόδου στους πίνακες της βάσης και αποθηκεύει τα δεδομένα εξόδου στις host variables του προγράμματος. Για να αποθηκεύσει ένα αντικείμενο δεδομένων (data item), η Oracle πρέπει να ξέρει τον τύπο του. Η Oracle αναγνωρίζει δυο είδη τύπων δεδομένων: internal και external. Οι Internal data types ορίζουν πως η Oracle αποθηκεύει δεδομένα στις στήλες της βάσης. Οι External data types ορίζουν πως τα δεδομένα αποθηκεύονται στις host variables. Όταν το host program εισάγει δεδομένα στην Oracle, η Oracle μετατρέπει τον external data type των input host variable στον αντίστοιχο internal data type της στήλης προορισμού της βάσης. Όταν η Oracle εξάγει δεδομένα στο host program, μετατρέπει τον internal data type της πηγαίας στήλης της βάσης στον external data type της output host variable. Ε ργαλεία και βιβλιοθήκες Για να ενσωματώσουμε εντολές SQL μέσα σε ένα πρόγραμμα είναι απαραίτητη η χρήση κάποιων βιβλιοθηκών καθώς και η χρήση κάποιων βοηθητικών εργαλείων ώστε να διευκολύνεται το έργο των προγραμματιστών. Κάθε μια τέτοια βιβλιοθήκη εξασφαλίζει την επικοινωνία των προγραμμάτων του εκάστοτε μεταγλωττιστή με ένα ή περισσότερα συστήματα διαχείρισης βάσεων δεδομένων (DBMS). Για κάθε μεταγλωττιστή απαιτείται να έχει κατασκευαστεί συγκεκριμένη βιβλιοθήκη και για αυτό το λόγο οι εταιρείες που κατασκευάζουν μεταγλωττιστές τους συνοδεύουν με τις απαραίτητες βιβλιοθήκες ώστε να επιτρέπουν στα προγράμματα να επικοινωνούν με βάσεις δεδομένων. Αλλά ακόμα και αν δεν υπάρχει υποστήριξη από τις εταιρίες κυκλοφορούν πολλές βιβλιοθήκες και εργαλεία στο διαδίκτυο με χαμηλό ή χωρίς κόστος. Αρκετά περιβάλλοντα ανάπτυξης εφαρμογών όπως το Microsoft Visual C++ ή Borland C++ Builder ή Borland Delphi έχουν ενσωματωμένα στο πακέτο τους αυτές τις βιβλιοθήκες και τα εργαλεία χωρίς να 17

έχουμε πάντα αντίληψη για την ύπαρξη αυτών των βιβλιοθηκών λόγω του πολύ καλού και εύχρηστου περιβάλλοντος διεπαφής που διαθέτουν. Τι είναι το εργαλείο Ργο* / ++ Ο Pro*C/C++ είναι ένας προ-μεταγλωττιστής (precompiler) που μας επιτρέπει να δημιουργήσουμε εφαρμογές που θα έχουν πρόσβαση σε μια βάση δεδομένων Oracle όταν μας ενδιαφέρει η γρήγορη ανάπτυξη εφαρμογών και ταυτόχρονα η συμβατότητα με αλλά συστήματα. Ο Pro*C/C++ είναι ένα προγραμματιστικό εργαλείο που κάνει εφικτή την ενσωμάτωση εντολών SQL (Structured Query Language statements) σε ένα πρόγραμμα C ή C++. Ο Pro*C/C++ precompiler μεταφράζει (ή μετατρέπει) αυτές τις εντολές σε standard Oracle runtime library calls, και μετά παράγει (ή δημιουργεί) ένα τροποποιημένο πηγαίο πρόγραμμα (source program) το οποίο εμείς μπορούμε να κάνουμε compile και link και να το τρέξουμε σαν ένα οποιοδήποτε πρόγραμμα. 18

ΚΕΦΑΛΑΙΟ 30 ΠΙΝΑΚΕΣ ΒΑΣΕΩΣ ΔΕΔΟΜΕΝΩΝ Οι πίνακες που έχουμε είναι επτά. 1ος πίνακας Ο πρώτος μας πίνακας είναι ο πίνακας με το όνομα «ΑΣΘΕΝΗΣ» και περιέχει τα χαρακτηριστικά των ασθενών. Αναλυτικότερα περιέχει : τον κωδικό του ασθενή που είναι τύπου Number και καταλαμβάνει 10 θέσεις μνήμης. το όνομα του ασθενή που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. το επώνυμο του ασθενή που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. το όνομα πατρός του ασθενή που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. το όνομα μητρός του ασθενή που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. την ημερομηνία γέννησης του ασθενή που είναι τύπου Number και καταλαμβάνει 10 θέσεις μνήμης. τη διεύθυνση του ασθενή που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. τη αριθμό της διεύθυνσης του ασθενή που είναι τύπου Number και καταλαμβάνει 5 θέσεις μνήμης. την πόλη του ασθενή που είναι τύπου Char και καταλαμβάνει 20 θέσεις μνήμης. το τηλέφωνο του ασθενή που είναι τύπου Number και καταλαμβάνει 12 θέσεις μνήμης. το επάγγελμα του ασθενή που είναι τύπου Char και καταλαμβάνει 20 θέσεις μνήμης. την ασφάλεια του ασθενή που είναι τύπου Char και καταλαμβάνει 10 θέσεις μνήμης. την ομάδα αίματος του ασθενή που είναι τύπου Char και καταλαμβάνει 10 θέσεις μνήμης. το ιστορικό του ασθενή που είναι τύπου Char και καταλαμβάνει 50 θέσεις μνήμης. Ο πίνακας δημιουργείται με την εντολή : CREATE TABLE ASTHENHS (code NUMBER(10),onoma CHAR(40),eponymo CHAR(40), onoma_patros CHAR(40), onoma_mhtros CHAR(40), im_gen NUMBER (10), address CHAR(40), arithmos NUMBER(5), city CHAR(20), thlefono NUMBER(12), epaggelma CHAR(20), asfaleia CHAR(10), omada_aimatos CHAR(10), istoriko CHAR(50),PRIMARY KEY (code)); 19

Ο πίνακας διαγράφεται με την εντολή : DROP TABLE ASTHENHS; 2ος πίνακας Ο δεύτερος μας πίνακας είναι ο πίνακας με το όνομα «ΔΙΚΤΥΟ» που αναφέρεται στην ποιότητα της σύνδεσης του δικτύου του κάθε τηλεϊατρικού κέντρου. Αναλυτικότερα περιέχει : τον κωδικό του δικτύου που είναι τύπου Number και καταλαμβάνει 10 θέσεις μνήμης. την ποιότητα σύνδεσης Char που είναι τύπου Number και καταλαμβάνει 10 θέσεις μνήμης. Ο πίνακας δημιουργείται με την εντολή : CREATE TABLE DIKTYO (code NUMBER(10), quality NUMBER(10), PRIMARY KEY (code)); Ο πίνακας διαγράφεται με την εντολή : DROP TABLE DIKTYO; 3 ος πίνακας Ο τρίτος μας πίνακας είναι ο πίνακας με το όνομα «ΙΑΤΡΙΚΟ ΚΕΝΤΡΟ» Αναλυτικότερα περιέχει : τον κωδικό του ιατρικού κέντρου που είναι τύπου Number και καταλαμβάνει 10 θέσεις μνήμης. το όνομα του ιατρικού κέντρου που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. τη διεύθυνση του ιατρικού κέντρου που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. τη αριθμό της διεύθυνσης του ιατρικού κέντρου που είναι τύπου Number και καταλαμβάνει 5 θέσεις μνήμης. την πόλη του ιατρικού κέντρου που είναι τύπου Char και καταλαμβάνει 20 θέσεις μνήμης. το τηλέφωνο του ιατρικού κέντρου που είναι τύπου Number και καταλαμβάνει 12 θέσεις μνήμης. τον αριθμό διαθέσιμων κρεβατιών του ιατρικού κέντρου που είναι τύπου Number και καταλαμβάνει 5 θέσεις μνήμης. Ο πίνακας δημιουργείται με την εντολή : CREATE TABLE IATRIKO_KENDRO(code NUMBER(10),onoma CHAR(40),address CHAR(40),arithmos NUMBER(5), city CHAR(20), thlefono NUMBER(12), ar_krevatiwn NUMBER(5),PRIMARY KEY (code)); 20

Ο πίνακας διαγράφεται με την εντολή : DROP TABLE IATRIKO_KENDRO; 4ος πίνακας Ο τέταρτός μας πίνακας είναι ο πίνακας με το όνομα «ΓΙΑΤΡΟΣ» Αναλυτικότερα περιέχει : τον κωδικό του γιατρού που είναι τύπου Number και καταλαμβάνει 10 θέσεις μνήμης. το όνομα του γιατρού που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. το επώνυμο του γιατρού που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. το όνομα πατρός του γιατρού που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. το όνομα μητρός του γιατρού που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. το τηλέφωνο του γιατρού που είναι τύπου Number και καταλαμβάνει 12 θέσεις μνήμης. την ειδικότητα του γιατρού που είναι τύπου Char και καταλαμβάνει 20 θέσεις μνήμης. το ιατρικό κέντρου του γιατρού που είναι τύπου Char και καταλαμβάνει 20 θέσεις μνήμης. Ο πίνακας δημιουργείται με την εντολή : CREATE TABLE IATROS (code NUMBER(10),onoma CHAR(40),eponymo CHAR(40), onoma_patros CHAR(40), onoma_mhtros CHAR(40),thlefono NUMBER(12), idikotita CHAR(20),iatriko_kendro CHAR(20), PRIMARY KEY (code)); Ο πίνακας διαγράφεται με την εντολή : DROP TABLE IATROS; 5 ος πίνακας Ο πέμπτος μας πίνακας είναι ο πίνακας με το όνομα «ΦΑΡΜΑΚΑ» Αναλυτικότερα περιέχει : τον κωδικό του φαρμάκου που είναι τύπου Number και καταλαμβάνει 10 θέσεις μνήμης. το όνομα του φαρμάκου που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. την παρενέργεια του φαρμάκου που είναι τύπου Char και καταλαμβάνει 40 θέσεις μνήμης. 21