Σύντομη περιγραφή Μια περιήγηση σε αφυπνιζόμενα προγράμματα (triggers), δηλαδή προγράμματα ενεργοποιούμενα από ενέργειες INSERT, UPDATE, DELETE στη βάση.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Πηγές τάσης/ρεύματος R , L, C
Advertisements

Τέλος Ενότητας.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Βασικές αρχές ευρετηρίασης
Η ανοσοαποτύπωση ως επιβεβαιωτική μέθοδος
Τριφασικά συμμετρικά δίκτυα σε συνδεσμολογία Υ (1/2)
Περιλήψεις Γιατί; Πως; Τι είναι; Ποιος τις κάνει;
Αυτοματοποιημένη ευρετηρίαση
Διαμόρφωση πεδίων Περιγραφικά πεδία Διαχειριστικά πεδία Δομικά πεδία.
Διάνοιξη πόρων Με ακτινοβολούμενη θερμότητα. Θερμαινόμενα σίδερα.
Καμπυλότητα Φακού P c
Τεχνολογία οφθαλμικών φακών Ι (Ε) Ενότητα 5: Έγχρωμοι φακοί Θεμιστοκλής Γιαλελής, Οπτικός, MSc, PhD candidate ΕΔΙΠ του τμήματος Οπτικής και Οπτομετρίας.
Συμπλήρωση Προτύπου Διδακτικού Σχεδιασμού
Eιδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων
Κανόνες Ασφαλείας Εργοταξίων
Παράγοντες που επηρεάζουν ένα σύστημα Υγείας
ΟΙΚΟΝΟΜΙΚΑ ΤΟΥ ΕΛΕΓΧΟΥ ΤΗΣ ΡΥΠΑΝΣΗΣ
Άλλες μορφές νευρώσεων
Διαχείριση παραγωγής εντύπων 1/2
Γιατί τρεφόμαστε ; Ενέργεια Απαραίτητα θρεπτικά συστατικά (nutrients)
Επικοινωνιακός Προγραμματισμός Ι
Άσκηση 8 (1 από 3) Προβολές 1. Να επιλέξετε ένα θέμα βασισμένο σε κάποια παράγραφο / υποπαράγραφο του κεφαλαίου 6 των σημειώσεων και να κάνετε μια εργασία.
Τεχνολογία οφθαλμικών φακών Ι (Ε)
Υπολογιστική Γεωμετρία και Εφαρμογές στις ΒΧΔ
Βασικά δεδομένα Το σύστημα υγείας δεν αποτελεί απλά άθροισμα επιμέρους μερών. Τα επιμέρους στοιχεία του συστήματος βρίσκονται σε συνεχή αλληλεξάρτηση.
Παρουσίαση ναυπηγικών γραμμών 1/3
Υπολογιστική Γεωμετρία και Εφαρμογές στις ΒΧΔ 1/12
Ταυτότητα και περίγραμμα μαθήματος
Δίκτυα Υπολογιστών ΙΙ (Ε)
Άσκηση 7 (1 από 5) Υπολογισμοί μηκών τόξων σφαίρας. Το έτος 2035 μ.Χ., μετά από πυρηνική καταστροφή και λόγω του φαινομένου του θερμοκηπίου, που πήρε εκρηκτικές.
ΠΡΟΤΥΠΟ ΕΛΟΤ EN ISO 3251 Ζύγιση μάζας υγρού μελανιού (m1 g)
Ενότητα 13 Αξιολόγηση μαθήματος και διδάσκοντος από την εφαρμογή της Μονάδας Ολικής Ποιότητας (ΜΟΔΙΠ) του ΤΕΙ Αθήνας Αξιολόγηση του μαθήματος Αξιολόγηση.
Εκτίμηση σωματικού βάρους
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι η παρουσίαση δηλώσεων SQL που περιλαμβάνουν EXIST, ANY, ALL. Χ. Σκουρλάς.
Άσκηση 9 (1 από 2) Ανακαλύψτε στο χάρτη σας μερικά χαρτογραφικά αντικείμενα που να ανήκουν στις παρακάτω κατηγορίες : φυσικά, τεχνητές κατασκευές, αφηρημένα.
Τοπολογικές σχέσεις 1/3 Βρείτε και περιγράψτε τις τοπολογικές σχέσεις σύμφωνα με τους (Pantazis, Donnay 1996) για τα παρακάτω γεω-γραφικά αντικείμενα:
Επιλογή φλέβας για λήψη φλεβικού αίματος 1/7
Κανονικοποίηση ΤΙ ΕΙΝΑΙ ; Τεχνική Διαδικασία
Προετοιμασία εργασίας
Επικοινωνιακός Προγραμματισμός Ι
Εικαστικές συνθέσεις - Χρώμα στο χώρο
Γενική και Μαθηματική Χαρτογραφία (Ε)
Οργάνωση και Διοίκηση Πρωτοβάθμιας (Θ)
Λιθογραφία – Όφσετ (Θ) Ενότητα 8.2: Εκτυπωτική Διαδικασία Μηχανής
Επικοινωνιακός Προγραμματισμός Ι
Ενότητα 9: Συστήματα Υγείας στην Ευρώπη: Σουηδία
Αισθητική Σώματος Ι (Ε)
Αισθητική Σώματος Ι (Ε)
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας
Ειδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων -E
Γενική και Μαθηματική Χαρτογραφία (Ε)
Αισθητική Σώματος Ι (Ε)
Ενότητα 5.2: Αιθέρες Χριστίνα Φούντζουλα Τμήμα Ιατρικών Εργαστηρίων
Ενότητα 8: Συστήματα Υγείας στην Ευρώπη: Γαλλία
Βασικές κλινικές δεξιότητες (Ε)
Eιδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων -Θ
Συστήματα Θεματικής Πρόσβασης (Θ)
Ψυχιατρική Ενότητα 7: Συνέχεια σταδίων
Κοσμητολογία ΙΙ (Θ) Ενότητα 3: Kρέμες (γ’ μέρος)
Ανοσολογία (Ε) Ενότητα 3: Αιμοσυγκόλληση Πέτρος Καρκαλούσος
Γενική και Μαθηματική Χαρτογραφία (Ε)
Οργανική Χημεία (Ε) Ενότητα 2: Προσδιορισμός σημείου τήξης
Ενότητα 1: ……………….. Όνομα Επώνυμο Τμήμα __
Αισθητική προσώπου Ι (Ε)
Βάσεις Δεδομένων ΙΙ Ενότητα 6: Τεχνολογία PL/SQL - cursors Χ. Σκουρλάς
Σύσταση και Ανάλυση Γλευκών και Οίνων (Θ)
Αισθητική ηλεκτροθεραπεία σώματος
Ενότητα 6: Δονήσεις Γεωργία Πέττα Τμήμα Φυσικοθεραπείας
Αισθητική ηλεκτροθεραπεία σώματος
Επικοινωνιακός Προγραμματισμός Ι
Μεταγράφημα παρουσίασης:

