Επανάληψη και λυμένα θέματα του μαθήματος «Βάσεις Δεδομένων ΙΙ» για τη διδασκαλία του στo Τμήμα Πληροφορικής του ΤΕΙ Αθήνας. Διδάσκων: Χ. Σκουρλάς,

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Εισαγωγή στην SQL ΕΣΔ232 – Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας.
Advertisements

PL/SQL.
Αποθηκευμένες Διαδικασίες και Εναύσματα Δρ. Παναγιώτης Συμεωνίδης.
Πληροφοριακά Συστήματα και Βάσεις Δεδομένων
JAVA και SQL Δαμιανός Χατζηαντωνίου
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
ORACLE PL/SQL Cursors Μέρος 1.
ORACLE PL/SQL Εξαιρέσεις Exceptions. ΟΡΙΣΜΟΣ Μια εξαίρεση (exception) είναι ένας δείκτης που ενεργοποιείται κατά την εκτέλεση του προγράμματος.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
ORACLE PL/SQL Άρης Στουγιαννίδης. ΒΡΟΧΟΣ ΜΕ ΜΕΤΡΗΤΗ FOR REM forloop.sql REM This is an example of a FOR loop. BEGIN FOR v_Counter IN LOOP INSERT.
Copyright © 2006 – Quality & Reliability SA PL/SQL TRIGGERS ΜΕΡΟΣ 1.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Τεχνολογία ΛογισμικούSlide 1 Σχεδιασμός Λογισμικού ATM loop Print_input_message (” Welcome - Please enter your card”) ; exit when Card_input ; end loop.
ΕΠΛ 342 – Βάσεις Δεδομένων Εργαστήριο 4 ο SQL - Queries Ιωάννα Συρίμη
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Βάσεις Δεδομένων II (Θ) Ενότητα 11: SQL διαγνωστικά σφαλμάτων (SQL error diagnostics), δήλωση Get Diagnostics Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής.
Βάσεις Δεδομένων II (Θ) Ενότητα 1: «Προσανατολισμού» (orientation) - Εισαγωγή Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο.
Βάσεις Δεδομένων II (Θ) Ενότητα 9: Συναλλαγές (Transactions) στο προϊόν mySQL Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο.
Βάσεις Δεδομένων II (Θ) Ενότητα 8: Συναλλαγές (Transactions) Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το.
Βάσεις Δεδομένων I (Θ) Ενότητα 13: Ο Ρόλος και τα καθήκοντα του Διαχειριστή ΒΔ - Γλώσσα ελέγχου δεδομένων – Συναλλαγές - Εντολές COMMIT, ROLLBACK Χ. Σκουρλάς.
Βάσεις Δεδομένων II (Θ) Ενότητα 6: Τεχνολογία PL/SQL - cursors Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το.
ORACLE PL/SQL Cursors Μέρος 2. Cursors 2 Cursors με παραμέτρους Εισαγωγή παραμέτρου κατά την εκτέλεση Πολλά ανοίγματα με διαφορετικές παραμέτρους.
Βάσεις Δεδομένων I (Θ) Ενότητα 8: Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
Βάσεις Δεδομένων I Ενότητα 8: Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Χ. Σκουρλάς Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το περιεχόμενο.
Επανάληψη και λυμένα θέματα του μαθήματος «Βάσεις Δεδομένων ΙΙ» για τη διδασκαλία του στo Τμήμα Πληροφορικής του ΤΕΙ Αθήνας. Διδάσκων: Χ. Σκουρλάς,
Εισαγωγή στις βάσεις δεδομένων
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι να παρουσιάσει τις απαραίτητες έννοιες ώστε οι φοιτητές να κατανοήσουν την τεχνολογία των βάσεων δεδοµένων.
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Σύστημα διαχείρισης αρχείων (file system)
Σκοπός Μαθήματος Σκοπός: Παρουσιάζεται η διαχείριση βάσης δεδομένων με γλώσσα SQL, χρήση JDBC API, και τεχνολογίας JSP pages και λογισμικού mySQL. Στόχος.
Βάσεις Δεδομένων Ι 4η διάλεξη
Σύντομη περιγραφή Μια περιήγηση σε αφυπνιζόμενα προγράμματα (triggers), δηλαδή προγράμματα ενεργοποιούμενα από ενέργειες INSERT, UPDATE, DELETE στη βάση.
Εναρκτήρια συνάντηση Στην πρώτη συνάντηση γίνεται παρουσίαση του μαθήματος και μία σύντομη και περιεκτική επισκόπηση κάποιων βασικών εννοιών των Βάσεων.
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Περιγραφή Ενότητας Σκοπός του μαθήματος αυτού και κεντρικός σκοπός του μαθήματος των Βάσεων Δεδομένων Ι είναι η παρουσίαση των απαραίτητων εννοιών ώστε.
Σκοπός Μαθήματος Σκοπός: Παρουσιάζεται η διαχείριση βάσης δεδομένων με γλώσσα SQL, χρήση JDBC API, και τεχνολογίας JSP pages και λογισμικού mySQL. Στόχος.
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Έλεγχος λογισμικού Ποιότητα Λογισμικού Black Box testing
Εναρκτήρια συνάντηση Στην πρώτη συνάντηση γίνεται παρουσίαση του μαθήματος και μία σύντομη και περιεκτική επισκόπηση κάποιων βασικών εννοιών των Βάσεων.
Βάσεις Δεδομένων Ι Επανάληψη
Σκοπός & Στόχος Μαθήματος
Μοντελοποίηση Βαθμός Συσχέτισης Βαθμός μιας συσχέτισης ονομάζεται ο αριθμός των οντοτήτων που συνδέει. Συνήθως οι συσχετίσεις μεταξύ δύο οντοτήτων.
Επανάληψη - επισκόπηση
Βάσεις Δεδομένων και web-based Εφαρμογές
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι να κατανοήσουμε την έννοια της όψης της γλώσσας SQL. Χ. Σκουρλάς.
Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL
Βάσεις Δεδομένων Εισαγωγή για το Εργαστήριο Δρ. Τιάκας Ελευθέριος

