Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

Σχετικά έγγραφα
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

Εργαστήριο Βάσεων Δεδομένων. Triggers

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Βάσεις Δεδομένων (Databases)

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

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

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

. Εργαστήριο Βάσεων Δεδομένων. Triggers

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

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

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

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

ΕΠΛ 342 Βάσεις εδοµένων

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Βάσεις Δεδομένων (Databases)

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

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

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

Ηλεκτρονικοί Υπολογιστές II

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

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

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

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)

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

Τμήμα Διοίκησης Επιχειρήσεων

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

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

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


Lecture 18: Internal DB Programming I

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Βάσεις Περιβαλλοντικών Δεδομένων

Κεφάλαιο 6. Περιορισμοί Ακεραιότητας Βάσεων Δεδομένων

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

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

SQL: Συναρτήσεις Συνάθροισης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

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

Διάλεξη 18: Προγραμματισμός Βάσης Δεδομένων ΙΙ. Διδάσκων: Παναγιώτης Ανδρέου

Ανοικτά Ακαδημαϊκά Μαθήματα

Ηλεκτρονικοί Υπολογιστές II

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

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

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

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

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

PL/SQL. Κώστας Στεφανίδης

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #6

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

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

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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

ΑΠΟΘΗΚΕΥΜΕΝΕΣ ΔΙΑΔΙΚΑΣΙΕΣ

Ανάκτηση Δεδομένων (Information Retrieval)

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εξεταστική Περίοδος Ιουνίου 2004

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

1.1 Ανάλυση απαιτήσεων του Υποσυστήματος Μητρώου Εταιρειών Μ.Μ.Ε Ανάλυση απαιτήσεων του Υποσυστήματος Ελέγχου τήρησης μη

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης -

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

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

Διάλεξη 12: SQL Data Definition Language. Διδάσκων: Παναγιώτης Ανδρέου

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

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

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

Το Σχεσιακό μοντέλο και η γλώσσα SQL

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

Προσοµοίωση τροχιάς σε Oracle Spatial 8i DBMS

Βάσεις Δεδομένων. Ενότητα 7.2: Structured Query Language - 2 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Βάςεισ Δεδομζνων Ι. Ενότητα 7: Ειςαγωγή ςτην γλώςςα_sql. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικϊν Πλθροφορικισ ΣΕ

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

Βάσεις Δεδομένων (Databases)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

Transcript:

Ενεργές ΒΔ Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr Βάσεις Δεδομένων Ενεργές ΒΔ 1

Active Databases Υποστηρίζουν την αυτόματη εκτέλεση ενεργειών όταν συμβούν συγκεκριμένα γεγονότα Ένας διαδεδομένος μηχανισμός είναι οι triggers (σκανδάλες) Βάσεις Δεδομένων Ενεργές ΒΔ 2

Triggers (1) Προσθέτω μια στήλη για το συνολικό άθροισμα μισθών κάθε τμήματος: ALTER TABLE DEPARTMENT ADD TOTAL_SAL INTEGER DEFAULT 0; Δημιουργία ενός Trigger που ενημερώνει το πεδίο του αθροίσματος των μισθών του τμήματος όταν γίνεται εισαγωγή νέου εργαζόμενου: CREATE OR REPLACE TRIGGER TRIGSAL AFTER INSERT ON EMPLOYEE REFERENCING NEW AS NEWEMP FOR EACH ROW WHEN (NEWEMP.SSN IS NOT NULL) BEGIN UPDATE DEPARTMENT SET TOTAL_SAL=TOTAL_SAL+:NEWEMP.SALARY WHERE DNUMBER=:NEWEMP.DNO; END; Βάσεις Δεδομένων Ενεργές ΒΔ 3

Triggers (2) Δομή ενός trigger: Γεγονός (Event) που πυροδοτεί τον trigger Συνθήκη (Condition) που καθορίζει εάν θα εκτελεστεί πράγματι ο trigger Ενέργεια (Action) που εκτελεί ο trigger Ορισμένεςεπιλογέςγιατουςtriggers: before, after update, insert, delete Βάσεις Δεδομένων Ενεργές ΒΔ 4

Παράδειγμα: Triggers (3) CREATE TABLE bigchicken ( cid INT CONSTRAINT bcpk PRIMARY KEY, weight INT ); CREATE OR REPLACE TRIGGER TrigBigC AFTER INSERT ON chicken REFERENCING NEW AS newchicken for each row when (newchicken.weight > 1) BEGIN INSERT INTO bigchicken VALUES (:newchicken.cid, :newchicken.weight); END; Βάσεις Δεδομένων Ενεργές ΒΔ 5

Assertions (Ισχυρισμοί) Η SQL επιτρέπει τον ορισμό Assertions Assertion: Ένας γενικός περιορισμός Στην Oracle: CREATE TABLE sells ( bar CHAR(20), beer CHAR(20), price REAL, CHECK(bar = 'Joe''s Bar' OR price!= 5.00) ); alter table employee add constraint check_salary check(salary > 550 and salary < 3000); Βάσεις Δεδομένων Ενεργές ΒΔ 6

Assertions στην Oracle Η Oracle υποστηρίζει απλούς περιορισμούς με τη λ ξη κλειδί CHECK Οι περιορισμοί check δεν μπορούν να περιλαμβάνουν ερωτήματα SQL αλλά μόνο απλές συνθήκες, όπως: check(salary > 550 and salary < 3000); Βάσεις Δεδομένων Ενεργές ΒΔ 7