Βάσεις Δεδομένων II (Θ) Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Βάσεις Δεδομένων II (Θ) Ενότητα 4: Εισαγωγή στον προγραμματισμό με χρήση triggers. Χρήση τεχνολογίας PL/SQL Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Σύντομη περιγραφή Μια περιήγηση σε αφυπνιζόμενα προγράμματα (triggers), δηλαδή προγράμματα ενεργοποιούμενα από ενέργειες INSERT, UPDATE, DELETE στη βάση δεδομένων - Υποδείξεις για τον προγραμματισμό σε περιβάλλον PL/SQL. Στόχος / Σκοπός: Να βοηθήσει τους σπουδαστές να κατανοήσουν και να εμπεδώσουν κρίσιμα σημεία της τεχνολογίας των triggers - και να μάθουν να κατασκευάζουν και να χρησιμοποιούν triggers σύμφωνα με τις ανάγκες των εφαρμογών βάσεων δεδομένων.

Έστω απλοποιημένο σύστημα διαχείρισης στοιχείων προσωπικού Οι πίνακες emp, dept παρατίθενται με ενδεικτικό δείγμα δεδομένων EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH CLERK 7902 17/12/80 800 - 20 7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30 7521 WARD 22/02/81 1250 500 7566 JONES MANAGER 7839 02/04/81 2975 7654 MARTIN 28/10/81 1400 BLAKE 01/05/81 2850 7782 CLARK 09/06/81 2450 10 7788 SCOTT ANALYST 19/04/87 3000 KING PRESIDENT 17/11/81 5000 7844 TURNER 08/10/81 1500 7876 ADAMS 23/05/87 1100 7900 JAMES 03/12/81 950 FORD 7934 MILLER 23/01/82 1300