Σκοπός Μαθήματος Σκοπός του μαθήματος είναι να παρουσιάσει τις έννοιες των Συναλλαγών (Transactions) στο προϊόν mySQL. 1.
Βάσεις Δεδομένων ΙΙ Triggers
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας
Αρχιτεκτονική Συστημάτων
Βάσεις Δεδομένων και web-based Εφαρμογές
Βάσεις Δεδομένων και web-based Εφαρμογές
ΓΛΩΣΣΕΣ & ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας
Αντικειμενο-σχεσιακά ΣΔΒΔ
Βάσεις Δεδομένων ΙΙ Ενότητα 8: Συναλλαγές (Transactions) Χ. Σκουρλάς
Βάσεις Δεδομένων ΙΙ (SQL error diagnostics), δήλωση Get Diagnostics
Βάσεις Δεδομένων ΙΙ Ενότητα 6: Τεχνολογία PL/SQL - cursors Χ. Σκουρλάς
Σχεσιακεσ βασεισ δεδομενων
Βάσεις Δεδομένων ΙΙ Ενότητα 5: Μελέτη περιπτώσεως:
ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή
Ενότητα 1: «Προσανατολισμού» (orientation) - Εισαγωγή Χ. Σκουρλάς
Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Δυτικής Αττικής
SQL Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Μεταγράφημα παρουσίασης:

Επανάληψη και λυμένα θέματα του μαθήματος «Βάσεις Δεδομένων ΙΙ» για τη διδασκαλία του στo Τμήμα Πληροφορικής του ΤΕΙ Αθήνας. Διδάσκων: Χ. Σκουρλάς, 2015 διδακτικές ενότητες στις Βάσεις Δεδομένων

Μοντελοποίηση

Βαθμός Συσχέτισης u Βαθμός μιας συσχέτισης ονομάζεται ο αριθμός των οντοτήτων που συνδέει. u Συνήθως οι συσχετίσεις μεταξύ δύο οντοτήτων (δυαδικές συσχετίσεις) επαρκούν για τις ανάγκες μεγάλου μέρους της εφαρμογής. u Υπάρχουν περιπτώσεις όπου τρεις ή περισσότερες οντότητες πρέπει να συνδεθούν με μια συσχέτιση ή μια συσχέτιση να οριστεί πάνω σε οντότητα(ες) και συσχέτιση(εις).

Το μοντέλο είναι επαρκές; Ναι αν όλοι οι εργαστηριακοί συνεργάτες βοηθούν όλους τους σπουδαστές. Τι γίνεται, όμως, αν οι σπουδαστές ανήκουν σε εργαστηριακά τμήματα και σε κάθε τμήμα είναι υπεύθυνος ένας και μόνο εργαστηριακός συνεργάτης; Δυαδικές Συσχετίσεις ΣΠΟΥΔΑΣΤΗΣ ΜΑΘΗΜΑ παρακολουθεί Ν Μ βοηθά ΣΥΝΕΡΓΑΤΗΣ Ν Μ Βαθμός Συσχέτισης

ΣΠΟΥΔΑΣΤΗΣ ΜΑΘΗΜΑ εγγράφεται ΕΡΓΑΣΤΗΡΙΑΚΟΣ_ΣΥΝΕΡΓΑΤΗΣ Ν Ν Μ Τριαδική Συσχέτιση

