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

Σχετικά έγγραφα
Σχεδιασμός Βάσεων Δεδομένων

Σύνδεση εφαρμογής σε Βάση Δεδομένων PHP

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

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

Εργαστήριο #10 (Ε10) 1

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

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

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

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

databases linux - terminal (linux / windows terminal)

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

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

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

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

Εφαρµογές διαδικτύου µε PHP

Βάσεις Δεδομένων Ι Εξεταστική Περίοδος Φεβρουαρίου 2006

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 3: Server Side Scripting II PHP & MySQL

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

Εργαστήριο βάσεων δεδομένων. MySQL Stored Procedures

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

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Προγραμματισμός Παγκόσμιου Ιστού

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

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Περιγραφή της εργασίας

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

ΕΡΓΑΣΙΑ 2 - MOODLE ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ακ. Έτος ΔΙΔΑΣΚΩΝ: Π. Εφραιμίδης. Υπεύθυνος εργαστηρίου: Α. Κουτσιαμάνης

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

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


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

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

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

Δρ. Δημήτριος Α. Κουτσομητρόπουλος. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Α.Τ.Ε.Ι. Πάτρας

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

Ασφάλεια Υπολογιστών Και Δικτύων. Προσομοίωση επίθεσης σε ευπαθές σε SQL Injection σύστημα και απόκτηση κονσόλας διαχειριστή

Οδηγίες Χρήσης της MySQL

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

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

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

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

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

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

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

Η HTML χρησιμοποιεί εντολές που ονομάζονται HTML tags δίνοντας εντολές στους Web browsers για το πώς να εμφανίζουν την κάθε ιστοσελίδα.

Τμήμα Πληροφορικής ΑΠΘ

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

Οδηγίες Χρήσης της MySQL

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 2 24/01/2012

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

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

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

Βάσεις Δεδομένων. Εισαγωγή Ανάλυση Απαιτήσεων. Φροντιστήριο 1 ο

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

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

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

μ μ «μ»

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

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

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

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

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

Λευτέρης Κουμάκης ΠΟΛΥΜΕΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΣΤΗΝ ΥΓΕΙΑ

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

Εισαγωγή στην Ανάπτυξη Εφαρμογών Web με Χρήση της Python, του Apache και του mod_python

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

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

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

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

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

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

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

Λογαριασμοί & Δικαιώματα

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

Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΗΥ460) Χειμερινό εξάμηνο 2017

ΣΗΜΕΙΩΣΕΙΣ. Ενότητα 1.1 Ιστορία της PHP. Ενότητα 1.2 Πλεονεκτήματα της PHP

Web Programming for Dummies

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

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

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

Προγραμματισμός Διαδικτύου

Εργαστήριο Βάσεων Δεδομένων. Entity-Relationship Diagram (ER)

Διαχείριση χρηστών και δικαιωμάτων

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

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 4 ΔΕΣΠΟΙΝΑ ΠΑΠΑΚΩΝΣΤΑΝΤΙΝΟΥ dpap@unipi.gr

ΣΥΝΕΧΕΙΑ SQL 2

3 ΑΣΚΗΣΗ 3 (1/3) Πίνακες Classes(class, type, country, numguns, bore, displacement) Ships(name, class, launched) Battles(name, date) Outcomes(ship, battle, result) Ερωτήματα a) Βρες τις χώρες (country), των οποίων τα πλοία έχουν τον μεγαλύτερο αριθμό πυροβόλων(numguns). b) Βρες τους τύπους (classes) των πλοίων, από τα οποία τουλάχιστον ένα έχει βυθιστεί σε μια μάχη. c) Βρες τα ονόματα των πλοίων με 16-inch οπή (bore). d) Βρες τις μάχες στις οποίες συμμετείχαν τα πλοία του τύπου Kongo. e) Βρες τα ονόματα των πλοίων, των οποίων ο αριθμός των πυροβόλων είναι ο μεγαλύτερος για τα πλοία με την ίδια οπή.