Πίνακας Dept DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON

Δημιουργία πινάκων που βασίζεται σε υπάρχοντες πίνακες Η δημιουργία των πινάκων Employee, Department, στη συνέχεια, γίνεται για να κατανοήσουμε με κάποια παραδείγματα τη χρησιμότητα των triggers. Μεταξύ άλλων θα κατασκευάσουμε trigger που ενεργοποιείται όταν εισάγουμε γραμμές στον πίνακα Employee και αναλαμβάνει την αυτόματη ενημέρωση της τιμής μιας στήλης του πίνακα Department.

Κατασκευάζουμε αρχικά τους πίνακες employee, department βασιζόμενοι στη δομή των πινάκων emp, dept CREATE TABLE employee(empno NUMBER(4) NOT NULL, ename VARCHAR2(10), deptno NUMBER(2)); Table created. CREATE TABLE department(deptno NUMBER(2) NOT NULL, dname VARCHAR2(14));

Εισαγωγή στοιχείων στον πίνακα Department INSERT INTO department SELECT deptno, dname FROM dept; 4 rows created. FROM department; DEPTNO DNAME 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS

Εισαγωγή στοιχείων στον πίνακα Employee Εισαγωγή στοιχείων στον πίνακα Employee. Η χρήση της συνθήκης empno > 7700 έγινε για να δούμε τις δυνατότητες που έχουμε σε εντολή INSERT … SELECT. INSERT INTO employee SELECT empno, ename, deptno FROM emp WHERE empno > 7700; 8 rows created. SELECT empno, ename, deptno FROM employee; EMPNO ENAME DEPTNO 7782 CLARK 10 7788 SCOTT 20 7839 KING 7844 TURNER 30 7876 ADAMS 7900 JAMES 7902 FORD 7934 MILLER

Ο πρώτος row-type trigger CREATE OR REPLACE TRIGGER dept_insert_update BEFORE INSERT OR UPDATE ON department FOR EACH ROW BEGIN :NEW.dname := UPPER(:NEW.dname); /* :NEW.dname contains the new value */ END; / Trigger created.

Δοκιμή /* testing */ INSERT INTO department VALUES(70, 'Learn'); 1 row created. DEPTNO DNAME 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS 70 LEARN

Επεξήγηση Δίδεται η εντολή INSERT INTO department VALUES(70, 'Learn'); Λόγω του γεγονότος “BEFORE INSERT OR UPDATE ON department” που υπάρχει στον ορισμό του «αφυπνίζεται» ο trigger dept_insert_update (ο ορισμός του υπάρχει στο λεξικό δεδομένων). Επειδή δόθηκε εντολή INSERT και ο trigger είναι row type (δες και υποπρόταση FOR EACH ROW) τα ζεύγη των global μεταβλητών που αντιστοιχούν στις στήλες του πίνακα Department έχουν τις παρακάτω τιμές: :OLD.deptno < - - NULL, :OLD.dname < -- NULL :NEW.deptno < - - 70, :NEW.dname < -- ‘Learn’ Λόγω της εντολής :NEW.dname := UPPER(:NEW.dname); O trigger μεταγράφει σε κεφαλαία την τιμή της μεταβλητής :NEW.dname. Ο trigger τερματίζεται και εκτελείται η εντολή: INSERT INTO department VALUES(70, 'LEARN');

Δοκιμή /* testing */ UPDATE department SET dname = ‘Payroll' WHERE deptno=70; DEPTNO DNAME 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS 70 PAYROLL