ΥΠΑΛΛΗΛΟΣ ΣΥΝΕΡΓΑΤΗΣ IS-A ΜΟΝΙΜΟΣ Κάθε «ΕΚΤΑΚΤΟΣ» και κάθε «ΜΟΝΙΜΟΣ» θεωρείται και «ΥΠΑΛΛΗΛΟΣ» δηλαδή κληρονομεί όλα τα χαρακτηριστικά της οντότητας «ΥΠΑΛΛΗΛΟΣ» Χρειάζεται πολλές φορές να εκφράσουμε μια οντότητα ως «εξειδίκευση» (specialization) μιας άλλης Disjoint and Complete mapping Συσχέτιση «Is-A»

Πώς να μεταγράψουμε υποκλάση (How to translate a subclass) Product Educational Product Software Product topic isa ageGroup platforms memory

Επιλογή 1 (Option 1): The E/R Approach u Product (name, price, category, manufacturer) u EducationalProduct (name, ageGroup, topic) u SoftwareProduct (name, platforms, requiredMemory) u Θυμηθείτε ότι το ίδιο όνομα στήλης μπορεί να εμφανίζεται σε πολλές σχέσεις (Same name may appear in several relations) παρά το γεγονός ότι κάθε φορά εκφράζει ενδεχομένως κάτι διαφορετικό

Να κάνετε τις απαραίτητες αλλαγές στο παρακάτω μοντέλο Οντοτήτων Συσχετίσεων.

Συναρτησιακές εξαρτήσεις

Επιχειρησιακός Κανόνας Κάθε τμήμα έχει ένα μοναδικό όνομα, έναν μοναδικό αριθμό, έναν εργαζόμενο που το διευθύνει. Συναρτησιακές εξαρτήσεις deptName  deptNumber deptNumber  deptName deptNumber  mngrIdNum deptName  mngrIdNum

Επιχειρησιακός Κανόνας Κρατούμε πάντοτε την ημερομηνία που ανέλαβε τη διεύθυνση του τμήματος ο σημερινός διευθυντής, ο οποίος δεν μπορεί να διευθύνει δεύτερο Τμήμα.

Παράδειγμα μοντέλου Elmasri – Navathe

Επισκόπηση κάποιων σύνθετων εντολών της γλώσσας SQL

Συνάρτηση datediff SELECT datediff(‘2015/06/28’, current_date); Τι θα δείξει στις :

EXISTS - NOT EXISTS SELECT * FROM emp WHERE EXISTS (SELECT * FROM dept WHERE loc='ATHENS' ); SELECT * FROM emp WHERE NOT EXISTS (SELECT * FROM dept WHERE loc='ATHENS' ); SELECT * FROM dept WHERE NOT EXISTS (SELECT * FROM emp);

Trigger Insert_New_Book_Trig. Στην περίπτωση εισαγωγής των στοιχείων βιβλίου στον πίνακα Books ενεργοποιείται αυτόματα και προσθέτει μία μονάδα στη στήλη No_of_Books.

Σκανδαλισμός που θα καταχωρεί τους εκδότες με κεφαλαία στη βάση. Ενεργοποιείται από εντολες της μορφής: INSERT INTO Books VALUES (’ ’, ’A first course in database systems’, ’Prentice Hall’,1997,90, 30);

Procedures - Functions

DROP PROCEDURE IF EXISTS balanceCalc; DELIMITER ! CREATE PROCEDURE balanceCalc ( IN interestRate INT, INOUT balance INT, OUT interest INT) DETERMINISTIC BEGIN SET interest = interestRate * balance / 100; SET balance = balance + interest; END ! DELIMITER ; CALL

DELIMITER // CREATE PROCEDURE GetAuthorByCountry(IN countryName VARCHAR(255)) BEGIN SELECT * FROM author WHERE country = countryName; END // DELIMITER ; CALL GetAuthorByCountry(‘GREECE'); DELIMITER $$ CREATE PROCEDURE CountAuthorsByCountry( IN AuthorCountry VARCHAR(25), OUT total INT) BEGIN SELECT count(A_ID) INTO total FROM author WHERE country = AuthorCountry; END$$ DELIMITER ; CALL

CALL GetAuthorByCountry('GREECE');

CALL

CALL CALL AS TOTAL_BY_UK FROM DUAL;

Υλοποίηση stored procedures: functions και procedures DROP TABLE IF EXISTS myTrace; CREATE TABLE myTrace ( t_no INT, t_user CHAR(20), t_date DATE, t_time TIME, t_proc VARCHAR(16), t_what VARCHAR(30)); INSERT INTO myTrace (t_no) VALUES (2);