Παράδειγμα Assertion (που δεν δουλεύει στην Oracle) alter table Employee add constraint check_salary_with_manager check ( NOT EXISTS (SELECT * FROM Employee e, Employee m, Department d WHERE e.dno = d.dnumber AND d.mgrssn = m.ssn AND e.salary > m.salary ) ); Βάσεις Δεδομένων Ενεργές ΒΔ 8

Trigger vs Assertions Τα Assertions επιβάλλουν περιορισμούς Δεν επιτρέπουν να παραβιασθούν κάποιες συνθήκες που ορίζουμε Όταν κάποια εντολή προκαλεί παραβίαση ενός assertion τότε δεν επιτρέπεται η εκτέλεσή της Δεν εκτελείται κάποιο πρόγραμμα Οι Triggers είναι προγράμματα μέσα στη Βάση Δεδομένων που εκτελούνται αυτόματα όταν συμβεί κάποιο γεγονός Ας δούμε ένα παράδειγμα: Βάσεις Δεδομένων Ενεργές ΒΔ 9

.. το κοτέτσι v2.0! Όπως η πρώτη έκδοση της ΒΔ κοτέτσι, έτσι και η δεύτερη δεν έχει πολύ μεγάλη πρακτική σημασία, όμως θα μας βοηθήσει να παρουσιάσουμε έννοιες των ΒΔ Στην έκδοση 2.0 θα παρουσιάσουμε τη χρήση των Τriggers DROP TABLE chicken cascade constraints; DROP TABLE egg cascade constraints; DROP TABLE bigchicken cascade constraints; CREATE TABLE chicken ( cid INT CONSTRAINT cpk PRIMARY KEY, bdate date, weight integer ); CREATE TABLE egg ( eid INT CONSTRAINT epk PRIMARY KEY, cid INT CONSTRAINT crefe REFERENCES chicken(cid), bdate date ); Βάσεις Δεδομένων Ενεργές ΒΔ 10

Μεγάλα Κοτόπουλα! Θέλουμε να χειριστούμε με ειδικό τρόπο κοτόπουλα που ξεπερνούν ένα όριο βάρους, για παράδειγμα τα 2000 γρ. Εστω ότι δημιουργούμε έναν ανεξάρτητα πίνακα bigchicken CREATE TABLE bigchicken ( cid INT CONSTRAINT bcpk PRIMARY KEY, weight INT ); Κάθε κοτόπουλο που θεωρείται μεγάλο θα αποθηκεύεται εκτός από τους κανονικούς πίνακες της βάσης και στον πίνακα bigchicken Η ενημέρωση του πίνακα bigchicken μπορεί να αυτοματοποιηθεί με τη χρήση Triggers Βάσεις Δεδομένων Ενεργές ΒΔ 11

Λειτουργία του Trigger Θα εξετάσουμε το γεγονός (event) εισαγωγής ενός νέου κοτόπουλου στη ΒΔ Μπορούμε να σκεφτούμε τι θα έπρεπε να κάνει ένας κατάλληλος trigger που πυροδοτείται από αυτό το event; Πρέπει να πυροδοτηθεί ο Trigger; Πρέπει να έχει εξετάσει κάποια συνθήκη; Τι θα πρέπει να κάνει ο Trigger; Βάσεις Δεδομένων Ενεργές ΒΔ 12

Δημιουργία του Trigger CREATE OR REPLACE TRIGGER trigbigc AFTER INSERT ON chicken REFERENCING NEW AS NEWCHICKEN FOR EACH ROW WHEN (newchicken.weight > 1) BEGIN INSERT INTO bigchicken VALUES (:newchicken.cid, :newchicken.weight); END; / Βάσεις Δεδομένων Ενεργές ΒΔ 13

Εισαγωγή Δεδομένων (1) insert into chicken values (1, TO_DATE('12-01-2005', 'dd-mm-yyyy'), 1200); insert into chicken values (2, TO_DATE('15-02-2005', 'dd-mm-yyyy'), 1100); insert into chicken values (3, TO_DATE('14-01-2005', 'dd-mm-yyyy'), 900); insert into chicken values (4, TO_DATE('25-01-2005', 'dd-mm-yyyy'), 850); insert into chicken values (5, TO_DATE('16-01-2005', 'dd-mm-yyyy'), 1300); insert into chicken values (6, TO_DATE('12-02-2005', 'dd-mm-yyyy'), 1000); Βάσεις Δεδομένων Ενεργές ΒΔ 14

Εισαγωγή Δεδομένων (2) insert into egg values (100, 1, TO_DATE('10-05-2005', 'dd-mm-yyyy')); insert into egg values (101, 2, TO_DATE('11-05-2005', 'dd-mm-yyyy')); insert into egg values (102, 3, TO_DATE('12-05-2005', 'dd-mm-yyyy')); insert into egg values (103, 2, TO_DATE('12-05-2005', 'dd-mm-yyyy')); Βάσεις Δεδομένων Ενεργές ΒΔ 15

Χρήσιμες Εντολές show errors trigger TrigBigC; show errors; drop trigger <name>; alter trigger <name> {disable enable}; select table_name from user_tables; select view_name from user_views; select constraint_name from user_constraints; select trigger_name from user_triggers; select procedure_name from user_procedures; Βάσεις Δεδομένων Ενεργές ΒΔ 16

Πηγές/Αναφορές Βιβλίο μαθήματος, Κεφάλαιο 9 Εγχειρίδιο της Oracle Βάσεις Δεδομένων Ενεργές ΒΔ 17