Επεξήγηση Δίδεται η εντολή UPDATE department SET dname = ‘Payroll' WHERE deptno=70; Λόγω του γεγονότος “BEFORE INSERT OR UPDATE ON department” που υπάρχει στον ορισμό του «αφυπνίζεται» ο trigger dept_insert_update (υπάρχει στο λεξικό δεδομένων). Επειδή δόθηκε εντολή UPDATE και ο trigger είναι row type (δες και υποπρόταση FOR EACH ROW) τα ζεύγη των global μεταβλητών που αντιστοιχούν στις στήλες του πίνακα Department έχουν τις παρακάτω τιμές: :OLD.deptno < - - 70, :OLD.dname < -- ‘Learn’ :NEW.deptno < - - 70, :NEW.dname < -- ‘Payroll’ Λόγω της εντολής :NEW.dname := UPPER(:NEW.dname); O trigger μεταγράφει σε κεφαλαία την τιμή της μεταβλητής :NEW.dname. Ο trigger τερματίζεται και εκτελείται η εντολή: UPDATE department SET dname = ‘PAYROLL‘ WHERE deptno=70;

Γεγονότα που ενεργοποιούν triggers BEFORE INSERT ON table AFTER INSERT ON table BEFORE UPDATE ON table AFTER UPDATE ON table BEFORE DELETE ON table AFTER DELETE ON table

Απαγορεύεται μέσα στο «σώμα» του trigger να χρησιμοποιήσετε εντολές: COMMIT AUDIT CONNECT …

Προσθήκη στήλης στον πίνακα department /* Change TABLE department */ ALTER TABLE department ADD (no_of_employees NUMBER(3)); Table altered. SELECT * FROM department; DEPTNO DNAME NO_OF_EMPLOYEES 10 ACCOUNTING   20 RESEARCH 30 SALES 40 OPERATIONS 70 PAYROLL

Αρχικοποίηση της νέας στήλης /* Initialization of the new column */ UPDATE department SET no_of_employees = (SELECT COUNT(*) FROM employee WHERE employee.deptno = department.deptno); DEPTNO DNAME NO_OF_EMPLOYEES 10 ACCOUNTING 3 20 RESEARCH 30 SALES 2 40 OPERATIONS - 70 PAYROLL

Αυτοματοποίηση της διαχείρισης της τιμής της στήλης No_of_Employees με triggers CREATE OR REPLACE TRIGGER emp_insert AFTER INSERT ON employee FOR EACH ROW BEGIN UPDATE department SET no_of_employees = NVL(no_of_employees, 0) + 1 WHERE deptno= :NEW.deptno; /* :NEW.deptno < - - νέα τιμή, :OLD.deptno < - - NULL */ END; / Trigger created.

Δοκιμή INSERT INTO employee VALUES(7985, 'NAVATHE', 10); Η εντολή ενημερώνει τον πίνακα employee EMPNO ENAME DEPTNO 7782 CLARK 10 7788 SCOTT 20 7839 KING 7844 TURNER 30 7876 ADAMS 7900 JAMES 7902 FORD 7934 MILLER 7985 NAVATHE

AFTER INSERT ON employee O row type trigger (βλέπε FOR EACH ROW) «αφυπνίζεται» λόγω της συνθήκης AFTER INSERT ON employee Λόγω της εντολής INSERT INTO employee VALUES(7985, 'NAVATHE', 10); έχω :OLD.empno<--NULL, :OLD.ename<--NULL, :OLD.deptno<--NULL :NEW.empno<-7985, :NEW.ename<-’NAVATHE’, :NEW.deptno<-10 Άρα η εντολή UPDATE department SET no_of_employees = NVL(no_of_employees, 0) + 1 WHERE deptno= :NEW.deptno; Είναι ισοδύναμη με την εντολή WHERE deptno= 10;

Και ο πίνακας department γίνεται DEPTNO DNAME NO_OF_EMPLOYEES 10 ACCOUNTING 4 20 RESEARCH 3 30 SALES 2 40 OPERATIONS - 70 PAYROLL

Trigger που αφυπνίζεται από το γεγονός AFTER DELETE ON employee CREATE OR REPLACE TRIGGER emp_delete FOR EACH ROW BEGIN UPDATE department SET no_of_employees = NVL(no_of_employees, 0) - 1 WHERE deptno= :OLD.deptno; END; /

Με την εντολή DELETE employee WHERE empno = 7985; ο πίνακας department γίνεται DEPTNO DNAME NO_OF_EMPLOYEES 10 ACCOUNTING 3 20 RESEARCH 30 SALES 2 40 OPERATIONS - 70 PAYROLL