4 Πίνακες ΑΣΚΗΣΗ 3 (2/3) Classes(class, type, country, numguns, bore, displacement) Ships(name, class, launched) Battles(name, date) Outcomes(ship, battle, result) Λύσεις a) SELECT country FROM Classes WHERE numguns = (SELECT MAX(numGuns) from Classes); SELECT country FROM Classes WHERE numguns >= ALL (SELECT numguns from Classes); b) SELECT DISTINCT class FROM Ships WHERE name IN (SELECT ship FROM Outcomes WHERE result = sunk ); SELECT class FROM Ships WHERE EXISTS (SELECT * FROM Outcomes WHERE Ships.name = Outcomes.ship AND result = sunk );

5 Πίνακες ΑΣΚΗΣΗ 3 (3/3) Classes(class, type, country, numguns, bore, displacement) Ships(name, class, launched) Battles(name, date) Outcomes(ship, battle, result) Λύσεις c) SELECT name FROM Ships WHERE class IN (SELECT class from Classes where bore = 16); SELECT name FROM Ships, Classes WHERE Ships.class = Classes.class AND bore = 16; d) SELECT DISTINCT battle FROM Ships, Outcomes WHERE name = ship AND class = Kongo ; SELECT DISTINCT battle FROM Outcomes WHERE ship = ANY (SELECT name FROM Ships WHERE class = Kongo ); e) SELECT name FROM Ships, Classes AS C1 WHERE Ships.class = C1.class AND numguns = (SELECT MAX(numGuns) FROM Classes AS C2 WHERE C1.bore = C2.bore);

6 ΠΕΡΙΕΧΟΜΕΝΑ Σύνδεση ΒΔ μέσω PHP (PHP Database Connectivity) Σύνδεση ΒΔ μέσω JAVA (JAVA Database Connectivity) Άσκηση 1 Άσκηση 2

7 ΠΕΡΙΕΧΟΜΕΝΑ Σύνδεση ΒΔ μέσω PHP (PHP Database Connectivity) Σύνδεση ΒΔ μέσω JAVA (JAVA Database Connectivity) Άσκηση 1 Άσκηση 2

8 ΣΥΝΔΕΣΗ MySQL με PHP ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (1/3) Για να αποκτηθεί πρόσβαση σε μία ΒΔ, πρέπει να δημιουργηθεί σύνδεση με αυτή τη ΒΔ. Στην PHP η σύνδεση αυτή επιτυγχάνεται με την εντολή mysql_connect(). Η σύνταξη της εντολής αυτή είναι η εξής: mysql_connect (servername,username,password);, όπου servername: προσδιορίζει τον εξυπηρετητή, στον οποίο επιθυμείται η σύνδεση. Η default τιμή είναι "localhost:3306 ". username: προσδιορίζει το username, με το οποίο γίνεται η σύνδεση. Η default τιμή είναι το όνομα του χρήστη που έχει στην ιδιοκτησία του τη διαδικασία του εξυπηρετητή. password: προσδιορίζει το password με το οποίο γίνεται η σύνδεση. Η default τιμή είναι "".

9 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (2/3) ΣΥΝΔΕΣΗ MySQL με PHP(συνέχεια ) Παράδειγμα Στο παρακάτω παράδειγμα η σύνδεση τοποθετείται σε μια μεταβλητή ($con), για χρήση του στο script. Το τμήμα του κώδικα που αφορά στο "die" είναι αυτό που θα εκτελεστεί αν αποτύχει η σύνδεση: <?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('could not connect: '. mysql_error()); } // some code?>

10 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (3/3) ΣΥΝΔΕΣΗ MySQL με PHP(συνέχεια ) Τερματισμός της σύνδεσης Η σύνδεση κλείνει αυτόματα όταν τελειώνει το script. Για να τερματισθεί μια σύνδεση νωρίτερα χρησιμοποιείται η εντολή mysql_close(): <?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('could not connect: '. mysql_error()); } // some code mysql_close($con);?>