DROP PROCEDURE IF EXISTS myProc; DELIMITER ! CREATE PROCEDURE myProc (IN p_no INT,IN p_in VARCHAR(30), OUT p_out VARCHAR(30)) LANGUAGE SQL BEGIN SET p_out = p_in; INSERT INTO myTrace (t_no, t_user, t_date, t_time, t_proc, t_what) VALUES (p_no, current_user, current_date, current_time, 'myProc', p_in); IF (p_no = 1) THEN COMMIT; ELSE ROLLBACK; END IF; END ! DELIMITER ;

Προσοχή! Δηλώσεις Commit, Roolback δεν επιτρέπονται σε stored functions -- The mySQL product DOES NOT allow COMMIT and ROLLBACK statements in -- stored Functions. Check the following program ! DROP FUNCTION IF EXISTS myFun; DELIMITER ! CREATE FUNCTION myFun (p_no INT, p_in VARCHAR(30)) RETURNS VARCHAR(30); LANGUAGE SQL BEGIN INSERT INTO myTrace (t_no, t_user, t_date, t_time, t_proc, t_what) VALUES (p_no, current_user, current_date, current_time, 'myProc', p_in); IF (p_no = 1) THEN COMMIT; ELSE ROLLBACK; END IF; END ! DELIMITER ;

Cursors - Παράδειγμα -- Create a function to handle the cursor See the following statements: − Declare variables − DECLARE CONTINUE HANDLER − Open Cursor − Fetch Cursor − Close Cursor

CREATE DATABASE training; USE training; CREATE TABLE course(course_id int, course_name varchar(50)); CREATE TABLE lecturer(lecturer_id int(3), lecturer_surname varchar(15), lecturer_name varchar(15), city varchar(15), salary decimal (8,2), course_id int); INSERT INTO course VALUES (1, 'DATABASE'); INSERT INTO course VALUES (2, 'WEB DEVELOPMENT'); INSERT INTO course VALUES (3, 'DATA MINING'); INSERT INTO course VALUES (4, 'SEMANTIC WEB'); Select * From COURSE; INSERT INTO lecturer(lecturer_id, lecturer_name, lecturer_surname, city, salary, course_id) VALUES (1, 'CHRIS', 'DATE', 'LONDON', 2000, 1), (2, 'GIO', 'WIEDERHOLD', 'ATHENS', 1500, 1), (3, 'PETER', 'CHEN', 'ATHENS', 3500, 2), (4, 'JEFF', 'ULLMAN', 'ATHENS', 1700, 1), (5, 'TED', 'CODD', 'ATHENS', 2500, 2); SELECT lecturer_id, lecturer_surname, lecturer_name, course_id FROM lecturer;

DELIMITER // CREATE FUNCTION lecturer_list() RETURNS VARCHAR(255) BEGIN DECLARE record_not_found INTEGER DEFAULT 0; DECLARE lecturer_name_var VARCHAR(150) DEFAULT ""; DECLARE lecturer_surname_var VARCHAR(150) DEFAULT ""; DECLARE lect_list VARCHAR(255) DEFAULT ""; DECLARE my_cursor CURSOR FOR SELECT lecturer_name, lecturer_surname FROM lecturer; DECLARE CONTINUE HANDLER FOR NOT FOUND SET record_not_found = 1; OPEN my_cursor; allLecturers: LOOP FETCH my_cursor INTO lecturer_name_var, lecturer_surname_var; IF record_not_found THEN LEAVE allLecturers; END IF; SET lect_list = CONCAT(lect_list, lecturer_surname_var, ", "); END LOOP allLecturers; CLOSE my_cursor; RETURN SUBSTR(lect_list, 1, 70); END //

DELIMITER ; -- Execute function SELECT lecturer_list();

Session A

Session B

Session A

Blind Overwriting problem, application simulated by use of local variables StepSession ASession B 1SET AUTOCOMMIT=0; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; -- amount to be transfered by A = 200; = 0; -- init value SELECT balance FROM Accounts WHERE acctID = 101;

StepSession ASession B 2SET AUTOCOMMIT=0; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; -- amount to be transfered by B = 500; = 0; -- init value SELECT balance FROM Accounts WHERE acctID = 101;

StepSession ASession B 3 UPDATE Accounts SET balance WHERE acctID = 101; 4 UPDATE Accounts SET balance WHERE acctID = 101; 5 SELECT acctID, balance FROM Accounts WHERE acctID = 101; COMMIT;

StepSession ASession B 6 SELECT acctID, balance FROM Accounts WHERE acctID = 101; COMMIT;

7SELECT * FROM Accounts; 8

Ερωτήσεις