Trigger που αφυπνίζεται από το γεγονός AFTER UPDATE ON employee CREATE OR REPLACE TRIGGER emp_update FOR EACH ROW BEGIN UPDATE department SET no_of_employees = NVL(no_of_employees, 0) + 1 WHERE deptno= :NEW.deptno; SET no_of_employees = no_of_employees - 1 WHERE deptno= :OLD.deptno; END; /

UPDATE employee SET deptno= 10 WHERE empno=20; DNAME NO_OF_EMPLOYEES 10 ACCOUNTING 6 20 RESEARCH - 30 SALES 2 40 OPERATIONS 70 PAYROLL

/* see triggers */ DESCRIBE USER_TRIGGERS; Name Null? Type ----------------------------------------------------- -------- ---------------- TRIGGER_NAME VARCHAR2(30) TRIGGER_TYPE VARCHAR2(16) TRIGGERING_EVENT VARCHAR2(75) TABLE_OWNER VARCHAR2(30) BASE_OBJECT_TYPE VARCHAR2(16) TABLE_NAME VARCHAR2(30) COLUMN_NAME VARCHAR2(4000) REFERENCING_NAMES VARCHAR2(128) WHEN_CLAUSE VARCHAR2(4000) STATUS VARCHAR2(8) DESCRIPTION VARCHAR2(4000) ACTION_TYPE VARCHAR2(11) TRIGGER_BODY LONG

SELECT TRIGGER_NAME, TRIGGERING_EVENT, TRIGGER_TYPE FROM USER_TRIGGERS WHERE TABLE_NAME= 'EMPLOYEE' ORDER BY TRIGGER_NAME; TRIGGER_NAME TRIGGERING_EVENT TRIGGER_TYPE ------------------------------------------------------ EMP_DELETE DELETE AFTER EACH ROW EMP_INSERT INSERT AFTER EACH ROW EMP_UPDATE UPDATE AFTER EACH ROW

/* Drop all the database objects */ DROP TRIGGER dept_insert_update; Trigger dropped. DROP TRIGGER emp_insert; DROP TRIGGER emp_delete; DROP TRIGGER emp_update; DROP TABLE employee; Table dropped. DROP TABLE department;

Πως βλέπουμε τα λάθη SHOW ERRORS TRIGGER emp_insert; Ενεργοποίηση / απενεργοποίηση ενός trigger ALTER TRIGGER emp_insert DISABLE; ALTER TRIGGER emp_insert ENABLE; ALTER TABLE my_emp DISABLE ALL TRIGGERS; ALTER TRIGGER emp_insert COMPILE; DROP TRIGGER emp_insert;

Τέλος Ενότητας

Σημειώματα

Σημείωμα Αναφοράς Copyright Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας, Χρήστος Σκουρλάς 2014. Χρήστος Σκουρλάς. «Βάσεις Δεδομένων II (Θ). Ενότητα 4: Εισαγωγή στον προγραμματισμό με χρήση triggers. Χρήση τεχνολογίας PL/SQL». Έκδοση: 1.0. Αθήνα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: ocp.teiath.gr.

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό. Οι όροι χρήσης των έργων τρίτων επεξηγούνται στη διαφάνεια «Επεξήγηση όρων χρήσης έργων τρίτων». Τα έργα για τα οποία έχει ζητηθεί άδεια αναφέρονται στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.

Επεξήγηση όρων χρήσης έργων τρίτων Δεν επιτρέπεται η επαναχρησιμοποίηση του έργου, παρά μόνο εάν ζητηθεί εκ νέου άδεια από το δημιουργό. © διαθέσιμο με άδεια CC-BY Επιτρέπεται η επαναχρησιμοποίηση του έργου και η δημιουργία παραγώγων αυτού με απλή αναφορά του δημιουργού. διαθέσιμο με άδεια CC-BY-SA Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού, και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. διαθέσιμο με άδεια CC-BY-ND Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η δημιουργία παραγώγων του έργου. διαθέσιμο με άδεια CC-BY-NC Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Δεν επιτρέπεται η εμπορική χρήση του έργου. διαθέσιμο με άδεια CC-BY-NC-SA διαθέσιμο με άδεια CC-BY-NC-ND Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου και η δημιουργία παραγώγων του. διαθέσιμο με άδεια CC0 Public Domain Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. διαθέσιμο ως κοινό κτήμα χωρίς σήμανση Συνήθως δεν επιτρέπεται η επαναχρησιμοποίηση του έργου.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.