11 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (1/7) ΣΥΝΔΕΣΗ ORACLE με PHP Η PHP έχει διάφορες επεκτάσεις που επιτρέπουν εφαρμογές να χρησιμοποιούν την Oracle. Η επέκταση OCI8 (OCI8 Extension): είναι η προτεινόμενη για χρήση επέκταση. Περιλαμβάνεται στις εκδόσεις 3, 4, και 5 και 6 της PHP, ενώ είναι open source. Εγκατάσταση της επέκτασης PHP OCI8 Extension σε Windows Κατεβάζουμε το Apache HTTPD Server (http://httpd.apache.org/download.cgi) και το Windows PHP 5.2 zip package (http://www.php.net/downloads.php). Χρησιμοποιούμε την το default bundle αν επιθυμούμε να τρέξουμε την PHP ως Apache module.

12 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (2/7) ΣΥΝΔΕΣΗ ORACLE με PHP (συνέχεια) Εγκατάσταση της επέκτασης PHP OCI8 Extension σε Windows Εγκαθιστούμε PHP και Apache ακολουθώντας τις οδηγίες του PHP οδηγού για την εγκατάσταση σε Windows συστήματα (http://gr.php.net/install.windows). Ελέγχουμε αν η PHP δουλεύει κανονικά πριν προχωρήσουμε στα επόμενα βήματα. Εγκαθιστούμε την Oracle Database.

13 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (3/7) ΣΥΝΔΕΣΗ ORACLE με PHP (συνέχεια) Εγκατάσταση της επέκτασης PHP OCI8 Extension σε Windows (συνέχεια) Κατεβάζουμε την επέκταση OCI8 1.3 για την PHP 5.2 από το http://www.php.net/archive/2008.php#id2008-12-10-1). Το τρέχον πακέτο OCI8 1.3 για την PHP 5.2 είναι το εξής: php_oci8-1.3.5-5.2-win32-vc6-x86.zip, το οποίο περιλαμβάνει δύο dll αρχεία, τα php_oci8.dll και php_oci8_11g.dll (για oracle 11i). Αποσυμπιέζουμε το πακέτο και μεταφέρουμε τα δύο dll αρχεία στον κατάλογο όπου έχει εγκατασταθεί η PHP (π.χ. C:\php-5.2.9\ext).

14 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (4/7) ΣΥΝΔΕΣΗ ORACLE με PHP (συνέχεια) Εγκατάσταση της επέκτασης PHP OCI8 Extension σε Windows (συνέχεια) Αλλάζουμε τη σύνταξη στο php.ini και θέτουμε το extension_dir στον κατάλογο, όπου βρίσκονται τα αρχεία dll της επέκτασης PHP: extension_dir="c:\php-5.2.9\ext". Επίσης, στο αρχείο php.ini, θέτουμε την επέκταση OCI8 ως εξής: extension=php_oci8_11g.dll (στην περίπτωση που χρησιμοποιούμε την Oracle 11i. Αν χρησιμοποιούμε το Oracle 10.2 Instant Client, θέτουμε το extension ως εξής: extension=php_oci8.dll. Κάνουμε επανεκκίνηση στο Apache.

15 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (5/7) ΣΥΝΔΕΣΗ ORACLE με PHP (συνέχεια) Επιβεβαίωση της ορθής εγκατάστασης της επέκτασης Για να ελέγξουμε ότι η επέκταση έχει εγκατασταθεί σωστά, δημιουργούμε ένα απλό PHP script μέσα στο κατάλογο Apache: <?php phpinfo();?> Φορτώνουμε το script σε έναν browser, παραδείγματος χάριν "http://localhost/phpinfo.php".

16 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (6/7) ΣΥΝΔΕΣΗ ORACLE με PHP (συνέχεια) Σύνδεση με την Oracle Η αυθεντικοποίηση (authentication) της Oracle και η πληροφορία σχετικά με τη ΒΔ περιέχεται στην εντολή oci_connect(). Ένα παράδειγμα αφορά στη σύνδεση στο HR σχήμα της MYDB υπηρεσίας ΒΔ που τρέχει στο mymachine: $c = oci_connect('hr', 'hr_password', '//mymachine.mydomain/mydb'). Σε καινούριες ΒΔ ο HR χρήστης μπορεί να χρειαστεί να ξεκλειδωθεί και να της δοθεί ένα password. Αυτό μπορεί να γίνει στην SQL*Plus με το να συνδεθούμε ως χρήστης SYSTEM και να εκτελέσουμε το εξής: ALTER USER username IDENTIFIED BY new_password ACCOUNT UNLOCK;

17 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ PHP (7/7) ΣΥΝΔΕΣΗ ORACLE με PHP (συνέχεια) Χρήση της Oracle Ένα παράδειγμα της χρήσης της Oracle είναι το απλό script, testoci.php. Προσαρμόζουμε τις λεπτομέρειες της σύνδεσης στη δική μας ΒΔ και το φορτώνουμε σε έναν browser. Το συγκεκριμένο παράδειγμα θεωρεί ότι όλοι οι πίνακες βρίσκονται κάτω από την κατοχή του χρήστη HR: <?php $conn = oci_connect('hr', 'hr_password', 'mymachine.mydomain/mydb'); $query = 'select table_name from user_tables'; $stid = oci_parse($conn, $query); oci_execute($stid, OCI_DEFAULT); while ($row = oci_fetch_array($stid, OCI_ASSOC)) { foreach ($row as $item) { echo $item." "; } echo "<br>\n"; } oci_free_statement($stid); oci_close($conn);?>

18 ΠΕΡΙΕΧΟΜΕΝΑ Σύνδεση ΒΔ μέσω PHP (PHP Database Connectivity) Σύνδεση ΒΔ μέσω JAVA (JAVA Database Connectivity) Άσκηση 1 Άσκηση 2

19 ΠΕΡΙΕΧΟΜΕΝΑ Σύνδεση ΒΔ μέσω PHP (PHP Database Connectivity) Σύνδεση ΒΔ μέσω JAVA (JAVA Database Connectivity) Άσκηση 1 Άσκηση 2

20 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ JAVA (1/2) ΣΥΝΔΕΣΗ MySQL με JAVA (με χρήση JDBC) Για αυτή τη σύνδεση είναι απαραίτητη η ύπαρξη ενός λογαριασμού στην MySQL ΒΔ. Για να δημιουργήσουμε λογαριασμό, συνδεόμαστε με την MySQL ΒΔ ως root και κατόπιν εκτελούμε την ακόλουθη εντολή: mysql> GRANT ALL PRIVILEGES ON *.* TO username@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;

21 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ JAVA (2/2) ΣΥΝΔΕΣΗ MySQL με JAVA (με χρήση JDBC) (συνέχεια..) Connection connection = null; try { // Load the JDBC driver String drivername = "org.gjt.mm.mysql.driver"; // MySQL MM JDBC driver Class.forName(driverName); // Create a connection to the database String servername = "localhost"; String mydatabase = "mydatabase"; String url = "jdbc:mysql://" + servername + "/" + mydatabase; // a JDBC url String username = "username"; String password = "password"; connection = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { // Could not find the database driver } catch (SQLException e) { // Could not connect to the database }

22 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ JAVA (1/2) ΣΥΝΔΕΣΗ ORACLE με JAVA Βήμα 1 - Εισάγουμε το πακέτο JAVA : import java.sql.*; Βήμα 2 - Καταχωρούμε τον driver με την ακόλουθη εντολή: Class.For.Name("sun.jdbc.odbc.JdbcOdbcDriver"); Βήμα 3 - Δημιουργούμε τη σύνδεση με τη ΒΔ: Connection conn DriverManager.getConnection( main protocol:sub protocol:type4driver:name of oracle server:default port number(1521):service name username password ); Άρα jdbc:oracle:thin:[<user>/<password>]@//<host>[:<port>]/<service> π.χ. Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@mylaptop:1521:oradb", // URL "budiraharjo", // username "SDDNBandung" // password );

23 ΣΥΝΔΕΣΗ ΒΔ ΜΕΣΩ JAVA (2/2) ΣΥΝΔΕΣΗ ORACLE με JAVA (συνέχεια ) Βήμα 4 - Ανοίγουμε τη σύνδεση: cn.open(); Βήμα 5 - Για να εισάγουμε δεδομένα: PreparedStatement ps cn.preparestatement("insert into <table name> values(????)"); ps.setint(1 Integer.parseInt(t1.setText())); ps.setstring(2 t2.settext()); Βήμα 6 - Εκτελούμε την εντολή: ps.executeupdate(); Βήμα 7 - Τερματίζουμε τη σύνδεση: cn.close(); ΠΡΟΣΟΧΗ: Το βήμα 7 είναι μόνο για εισαγωγή δεδομένων. Όταν επιθυμούμε ανάκτηση ακολουθούμε την ίδια μεθοδολογία μέχρι το βήμα 4 κι έπειτα γράφουμε την ακόλουθη εντολή: ResultSet rs;

24 ΠΕΡΙΕΧΟΜΕΝΑ Σύνδεση ΒΔ μέσω PHP (PHP Database Connectivity) Σύνδεση ΒΔ μέσω JAVA (JAVA Database Connectivity) Άσκηση 1 Άσκηση 2

25 ΠΕΡΙΕΧΟΜΕΝΑ Σύνδεση ΒΔ μέσω PHP (PHP Database Connectivity) Σύνδεση ΒΔ μέσω JAVA (JAVA Database Connectivity) Άσκηση 1 Άσκηση 2

26 ΑΣΚΗΣΗ 1 ΔΙΑΧΕΙΡΙΣΗ ΒΙΒΛΙΩΝ ΒΙΒΛΙΟΘΗΚΗΣ (1/7) Μια βιβλιοθήκη Πανεπιστημίου επιθυμεί να κατασκευάσει βάση δεδομένων για τα βιβλία που διαθέτει. Κάθε βιβλίο υπάρχει στη βιβλιοθήκη σε ένα ή περισσότερα ανάτυπα. Κάθε βιβλίο καταχωρείται σε μια θεματική περιοχή και μεταξύ των στοιχείων που καταγράφονται είναι: ISBN, τίτλος, συγγραφείς, εκδοτικός οίκος, ημερομηνία πρώτης, δεύτερης, κτλ. έκδοσης, περίληψη περιεχομένου (κείμενο), έτος απόκτησης. Να κατασκευαστεί ένα μοντέλο δεδομένων που να ικανοποιεί τις απαιτήσεις της βιβλιοθήκης για κατασκευή μητρώου των βιβλίων που διαθέτει και για την ανάκτηση τους ανά κωδικό, ή/και τίτλο, ή/και θεματική περιοχή, ή/και συγγραφέα. Επιπλέον, να καθίσταται δυνατή η ανάκτηση των βιβλίων μέσω λέξεων-κλειδιά των περιλήψεων τους.

ΑΣΚΗΣΗ 1 ΔΙΑΧΕΙΡΙΣΗ ΒΙΒΛΙΩΝ ΒΙΒΛΙΟΘΗΚΗΣ (2/7) 27

28 ΑΣΚΗΣΗ 1 ΔΙΑΧΕΙΡΙΣΗ ΒΙΒΛΙΩΝ ΒΙΒΛΙΟΘΗΚΗΣ (3/7) Συσχετίσεις Μια βιβλιοθήκη Πανεπιστημίου επιθυμεί να κατασκευάσει βάση δεδομένων για τα βιβλία που διαθέτει. Κάθε βιβλίο υπάρχει στη βιβλιοθήκη σε ένα ή περισσότερα ανάτυπα. Κάθε βιβλίο καταχωρείται σε μία θεματική περιοχή και μεταξύ των στοιχείων που καταγράφονται είναι: ISBN, τίτλος, συγγραφείς, εκδοτικός οίκος, ημερομηνία πρώτης, δεύτερης, κτλ. έκδοσης, περίληψη περιεχομένου (κείμενο), έτος απόκτησης.

29 ΑΣΚΗΣΗ 1 ΔΙΑΧΕΙΡΙΣΗ ΒΙΒΛΙΩΝ ΒΙΒΛΙΟΘΗΚΗΣ (4/7) Ανάλυση Απαιτήσεων - Παραδοχές Το μοντέλο αυτό περιγράφει την διαδικασία καταχώρησης βιβλίων στην βιβλιοθήκη ενός πανεπιστημίου. Κάθε βιβλίο (BOOK) καταχωρείται σε μία θεματική περιοχή (SUBJECT). Μία θεματική περιοχή (SUBJECT) έχει ένα ή περισσότερα βιβλία (BOOK). Κάθε βιβλίο (BOOK) εκδίδεται από έναν εκδοτικό οίκο (PUBLISHER). Ένα βιβλίο (BOOK) έχει μία ή περισσότερες εκδόσεις (EDITION). Κάθε έκδοση ενός βιβλίου (EDITION) μπορεί να υπάρχει σε ένα ή περισσότερα αντίτυπα (COPY). Κάθε βιβλίο (BOOK) αντιστοιχεί σε έναν ή περισσότερους συγγραφείς (AUTHOR).

30 ΑΣΚΗΣΗ 1 ΔΙΑΧΕΙΡΙΣΗ ΒΙΒΛΙΩΝ ΒΙΒΛΙΟΘΗΚΗΣ (5/7) Μοντέλο Οντοτήτων Συσχετίσεων (ER) SUBJECT PUBLISHER CORRESPONDS_T O PUBLISHES BOOK HAS IS_WRITEN_BY EDITION AUTHOR HAS_COPY COPY

31 ΑΣΚΗΣΗ 1 ΔΙΑΧΕΙΡΙΣΗ ΒΙΒΛΙΩΝ ΒΙΒΛΙΟΘΗΚΗΣ (6/7) Σχεσιακό Μοντέλο SUBJECT PUBLISHER SUBJECT_CODE smallint PUBLISHER_CODE smallint SUBJECT_DESCR varchar(300) PUBLISHER_NAME varchar(100) SUBJECT_CODE = SUBJECT_CODE BOOK BOOK_ISBN SUBJECT_CODE PUBLISHER_CODE BOOK_TITLE BOOK_ABSTRACT BOOK_RECEIVE_DATE varchar(50) smallint smallint varchar(300) varchar(3000) datetime PUBLISHER_CODE = PUBLISHER_CODE BOOK_ISBN = BOOK_ISBN BOOK_ISBN = BOOK_ISBN EDITION BOOK_ISBN varchar(50) EDITION_NO smallint EDITION_DATE datetime AUTHOR BOOK_ISBN varchar(50) AUTHOR_SURNAME varchar(25) AUTHOR_NAM E varchar(15) AUTHOR_ADDRESS varchar(200) BOOK_ISBN = BOOK_ISBN EDITION_NO = EDITION_NO COPY BOOK_ISBN EDITION_NO COPY_SN COPY_AVAILIABLE varchar(50) smallint smallint char(1)

32 ΑΣΚΗΣΗ 1 ΔΙΑΧΕΙΡΙΣΗ ΒΙΒΛΙΩΝ ΒΙΒΛΙΟΘΗΚΗΣ (7/7) Το σχεσιακό μοντέλο μπορούμε να το αναπαραστήσουμε με τους πίνακες, ως εξής: SUBJECT (SUBJECT _CODE, SUBJECT_DESCR) PUBLISHER (PUBLISHER_CODE, PUBLISHER_NAME) BOOK (BOOK_ISBN, SUBJECT_CODE, PUBLISHER_CODE, BOOK_TITLE, BOOK_ABSTRACT, BOOK_RECEIVE_DATE) EDITION (EDITION_NO, BOOK_ISBN, EDITION_DATE) AUTHOR (AUTHOR_SURNAME, BOOK_ISBN, AUTHOR_NAME, AUTHOR_ADDRESS) COPY (COPY_SN, BOOK_ISBN, COPY_AVAILABLE)

33 ΠΕΡΙΕΧΟΜΕΝΑ Σύνδεση ΒΔ μέσω PHP (PHP Database Connectivity) Σύνδεση ΒΔ μέσω JAVA (JAVA Database Connectivity) Άσκηση 1 Άσκηση 2

34 ΠΕΡΙΕΧΟΜΕΝΑ Σύνδεση ΒΔ μέσω PHP (PHP Database Connectivity) Σύνδεση ΒΔ μέσω JAVA (JAVA Database Connectivity) Άσκηση 1 Άσκηση 2

ΑΣΚΗΣΗ 2 ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΕΠΙΔΟΣΕΩΝ ΦΟΙΤΗΤΩΝ (1/6) 35 Η διαδικασία παρακολούθησης των επιδόσεων των φοιτητών στο μάθημα των Βάσεων Δεδομένων είναι η ακόλουθη: για κάθε ακαδημαϊκό έτος και για κάθε φοιτητή καταγράφονται οι παρουσίες του στα μαθήματα και οι θεωρητικές εργαστηριακές ασκήσεις που παραδίδει. Η βαθμολογία κάθε φοιτητή στο μάθημα είναι συνάρτηση των ασκήσεων, των παρουσιών και της τελικής εξέτασης. Να κατασκευαστεί μοντέλο οντοτήτων σχέσεων για τη βάση δεδομένων του συστήματος παρακολούθησης των επιδόσεων των φοιτητών και να μετατραπεί σε σχεσιακό σχήμα.

ΑΣΚΗΣΗ 2 ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΕΠΙΔΟΣΕΩΝ ΦΟΙΤΗΤΩΝ (2/6) 36

ΑΣΚΗΣΗ 2 ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΕΠΙΔΟΣΕΩΝ ΦΟΙΤΗΤΩΝ (3/6) 37 Ανάλυση Απαιτήσεων - Παραδοχές Το μοντέλο αυτό περιγράφει τη διαδικασία παρακολούθησης των επιδόσεων των φοιτητών στο μάθημα Βάσεων Δεδομένων. Για κάθε φοιτητή (STUDENT) καταγράφονται οι βαθμοί του στο μάθημα (GRADE). Κάθε φοιτητής μπορεί να παραδώσει μία ή περισσότερες θεωρητικές ασκήσεις (EXERCISE) και εργαστηριακές ασκήσεις (LAB). Η αντιστοιχία αυτή καταχωρείται στο (ST_EXE) και (ST_LAB) αντίστοιχα μαζί με το βαθμό που πήρε σε κάθε άσκηση. Οι παρουσίες του κάθε φοιτητή καταχωρούνται στο (PRESENCE). Η βαθμολογία του φοιτητή είναι συνάρτηση των ασκήσεων, των παρουσιών του και της τελικής εξέτασης.

38 ΑΣΚΗΣΗ 2 ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΕΠΙΔΟΣΕΩΝ ΦΟΙΤΗΤΩΝ (4/6) Μοντέλο Οντοτήτων Συσχετίσεων (ER) STUDENT GRADE ST UDENTS_GRADE CORRESPONDS_T O CORRESPONDS_T O HAS ST_EXE PRESENCE ST_LAB EXERSICE LAB EXERSICE LAB

39 ΑΣΚΗΣΗ 2 ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΕΠΙΔΟΣΕΩΝ ΦΟΙΤΗΤΩΝ (5/6) Σχεσιακό Μοντέλο STUDENT STUDENT_CODE STUDENT_NAME STUDENT_SURNAM E STUDENT_ADMIN smallint varchar(15) varchar(25) varchar(25) STUDENT_CODE = STUDENT_CODE GRADE EXAM_CODE STUDENT_CODE EXAM_DATE EXAM_GRADE TOT_GRADE smallint smallint datetime smallint smallint STUDENT_CODE = STUDENT_CODE STUDENT_CODE = STUDENT_CODE STUDENT_CODE = STUDENT_CODE ST_EXE STUDENT_CODE EXERSICE_CODE smallint smallint PRESENCE LECT_CODE smallint STUDENT_CODE smallint LECT_NAME varchar(50) ST_LAB STUDENT_CODE smallint LAB_CODE smallint LAB_GRADE smallint LAB_DATE timestamp LAB_WEIGHT smallint EXERSICE_CODE = EXERSICE_CODE LAB_CODE = LAB_CODE EXERSICE EXERSICE_CODE smallint EXERCISE_DESC varchar(200) EXERCISE_DATE datetime EXERCISE_WEIGHT smallint LAB LAB_CODE smallint LAB_DESCR varchar(50)

ΑΣΚΗΣΗ 2 ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΕΠΙΔΟΣΕΩΝ ΦΟΙΤΗΤΩΝ (6/6) 40 Το σχεσιακό μοντέλο μπορούμε να το αναπαραστήσουμε με τους πίνακες, ως εξής: STUDENT (STUDENT_CODE, STUDENT_NAME, STUDENT_SURNAME, STUDENT_ADMIN) GRADE (EXAM_CODE, STUDENT_CODE, EXAM_DATE, EXAM_GRADE, TOT_GRADE) PRESENCE (LECT_CODE, STUDENT_CODE, LECT_NAME) LAB (LAB_CODE, LAB_DESCR) EXERCISE (EXERCISE_CODE, EXERCISE_DESCR, EXERCISE_DATE, EXERCISE_WEIGHT) ST_EXE (STUDENT_CODE, EXERCISE_CODE) ST_LAB (STUDENT_CODE, LAB_CODE, LAB_GRADE, LAB_DATE, LAB_WEIGHT)

ΕΥΧΑΡΙΣΤΩ ΠΟΛΥ! 41