DROP TABLE IF EXISTS "ΝΟΣΟΚΟΜΕΙΟ" CASCADE;
DROP TABLE IF EXISTS "ΑΣΘΕΝΗΣ" CASCADE;
DROP TABLE IF EXISTS "ΙΑΤΡΟΣ" CASCADE;
DROP TABLE IF EXISTS "ΕΞΕΤΑΣΗ" CASCADE;
DROP TABLE IF EXISTS "ΔΙΑΓΝΩΣΗ" CASCADE;
DROP TABLE IF EXISTS "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ" CASCADE;
DROP TABLE IF EXISTS "ΕΞΕΤΑΣΗ_ΑΣΘΕΝΗ" CASCADE;
DROP TABLE IF EXISTS "ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ" CASCADE;
-- Δημιουργία Πίνακα { ΝΟΣΟΚΟΜΕΙΟ }:
CREATE TABLE "ΝΟΣΟΚΟΜΕΙΟ"
("ΚΩΔΙΚΟΣ_ΝΟΣ" INT NOT NULL,
"ΟΝΟΜΑ_ΝΟΣ" VARCHAR(60),
"ΠΟΛΗ_ΝΟΣ" VARCHAR(30),
-- "ΠΟΛΗ_ΝΟΣ" VARCHAR(30) CHECK ("ΠΟΛΗ_ΝΟΣ" = 'ΠΑΤΡΑ' OR "ΠΟΛΗ_ΝΟΣ" = 'ΑΘΗΝΑ' OR "ΠΟΛΗ_ΝΟΣ" = 'ΘΕΣΣΑΛΟΝΙΚΗ'),
"ΤΗΛΕΦΩΝΟ_ΝΟΣ" VARCHAR(10),
"ΔΙΕΥΘΥΝΣΗ_ΝΟΣ" VARCHAR(50),
-- UNIQUE ("ΟΝΟΜΑ_ΝΟΣ"),
PRIMARY KEY("ΚΩΔΙΚΟΣ_ΝΟΣ"));
-- Δημιουργία του Πίνακα { ΑΣΘΕΝΗΣ }:
CREATE TABLE "ΑΣΘΕΝΗΣ"
("ΚΩΔΙΚΟΣ_ΑΣΘ" INT NOT NULL,
"ΕΠΩΝΥΜΟ_ΑΣΘ" VARCHAR(40),
"ΟΝΟΜΑ_ΑΣΘ" VARCHAR(20),
"ΔΙΕΥΘΥΝΣΗ_ΑΣΘ" VARCHAR(50),
"ΤΗΛΕΦΩΝΟ_ΑΣΘ" VARCHAR(10),
-- UNIQUE ("ΤΗΛΕΦΩΝΟ_ΑΣΘ"),
PRIMARY KEY("ΚΩΔΙΚΟΣ_ΑΣΘ"));
-- Δημιουργία Πίνακα { ΙΑΤΡΟΣ }:
CREATE TABLE "ΙΑΤΡΟΣ"
("ΚΩΔΙΚΟΣ_ΙΑΤ" INT NOT NULL,
"ΕΠΩΝΥΜΟ_ΙΑΤ" VARCHAR(40),
"ΟΝΟΜΑ_ΙΑΤ" VARCHAR(20),
"ΔΙΕΥΘΥΝΣΗ_ΙΑΤ" VARCHAR(50),
"ΤΗΛΕΦΩΝΟ_ΙΑΤ" VARCHAR(10),
"ΚΩΔ_ΝΟΣ_ΕΡΓ" INT,
-- UNIQUE ("ΤΗΛΕΦΩΝΟ_ΙΑΤ"),
FOREIGN KEY ("ΚΩΔ_ΝΟΣ_ΕΡΓ") REFERENCES "ΝΟΣΟΚΟΜΕΙΟ"("ΚΩΔΙΚΟΣ_ΝΟΣ"),
PRIMARY KEY("ΚΩΔΙΚΟΣ_ΙΑΤ"));
-- Προσέξτε ότι το Πεδίο “ΚΩΔ_ΝΟΣ_ΕΡΓ” προέρχεται από τον Πίνακα {ΝΟΣΟΚΟΜΕΙΟ} -αποτελεί, συνεπώς,
-- ξένο κλειδί. Το πλεονέκτημα αυτού του ορισμού είναι πως από τη λειτουργία του Σ.Δ.Β.Δ. δεν μπορεί
-- να διαγραφεί ο πίνακας {ΝΟΣΟΚΟΜΕΙΟ} αν δε διαγραφεί πρώτα ο πίνακας {ΙΑΤΡΟΣ} και πως τα Πεδία του
-- δεύτερου πίνακα ελέγχονται ως προς τον πρώτο πριν εισαχθούν (αν δεν υπάρχουν, δηλαδή, στον πρώτο
-- πίνακα δε θα εισαχθούν στο δεύτερο πίνακα).
-- Δημιουργία του Πίνακα { ΕΞΕΤΑΣΗ }:
CREATE TABLE "ΕΞΕΤΑΣΗ"
("ΚΩΔΙΚΟΣ_ΕΞΕ" INT NOT NULL,
"ΠΕΡΙΓΡΑΦΗ_ΕΞΕ" VARCHAR(60),
PRIMARY KEY("ΚΩΔΙΚΟΣ_ΕΞΕ"));
-- Δημιουργία του Πίνακα { ΔΙΑΓΝΩΣΗ }:
CREATE TABLE "ΔΙΑΓΝΩΣΗ"
("ΚΩΔΙΚΟΣ_ΔΙΑ" INT NOT NULL,
"ΠΕΡΙΓΡΑΦΗ_ΔΙΑ" VARCHAR(60),
PRIMARY KEY("ΚΩΔΙΚΟΣ_ΔΙΑ"));
-- Δημιουργία του Πίνακα { ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ }:
CREATE TABLE "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"
("ΚΩΔΙΚΟΣ_ΕΠΙ" INT NOT NULL,
"ΚΩΔΙΚΟΣ_ΑΣΘ" INT,
"ΚΩΔΙΚΟΣ_ΝΟΣ" INT,
"ΗΜΕΡΟΜΗΝΙΑ_ΕΠΙ" DATE,
FOREIGN KEY ("ΚΩΔΙΚΟΣ_ΑΣΘ") REFERENCES "ΑΣΘΕΝΗΣ"("ΚΩΔΙΚΟΣ_ΑΣΘ"),
FOREIGN KEY ("ΚΩΔΙΚΟΣ_ΝΟΣ") REFERENCES "ΝΟΣΟΚΟΜΕΙΟ"("ΚΩΔΙΚΟΣ_ΝΟΣ"),
PRIMARY KEY("ΚΩΔΙΚΟΣ_ΕΠΙ"));
-- Δημιουργία του Πίνακα { ΕΞΕΤΑΣΗ_ΑΣΘΕΝΗ }:
CREATE TABLE "ΕΞΕΤΑΣΗ_ΑΣΘΕΝΗ"
("ΚΩΔΙΚΟΣ_ΕΠΙ" INT NOT NULL,
"ΚΩΔΙΚΟΣ_ΕΞΕ" INT NOT NULL,
"ΗΜΕΡΟΜΗΝΙΑ_ΕΞΕ" DATE NOT NULL,
"ΑΠΟΤΕΛΕΣΜΑ_ΕΞΕ" VARCHAR(20),
FOREIGN KEY ("ΚΩΔΙΚΟΣ_ΕΠΙ") REFERENCES "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"("ΚΩΔΙΚΟΣ_ΕΠΙ"),
FOREIGN KEY ("ΚΩΔΙΚΟΣ_ΕΞΕ") REFERENCES "ΕΞΕΤΑΣΗ"("ΚΩΔΙΚΟΣ_ΕΞΕ"),
PRIMARY KEY("ΚΩΔΙΚΟΣ_ΕΠΙ", "ΚΩΔΙΚΟΣ_ΕΞΕ", "ΗΜΕΡΟΜΗΝΙΑ_ΕΞΕ"));
-- Δημιουργία του Πίνακα { ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ }:
CREATE TABLE "ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ"
("ΚΩΔΙΚΟΣ_ΕΠΙ" INT NOT NULL,
"ΚΩΔΙΚΟΣ_ΔΙΑ" INT NOT NULL,
"ΗΜΕΡΟΜΗΝΙΑ_ΔΙΑ" DATE NOT NULL,
"ΣΧΟΛΙΑ_ΔΙΑ" VARCHAR(100),
"ΚΩΔΙΚΟΣ_ΙΑΤ" INT NOT NULL,
FOREIGN KEY ("ΚΩΔΙΚΟΣ_ΕΠΙ") REFERENCES "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"("ΚΩΔΙΚΟΣ_ΕΠΙ"),
FOREIGN KEY ("ΚΩΔΙΚΟΣ_ΔΙΑ") REFERENCES "ΔΙΑΓΝΩΣΗ"("ΚΩΔΙΚΟΣ_ΔΙΑ"),
FOREIGN KEY ("ΚΩΔΙΚΟΣ_ΙΑΤ") REFERENCES "ΙΑΤΡΟΣ"("ΚΩΔΙΚΟΣ_ΙΑΤ"),
PRIMARY KEY("ΚΩΔΙΚΟΣ_ΕΠΙ", "ΚΩΔΙΚΟΣ_ΔΙΑ", "ΚΩΔΙΚΟΣ_ΙΑΤ"));
-- Εισαγωγή Στοιχείων στον Πίνακα { ΝΟΣΟΚΟΜΕΙΟ }:
INSERT INTO "ΝΟΣΟΚΟΜΕΙΟ" VALUES (100, 'ΑΓΙΟΣ ΑΝΔΡΕΑΣ', 'ΠΑΤΡΑ', '2610456223', 'ΓΟΥΝΑΡΗ 54');
INSERT INTO "ΝΟΣΟΚΟΜΕΙΟ" VALUES (101, 'ΝΟΣΗΜΑΤΩΝ ΘΩΡΑΚΟΣ', 'ΠΑΤΡΑ', '2610223444', 'ΕΓΛΥΚΑΔΑΣ 33');
INSERT INTO "ΝΟΣΟΚΟΜΕΙΟ" VALUES (102, 'ΕΥΑΓΓΕΛΙΣΜΟΣ', 'ΑΘΗΝΑ', '2103342256', 'ΒΑΣΙΛΙΣΗΣ ΣΟΦΙΑΣ 123');
INSERT INTO "ΝΟΣΟΚΟΜΕΙΟ" VALUES (104, 'ΑΧΕΠΑ', 'ΘΕΣΣΑΛΟΝΙΚΗ', '2310224466', 'ΤΣΙΜΙΣΚΗ 22');
INSERT INTO "ΝΟΣΟΚΟΜΕΙΟ" VALUES (105, 'ΠΑΝΕΠΙΣΤΗΜΙΑΚΟ ΝΟΣΟΚΟΜΕΙΟ ΡΙΟΥ', 'ΡΙΟ', '2610999887', 'ΗΡΩΩΝ ΠΟΛΥΤΕΧΝΕΙΟΥ 2');
INSERT INTO "ΝΟΣΟΚΟΜΕΙΟ" VALUES (106, 'ΑΓΛΑΪΑ ΚΥΡΙΑΚΟΥ', 'ΑΘΗΝΑ', '2102345678', 'ΒΑΣΙΛΕΩΣ ΓΕΩΡΓΙΟΥ 23');
INSERT INTO "ΝΟΣΟΚΟΜΕΙΟ" VALUES (107, 'ΚΑΡΑΜΑΝΔΑΝΕΙΟ', 'ΠΑΤΡΑ', '2610666554', 'ΣΟΥΛΙΟΥ 34');
INSERT INTO "ΝΟΣΟΚΟΜΕΙΟ" VALUES (108, 'ΠΑΠΑΝΙΚΟΛΑΟΥ', 'ΘΕΣΣΑΛΟΝΙΚΗ', '2310234512', 'ΛΕΩΦΟΡΟΣ ΑΛΕΞΑΝΔΡΟΥ 2');
-- Εισαγωγή Στοιχείων στον Πίνακα { ΑΣΘΕΝΗΣ }:
INSERT INTO "ΑΣΘΕΝΗΣ" VALUES (30, 'ΧΡΙΣΤΟΠΟΥΛΟΣ', 'ΣΠΥΡΙΔΩΝ', 'ΠΑΤΡΑ, ΡΗΓΑ ΦΕΡΑΙΟΥ 15', '6944478933');
INSERT INTO "ΑΣΘΕΝΗΣ" VALUES (31, 'ΓΚΟΤΣΟΠΟΥΛΟΣ', 'ΒΑΣΙΛΗΣ', 'ΠΑΤΡΑ, ΑΓΥΑΣ 23', '6978845622');
INSERT INTO "ΑΣΘΕΝΗΣ" VALUES (37, 'ΣΑΚΟΠΟΥΛΟΣ', 'ΕΥΑΓΓΕΛΟΣ', 'ΠΑΤΡΑ, ΘΕΣΣΑΛΟΝΙΚΗΣ 34', '6973422555');
-- INSERT INTO "ΑΣΘΕΝΗΣ" VALUES (36, 'ΑΚΟΥΜΙΑΝΑΚΗΣ', 'ΔΗΜΟΣΘΕΝΗΣ', 'ΗΡΑΚΛΕΙΟ, ΚΡΗΤΗΣ', '6978122555');
-- Εισαγωγή Στοιχείων στον Πίνακα { ΙΑΤΡΟΣ }:
INSERT INTO "ΙΑΤΡΟΣ" VALUES (1, 'ΓΕΩΡΓΟΠΟΥΛΟΣ', 'ΓΕΩΡΓΙΟΣ', 'ΠΑΤΡΕΩΣ 12', '6977856422', 104);
INSERT INTO "ΙΑΤΡΟΣ" VALUES (2, 'ΠΑΠΑΛΟΥΚΟΠΟΥΛΟΣ', 'ΙΩΑΝΝΗΣ', 'ΓΟΥΝΑΡΗ 34', '6783412655',101);
INSERT INTO "ΙΑΤΡΟΣ" VALUES (12, 'ΒΑΛΣΑΜΙΔΗΣ', 'ΣΤΑΥΡΟΣ', 'ΛΕΩΦΟΡΟΣ ΑΛΕΞΑΝΔΡΟΥ 256', '6973612988',108);
-- Εισαγωγή Στοιχείων στον Πίνακα { ΕΞΕΤΑΣΗ }:
INSERT INTO "ΕΞΕΤΑΣΗ" VALUES (1000, 'ΓΕΝΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΑΙΜΑΤΟΣ');
INSERT INTO "ΕΞΕΤΑΣΗ" VALUES (1001, 'ΑΡΘΡΟΣΚΟΠΗΣΗ');
INSERT INTO "ΕΞΕΤΑΣΗ" VALUES (1010, 'ΕΓΚΕΦΑΛΟΓΡΑΦΗΜΑ');
-- Εισαγωγή Στοιχείων στον Πίνακα { ΔΙΑΓΝΩΣΗ }:
INSERT INTO "ΔΙΑΓΝΩΣΗ" VALUES (1000, 'ΧΟΛΥΣΤΕΡΙΝΗ-ΤΡΙΓΛΥΚΕΡΙΔΙΑ');
INSERT INTO "ΔΙΑΓΝΩΣΗ" VALUES (1001, 'ΑΡΘΡΙΤΙΔΑ');
INSERT INTO "ΔΙΑΓΝΩΣΗ" VALUES (1010, 'ΜΗ ΒΡΑΧΥΚΥΚΛΩΜΕΝΟΙ ΝΕΥΡΩΝΕΣ');
-- Εισαγωγή Στοιχείων στον Πίνακα { ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ }:
INSERT INTO "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ" VALUES (301, 30, 100, TO_DATE('2/2/2009', 'dd/mm/yyyy'));
INSERT INTO "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ" VALUES (311, 31, 101, TO_DATE('2/3/2009', 'dd/mm/yyyy'));
INSERT INTO "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ" VALUES (371, 37, 106, TO_DATE('6/5/2008', 'dd/mm/yyyy'));
INSERT INTO "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ" VALUES (381, 30, 100, TO_DATE('7/3/2005', 'dd/mm/yyyy'));
-- Εισαγωγή Στοιχείων στον Πίνακα { ΕΞΕΤΑΣΗ_ΑΣΘΕΝΗ }:
INSERT INTO "ΕΞΕΤΑΣΗ_ΑΣΘΕΝΗ" VALUES (301, 1000, TO_DATE('5/2/2009', 'dd/mm/yyyy'), 'ΚΑΛΟ');
INSERT INTO "ΕΞΕΤΑΣΗ_ΑΣΘΕΝΗ" VALUES (311, 1001, TO_DATE('5/3/2009', 'dd/mm/yyyy'), 'ΜΕΤΡΙΟ');
-- INSERT INTO "ΕΞΕΤΑΣΗ_ΑΣΘΕΝΗ" VALUES (371, 1008, TO_DATE('8/5/2008', 'dd/mm/yyyy'), 'ΚΑΛΟ');
-- Εισαγωγή Στοιχείων στον Πίνακα { ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ }:
INSERT INTO "ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ" VALUES (301, 1000, TO_DATE('6/2/2009', 'dd/mm/yyyy'), 'ΕΛΑΦΡΑ ΔΙΑΙΤΑ', 1);
INSERT INTO "ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ" VALUES (311, 1001, TO_DATE('6/3/2009', 'dd/mm/yyyy'), 'ΌΧΙ ΑΛΑΤΙ ΣΤΑ ΦΑΓΗΤΑ', 2);
INSERT INTO "ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ" VALUES (371, 1010, TO_DATE('9/5/2008', 'dd/mm/yyyy'), 'Γυμναστική - Φυσιοθεραπείες', 1);
INSERT INTO "ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ" VALUES (381, 1000, TO_DATE('8/3/2005', 'dd/mm/yyyy'), 'ΝΑ ΑΠΟΦΕΥΓΟΝΤΑΙ ΚΑΡΥΚΕΥΜΑΤΑ ΚΑΙ ΣΑΛΤΣΕΣ', 2);
-- Ασκηση 10 (Database updates)
/*
1. Ενημερώστε κατάλληλα τη ΒΔ ετσι ώστε να καταγραφεται ότι το νοσοκομείο «Άγιος Ανδρέας» της Πάτρας,
μεταφέρθηκε σε νέο κτήριο με διεύθυνση «Κλάους 55» εξαιτίας ζημιών που υπέστη από τον ισχυρό
σεισμό τον Ιούνιο του 2008.
*/
UPDATE "ΝΟΣΟΚΟΜΕΙΟ"
SET "ΔΙΕΥΘΥΝΣΗ_ΝΟΣ" = 'ΚΛΑΟΥΣ 55'
WHERE "ΟΝΟΜΑ_ΝΟΣ" = 'ΑΓΙΟΣ ΑΝΔΡΕΑΣ';
-- Επαλήθευση
SELECT * FROM "ΝΟΣΟΚΟΜΕΙΟ";
/*
2. Ενημερώστε κατάλληλα τη ΒΔ ετσι ώστε να καταγραφεται ο ιατρός Γεωργόπουλος Γεώργιος πήρε μετάθεση
στο Νοσοκομείο Αχέπα της Θεσσαλονίκης.
*/
UPDATE "ΙΑΤΡΟΣ"
SET "ΚΩΔ_ΝΟΣ_ΕΡΓ"= ( SELECT "ΝΟΣΟΚΟΜΕΙΟ"."ΚΩΔΙΚΟΣ_ΝΟΣ"
FROM "ΝΟΣΟΚΟΜΕΙΟ"
WHERE "ΝΟΣΟΚΟΜΕΙΟ"."ΟΝΟΜΑ_ΝΟΣ"='ΑΧΕΠΑ')
WHERE "ΙΑΤΡΟΣ"."ΕΠΩΝΥΜΟ_ΙΑΤ"='ΓΕΩΡΓΟΠΟΥΛΟΣ'
AND "ΙΑΤΡΟΣ"."ΟΝΟΜΑ_ΙΑΤ"='ΓΕΩΡΓΙΟΣ';
-- Επαλήθευση
SELECT "ΝΟΣΟΚΟΜΕΙΟ"."ΟΝΟΜΑ_ΝΟΣ"
FROM "ΝΟΣΟΚΟΜΕΙΟ", "ΙΑΤΡΟΣ"
WHERE "ΝΟΣΟΚΟΜΕΙΟ"."ΚΩΔΙΚΟΣ_ΝΟΣ"="ΙΑΤΡΟΣ"."ΚΩΔ_ΝΟΣ_ΕΡΓ" AND
"ΙΑΤΡΟΣ"."ΕΠΩΝΥΜΟ_ΙΑΤ"='ΓΕΩΡΓΟΠΟΥΛΟΣ' AND
"ΙΑΤΡΟΣ"."ΟΝΟΜΑ_ΙΑΤ"='ΓΕΩΡΓΙΟΣ';
/*
3. Oι ιατροί των Νοσοκομείων της Πάτρας, να εισαχθούν σαν Ασθενείς στον πίνακα των Ασθενών.
Να θεωρήσετε ότι οι κωδικοί ιατρών γίνονται κώδικοί ασθενών.
*/
INSERT INTO "ΑΣΘΕΝΗΣ"
SELECT "ΙΑΤΡΟΣ"."ΚΩΔΙΚΟΣ_ΙΑΤ","ΙΑΤΡΟΣ"."ΕΠΩΝΥΜΟ_ΙΑΤ","ΙΑΤΡΟΣ"."ΟΝΟΜΑ_ΙΑΤ",
"ΙΑΤΡΟΣ"."ΔΙΕΥΘΥΝΣΗ_ΙΑΤ", "ΙΑΤΡΟΣ"."ΤΗΛΕΦΩΝΟ_ΙΑΤ"
FROM "ΙΑΤΡΟΣ","ΝΟΣΟΚΟΜΕΙΟ"
WHERE "ΙΑΤΡΟΣ"."ΚΩΔ_ΝΟΣ_ΕΡΓ"="ΝΟΣΟΚΟΜΕΙΟ"."ΚΩΔΙΚΟΣ_ΝΟΣ" AND "ΝΟΣΟΚΟΜΕΙΟ"."ΠΟΛΗ_ΝΟΣ"='ΠΑΤΡΑ';
-- Επαλήθευση
SELECT * FROM "ΑΣΘΕΝΗΣ";
/*
4. Τροποποιήστε τον πίνακα ΙΑΤΡΟΣ έτσι ώστε να προστεθεί πεδίο «Μισθός_Γιατρού» και να
αρχικοποιηθεί στην τιμή 2000 ευρώ. Στη συνέχεια να δωθεί αύξηση 10% στους μισθούς των Ιατρών
του Πανεπιστημιακού Νοασοκομείου του Ρίου.
*/
ALTER TABLE "ΙΑΤΡΟΣ" ADD "ΜΙΣΘΟΣ" INT;
UPDATE "ΙΑΤΡΟΣ"
SET "ΜΙΣΘΟΣ" = 2000;
UPDATE "ΙΑΤΡΟΣ"
SET "ΜΙΣΘΟΣ" = "ΜΙΣΘΟΣ" + "ΜΙΣΘΟΣ" * 0.10
WHERE "ΙΑΤΡΟΣ"."ΚΩΔ_ΝΟΣ_ΕΡΓ"=(SELECT "ΝΟΣΟΚΟΜΕΙΟ"."ΚΩΔΙΚΟΣ_ΝΟΣ"
FROM "ΝΟΣΟΚΟΜΕΙΟ" WHERE "ΝΟΣΟΚΟΜΕΙΟ"."ΟΝΟΜΑ_ΝΟΣ"='ΠΑΝΕΠΙΣΤΗΜΙΑΚΟ ΝΟΣΟΚΟΜΕΙΟ ΡΙΟΥ');
-- Επαλήθευση
SELECT * FROM "ΙΑΤΡΟΣ";
/*
5. Θεωρείστε ότι η ΒΔ η οποία δημιουργήσατε χρησιμοποιείται από μια εφαρμογή στο διαδίκτυο στην οποία
έχουν πρόσβαση μόνο οι γιατροί. Κάθε χρήστης γιατρός διαθέτει ένα όνομα χρήστη (username)
και έναν κωδικό πρόσβασης (password) τα οποία και χρησιμοποιεί για να πιστοποιήσει την ταυτότητά του
όταν εισέρχεται στο σύστημα. Μετά την επιτυχή πρόσβαση στο σύστημα, κάθε γιατρός έχει το δικαίωμα να
βλέπει μόνο τους ασθενείς και τις διαγνώσεις των ασθενών που επισκέφθηκαν το νοσοκομείο στο οποίο εργάζεται.
Με βάση τα παραπάνω:
(5α). Τροποποιείστε κατάλληλα τον πίνακα ΙΑΤΡΟΣ, έτσι ώστε να υποστηρίζεται ο έλεγχος πρόσβασης στο σύστημα
με τη χρήση username και password. Ενημερώστε κατάλληλα τον τροποποιημένο πίνακα έτσι ώστε το όνομα χρήστη
του κάθε γιατρού να είναι doctor1, doctor2, κοκ.
*/
ALTER TABLE "ΙΑΤΡΟΣ"
ADD username VARCHAR(30),
ADD password VARCHAR(30);
UPDATE "ΙΑΤΡΟΣ" SET USERNAME='doctor1' WHERE ΚΩΔΙΚΟΣ_ΙΑΤ=1;
UPDATE "ΙΑΤΡΟΣ" SET USERNAME='doctor2' WHERE ΚΩΔΙΚΟΣ_ΙΑΤ=2;
UPDATE "ΙΑΤΡΟΣ" SET USERNAME='doctor12' WHERE ΚΩΔΙΚΟΣ_ΙΑΤ=12;
-- Επαλήθευση
SELECT * FROM "ΙΑΤΡΟΣ";
/*
(5β). Αν υποθέσουμε ότι το σύστημα χρησιμοποιείται απο τον ιατρό με username = doctor2 υπολογίστε
τους ασθενείς που έχουν διαγνωσθεί με ΑΡΘΡΙΤΙΔΑ απο τον ιατρό σε ποιά επίσκεψη και ποιά η
ημερομηνία της επίσκεψης
*/
SELECT "ΑΣΘΕΝΗΣ"."ΚΩΔΙΚΟΣ_ΑΣΘ", "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΕΠΙ", "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"."ΗΜΕΡΟΜΗΝΙΑ_ΕΠΙ"
FROM "ΔΙΑΓΝΩΣΗ", "ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ", "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ", "ΑΣΘΕΝΗΣ"
WHERE "ΑΣΘΕΝΗΣ"."ΚΩΔΙΚΟΣ_ΑΣΘ"="ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΑΣΘ"
AND "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΕΠΙ"="ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΕΠΙ"
AND "ΔΙΑΓΝΩΣΗ"."ΚΩΔΙΚΟΣ_ΔΙΑ"="ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΔΙΑ"
AND "ΔΙΑΓΝΩΣΗ"."ΠΕΡΙΓΡΑΦΗ_ΔΙΑ" ='ΑΡΘΡΙΤΙΔΑ'
AND "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΝΟΣ" IN (
SELECT "ΚΩΔ_ΝΟΣ_ΕΡΓ"
FROM "ΙΑΤΡΟΣ"
WHERE USERNAME = 'doctor2');
/*
(5γ). Θεωρήστε τώρα ότι οι ασθενής πρέπει να δίνουν την συγκατάθεσή τους για να μπορούν οι ιατροί να
βλέπουν τα δεδομένα τους. Τροποποιείστε κατάλληλα το σχήμα της ΒΔ έτσι ώστε όλοι οι νιατροί να μπορούν
να δούν διαγνώσεις του ασθενή με κωδικό 31
*/
-- Δημιουργία Πίνακα {ΕΠΙΤΡΕΠΕΙ} */
CREATE TABLE "ΕΠΙΤΡΕΠΕΙ"
("ΚΩΔΙΚΟΣ_ΑΣΘ" INT NOT NULL,
"ΚΩΔΙΚΟΣ_ΝΟΣ" INT,
FOREIGN KEY ("ΚΩΔΙΚΟΣ_ΝΟΣ") REFERENCES "ΝΟΣΟΚΟΜΕΙΟ"("ΚΩΔΙΚΟΣ_ΝΟΣ"),
PRIMARY KEY("ΚΩΔΙΚΟΣ_ΑΣΘ","ΚΩΔΙΚΟΣ_ΝΟΣ")
);
-- Αν τώρα εκτελεστεί το παρακάτω ερώτημα (πριν την εισαγωγή πλειάδας στον πίνακα ΕΠΙΤΡΕΠΕΙ) θα διαπιστώσετε το κενό σύνολο
SELECT "ΑΣΘΕΝΗΣ"."ΚΩΔΙΚΟΣ_ΑΣΘ",
"ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΕΠΙ",
"ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"."ΗΜΕΡΟΜΗΝΙΑ_ΕΠΙ",
"ΔΙΑΓΝΩΣΗ"."ΠΕΡΙΓΡΑΦΗ_ΔΙΑ"
FROM "ΔΙΑΓΝΩΣΗ", "ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ", "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ", "ΑΣΘΕΝΗΣ"
WHERE "ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΕΠΙ"="ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΕΠΙ"
AND "ΔΙΑΓΝΩΣΗ"."ΚΩΔΙΚΟΣ_ΔΙΑ"="ΔΙΑΓΝΩΣΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΔΙΑ"
AND "ΑΣΘΕΝΗΣ"."ΚΩΔΙΚΟΣ_ΑΣΘ"="ΕΠΙΣΚΕΨΗ_ΑΣΘΕΝΗ"."ΚΩΔΙΚΟΣ_ΑΣΘ"
AND "ΑΣΘΕΝΗΣ"."ΚΩΔΙΚΟΣ_ΑΣΘ" IN (
SELECT "ΚΩΔΙΚΟΣ_ΑΣΘ"
FROM "ΕΠΙΤΡΕΠΕΙ");
-- Αν όμως ο ασθενής με κωδικό 31 δώσει την συγκατάθεσή του τότε το αποτέλσμα αλλάζει
INSERT INTO "ΕΠΙΤΡΕΠΕΙ" SELECT 31, "ΚΩΔΙΚΟΣ_ΝΟΣ" FROM "ΝΟΣΟΚΟΜΕΙΟ";
SELECT * FROM "ΕΠΙΤΡΕΠΕΙ";
DROP TABLE "ΕΠΙΤΡΕΠΕΙ";