ΙΚΤΥΩΤΟ ΜΟΝΤΕΛΟ (Network Model) Μαθ. # 15
DBTG Γλώσσα επεξεργασίας Σκελετός ενός προγράµµατος Βρες την εγγραφή FIND FIND...... FIND Ανάκτησε την τιµή εγγραφής στον κατάλληλο επίγραµµα τύπου GET RECORD Επεξεργασία του RECORD PRINT THE RECORD Αποθήκευσε το προσωρινά σαν τιµή κάποιας µεταβλητής Κάνε κάποιο υπολογισµό µεαυτό Βάλτο πίσω στο database STORE RECORD MODIFY RECORD
DBTG Γλώσσα επεξεργασίας Μια γλώσσα επεξεργασίας αναµειγµένη µε εντολές κοινής γλώσσας προγραµµατισµού (host language) Loops Go To Εντολές εισαγωγής/εξαγωγής Εντολές ανάθεσης Παράδειγµα Βρες όλα τα µαθήµατα του φοιτητή Σ1001 STU.STUID= Σ1001 FIND ANY STU USING STU.STUID FIND FIRST ENROLL WITHIN E-STUDENT DOWHILE DBSTATUS=0 GET STU PRINT STU.STUID, STU.CNO FIND NEXT ENROLL WITHIN E-STUDENT END
DBTG Γλώσσα επεξεργασίας Εντολές ανάκτησης εγγραφών GET Αντίγραψε το CURRENT του run unit στον κατάλληλο επίγραµµα εγγραφής GET T Όπως πιο πάνω, εάν το T είναι το CURRENT του run unit. Εάν όχι, τότε error. GET T F1,, Fn Όπως πιο πάνω, αλλά αντίγραψε µόνο τα πεδία F1, F2,, Fn
CALC κλειδιά και database κλειδιά (calc keys and database keys) Calc key Ένα πεδίο (ή σύνολοπεδίων) τουοποίουητιµή προσδιορίζει µια µικρή οµάδα εγγράφων (πιθανώς και µόνο ένα) Ορίζεται από τον χρήστη µέσο της DDL Παράδειγµα ENROLL SECTION είναι ένα υποψήφιο calc key (SECTION, GRADE) είναι ένα υποψήφιο calc key STUID, όχι καλή επιλογή εάν είναι ιδεατό
Database key είκτης ή φυσική διεύθυνση της εγγραφής ίνονται από το DBMS και είναι µοναδικά Χάνεται έτσι κάποια φυσική ανεξαρτησία Παράδειγµα ΧΥΖ = CURRENT OF ENROLL FIND ENROLL RECORD BY DATABASE KEY XYZ GET ENROLL
H εντολή FIND O σκοπός της εντολής FIND είναι να κάνει το CURRENT κάτι να είναι το CURRENT run unit για περαιτέρω επεξεργασία FIND A RECORD (βρες µια εγγραφή) εδοµένου του calc key εδοµένου του database key Το πρώτο record σε ένα set occurrence FIND NEXT RECORD (βρες την επόµενη εγγραφή) Με το ίδιο CALC KEY Μέσα στο SET Μέσα στο SET µε τιµές µέσα σε ορισµένα πεδία Βρες τον ιδιοκτήτη µέσα σε ένα DBTG SET Βρες το CURRENT οποιουδήποτε τύπου εγγραφής η DBTG SET
Βρες µια εγγραφή απευθείας Με χρήση DATABASE KEY FIND T RECORD by DATABASE KEY V Βρες την εγγραφή τύπου «Τ» της οποίας το database key είναι η τιµήτηςµεταβλητής (του προγράµµατος) V. ERROR εάν V δεν είναι ορισµένο. Παράδειγµα STU_KEY = CURRENT OF STU FIND STU RECORD BY DATABASE KEY STU_KEY GET STU
Βρες µια εγγραφή απευθείας Με χρήση CALC KEY FIND T RECORD by CALC KEY V Βρες την εγγραφή τύπου «Τ» της οποίας το calc key πεδίο έχει την ίδια τιµήόπωςητιµή του αντίστοιχου πεδίου του επιγράµµατος του Τ. Παράδειγµα STU.STUNAME = Elpida FIND STU RECORD BY CALC-KEY GET STU, CREDITS
ιερεύνηση τύπου εγγραφής Με χρήση calc key FIND DUPLICATE T RECORD BY CALC- KEY Βρες την επόµενη εγγραφή τύπου Τ της οποίας το calc key πεδίο έχει την ίδια τιµή όπως αυτήν του CURRENT του run unit Error εάν το CURRENT του run unit δεν είναι τύπου Τ
Παράδειγµα Θεωρείστε ότι το CREDIT είναι το CALC key του STUDENT Βρες όλους τους φοιτητές που είναι έτοιµοι να αποφοιτήσουν PRINT STUDENTS ABOUT TO GRADUATE STU.CREDITS = 126 FIND STU RECORD BY CALC-KEY WHILE^FAIL DO BEGIN GET STU STUNAME CREDITS PRINT STU.STUNAME STU.CREDITS FIND DUPLICATE STU RECORD BY CALC-KEY END
ιερεύνηση ενός DBTG SET Βρες τον ιδιοκτήτη εγγραφή του CURRENT του SET S FIND OWNER OF CURRENT S SET ERROR εάν το CURRENT του S δεν είναι ορισµένο Βρες το πρώτο µέλος κάποιου τύπου εγγραφής Τ στο CURRENT του S FIND FIRST T RECORD IN CURRENT S SET FAIL, εάν δεν υπάρχουν εγγραφές µέλη Βρες το επόµενο RECORD στο S από CURRENT του S FIND NEXT T RECORD IN CURRENT S SET FAIL, εάν το επόµενο RECORD δεν είναι τύπου T
Example Find all students taking CSC101 CLASS.CNO=CSC101; FIND CLASS RECORD BY CALC-KEY; FIND FIRST ENROLL RECORD IN CURRENT E-COURSE SET; WHILE^FAIL DO BEGIN FIND OWNER OF CURRENT E-STUDENT; GET STU; STU.STUNAME; PRINT STU.STUNAME; FIND NEXT ENROLL RECORD IN CURRENT E-COURSE SET; END? Assuming the previously proposed virtual fields modify this program.
ιερεύνηση τύπου εγγραφής Μοναδιαία sets (singular sets) Ανήκουν στο σύστηµα SYSTEM είναι ένας ειδικός τύπος εγγραφής Ένα DBTG set (occurrence), που περιέχει όλες τις εγγραφές ενός τύπου (από ορισµό) Παράδειγµα DBTG SET UNIVERSITY OWNER IS SYSTEM MEMBER IS DEPT
Βρεςόλατατµήµατα µε προϋπολογισµόπάνωαπό10μ FIND FIRST DEPT RECORD OM CURRENT UNIVERSITY SET WHILE^FAIL DO BEGIN GET DEPT IF DEPT.BUDGET > 10M THEN PRINT DEPT.DEPTNAME, DEPT.BUDGET FIND NEXT DEPT RECORD IN CURRENT UNIVERSITY SET END
Selectively scanning a set occurrence FIND T RECORD IN CURRENT S SET USING F Find the first record of type T in the current of S, having values in the fields F equal to those in template for T FAIL: no such record FIND DUPLICATE T RECORD IN CURRENT S SET USING F As above, only NEXT record FAIL: no such record
Find two CS students about to graduate PRINT CS students about to graduate ; DEPT.DEPTNAME= Computer_Science ; FIND DEPT RECORD BY CALC-KEY STU.CREDIT = 126; FIND STU RECORD IN CURRENT DEPT-STU SET USING CREDIT; FIND DUPLICATE STU RECORD IN CURRENT DEPT-STU SET USING CREDIT;
Establishing CURRENT of RUN UNIT DEFER INPUT/OUTPUT PURPOSE MAKE THE CURRENT OF A SET THE CURRENT OF run-unit. FIND CURRENT OF S SET Current_of_run_unit:= current of T MAKE THE CURRENT OF A RECORD TYPE THE CURRENT OF run-unit. FIND CURRENT OF T RECORD Current_of_run_unit:= current of T Example: Calculate the average of CS students taking MATH202
Database modification Records: STORE T Create a new record of type T with field values from the template DELETE T Delete the current of run-unit MODIFY T Copy the template of T into the current of run-unit MODIFY T;F As above, but only fields in F
Database modification Sets: INSERT T INTO S Insert the current of run-unit into the current of S REMOVE T FROM S Remove the current of run-unit from S Insertions can be automatic SET SELECTION IS THRU OWNER USING F SET SELECTION IS THRU CURRENT OF S SET RETENTION CLASS OPTIONAL or MANDATORY