Μέρος Γ. 22C901 Βάσεις εδοµένων και Γνώσεων. 9ο Εξάµηνο Κύκλου Σπουδών ΗΥ και Μεταπτυχιακός Κύκλος Σπουδών. Ν. Αβούρης

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

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

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

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

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

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

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

#5. Σχεσιακό Μοντέλο

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

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

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

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

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

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

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

Το εσωτερικό ενός Σ Β

Τεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

MySQL stored procedures

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

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Επεξεργασία οσοληψιών. το πώς βλέπει το Σ Β τα προγράµµατα των χρηστών. οσοληψία (transaction)

Επεξεργασία οσοληψιών

Βάσεις Δεδομένων ΙΙ. Διάλεξη 3 η Tεχνικές Aνάκαμψης. Ιδιότητες Δοσοληψιών

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

Τεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε

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

ΙΑΧΕΙΡΙΣΗ ΟΣΟΛΗΨΙΩΝ Να θυµηθούµε:

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

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

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

Πληροφοριακά Συστήματα Διοίκησης

Επεξεργασία Ερωτήσεων

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

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

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

Επεξεργασία οσοληψιών (συνέχεια)

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

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

Επεξεργασία Ερωτήσεων

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

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

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Σχετικά µε το µάθηµα: Αξιολόγηση. Σχετικά µε το µάθηµα:faq ΟΧΙ ΝΑΙ. Λιγότερος! (ας πούµε το 1/3-1/4)

DELETE, UPDATE, INSERT.

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

Προχωρημένα Θέματα Βάσεων Δεδομένων

DELETE, UPDATE, INSERT

Επισκόπηση Μαθήµατος

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΓΡΕΒΕΝΑ)

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

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

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

Επεξεργασία Ερωτήσεων

Κεφάλαιο 13 Δοσοληψίες

Κανονικοποίηση. Άτυπες Οδηγίες. Παράδειγµα. Αξιολόγηση Σχεσιακών Σχηµάτων Β. Περιττές Τιµές και Ανωµαλίες Ενηµέρωσης

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

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

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

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

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

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

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

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

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

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

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

Certified Data Base Designer (CDBD)

Αντικείµενο: Θεµελιώδες πρόβληµα της επιστήµης µας εδοµένα

Λογικός Σχεδιασµός Σχεσιακών Σχηµάτων: Αποσύνθεση. Βάσεις εδοµένων Ευαγγελία Πιτουρά 1

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

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

Query-by-Example (QBE)

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

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

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

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Επεξεργασία Ερωτήσεων

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

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

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

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

Βάσεις Δεδομένων ΙΙ. Διάλεξη 1 η Επεξεργασία Δοσοληψιών. Σύστημα Επεξεργασίας Δοσοληψιών


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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Κανονικές Μορφές 8ο Φροντιστήριο. Βάρσος Κωνσταντίνος

Επανάκτηση δεδομένων. (εμπλουτισμένο υλικό)

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης

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

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

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

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

Transcript:

22C901 Βάσεις εδοµένων και Γνώσεων 9ο Εξάµηνο Κύκλου Σπουδών ΗΥ και Μεταπτυχιακός Κύκλος Σπουδών Ν. Αβούρης Μέρος Γ Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 1

ιαφάνειες Γ µέρος (µαθήµατα 8-12) Σκοπός του µαθήµατος είναι η µελέτη του θεωρητικού υποβάθρου και των εργαλείων που απαιτούνται για την ανάπτυξη συστηµάτων βάσεων δεδοµένων #8 Εµφυτευµένη SQL #9 Κανονικοποίηση δεδοµένων #10 Μεγάλες βάσεις δεδοµένων κατανεµηµένες Β, #11 ασφάλεια Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 2

#8 Προγραµµατίζοντας µε την SQL Η SQL δεν είναι πλήρης γλώσσα προγραµµατισµού, όµως µπορεί να χρησιµοποιηθεί στα πλαίσια µιας εφαρµογής. δύο προσεγγίσεις υποστήριξης SQL από περιβάλλον προγραµµατισµού (και οι δύο διαδεδοµένες): SQL εµφυτευµένη σε µια γλώσσα προγραµµατισµού γενικού σκοπού (embedded SQL), περιλαµβάνεται στο ANSI/ISO στάνταρ µέσω κλήσεων συναρτήσεων (API), τέτοια προσέγγιση χρησιµοποιείται ιδιαίτερα τελευταία, π.χ. ODBC (ντε φακτο στάνταρ, Microsoft) και JDBC. Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 3

(α) Εµφυτευµένη SQL Ενσωµάτωση εντολών SQL σε ένα πρόγραµµα γλώσσας ανωτέρου επιπέδου. π.χ. C #include <sqlenv.h> EXEC SQL.( εντολή SQL ) στα πλαίσια µιας εντολής SQL µπορούν να χρησιµοποιηθούν µεταβλητές οι οποίες αρχίζουν µε ":" π.χ. EXEC SQL INSERT INTO S(S#,SNAME,CITY) VALUES(:suppno, :sname, :scity); Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 4

Εντολή UPDATE EXEC SQL UPDATE quotations SET price = :newprice, responsetime = :newresponse WHERE suppno = :suppno AND partno = :partno; Σηµείωση: Είναι καλή ιδέα να χρησιµοποιούµε τα ίδια ονόµατα µεταβλητών και στηλών (δεν ανήκουν στο ίδιο name space). Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 5

Η τιµή NULL Πρόβληµα : Πώς αναπαριστάται η τιµή NULL στο περιβάλλον του προγράµµατος; Στην DB2 κάθε µεταβλητή του φιλοξενούντος προγράµµατος :Χ συνοδεύεται από µια δεύτερη βοηθητική µεταβλητή που ονοµάζεται indicator value (ενδεικτική τιµή). Όταν αυτή έχει τιµή -1 η τιµή της µεταβλητής είναι NULL. Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 6

ήλωση µεταβλητών Πρέπει να δηλωθούν οι µεταβλητές που πρόκειται να χρησιµοποιηθούν. Υπάρχει αντιστοιχία µεταξύ των τύπων της C και της SQL: SQL smallint integer decimal(p,s) real double char(n) varchar(n) date time timestamp C long long δεν υπάρχει* float double char[n+1]** char[n+1]*** char[11] char[9] char[27] * µπορεί να ανταλλαγούν τιµές τύπου decimal µεταξύ ενός προγράµµατος C και SQL µε µετασχηµατισµό της σε char. **τερµατικός χαρακτήρας null. *** εναλλακτικά : struct { short length; char data[n]; } Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 7

Παράδειγµα δήλωσης µεταβλητών EXEC SQL BEGIN DECLARE SECTION; long qonhand, qonorder, threshold; /* Integers */ char suppno[4]; /* char(3) */ char partno[5]; /* char(4) */ char orderdate[11] /* date */ struct { short length; char data[50]; } sname, saddr; /* varchar(50) */ short indic1=0,indic2=0,indic3=0; /*indicators*/ EXEC SQL END DECLARE SECTION; Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 8

Κωδικός σφάλµατος Κάθε εντολή SQL επιστρέφει έναν κωδικό σφάλµατος µέσω της δοµής SQLCA η οποία δηλώνεται στο αρχείο sqlca.h Με την παρακάτω εντολή η δοµή SQLCA περιλαµβάνεται στο πρόγραµµα µας: EXEC SQL INCLUDE SQLCA; Επίσης µε την ίδια εντολή ορίζεται η συντοµογραφία SQLCODE σαν ο πιο συνηθισµένος κωδικός σφάλµατος που περιέχεται στη δοµή αυτή. Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 9

WHENEVER: Έλεγχος κωδικού σφάλµατος Η εντολή WHENEVER ελέγχει την τιµή του κωδικού σφάλµατος: EXEC SQL WHENEVER NOT FOUND CONTINUE SQLERROR GO TO label π.χ. SQLWARNING EXEC SQL WHENEVER SQLERROR GO TO print-message ; Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 10

Πρόβληµα: εµφύτευση SELECT Η εντολή SELECT είναι δύσκολο να εµφυτευτεί σε ένα περιβάλλον γλώσσας προγραµµατισµού γιατί το αποτέλεσµα µιας αναζήτησης είναι ένα σύνολο από πλειάδες Η λύση στο πρόβληµα αυτό δίδεται είτε από: εντολή SELECT ΙΝΤΟ µιας πλειάδας χρήση δροµέα:... DECLARE <δροµέα> CURSOR FOR <query> FETCH FROM <δροµέα> ΙΝΤΟ <λίστα µεταβλητών> Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 11

ήλωση δροµέα (cursor) Ο δροµέας είναι ένας µηχανισµός ο οποίος µας επιτρέπει την ανάκτηση δεδοµένων από µια Β σε ένα πρόγραµµα. Συγκεκριµένα µε τον µηχανισµό αυτόν προσδιορίζουµε τα δεδοµένα που επιθυµούµε να ανακτηθούν από µια Β και στη συνέχεια ο δροµέας µας επιτρέπει να πάρουµε τα δεδοµένα γραµµή-γραµµή στο πρόγραµµα µας. Ο δροµέας είναι µια µεταβλητή που σχετίζεται µε µια συγκεκριµένη αναζήτηση (SELECT). EXEC SQL DECLARE C1 CURSOR FOR SELECT partno, description, qonhand, qonorder FROM parts WHERE description LIKE '%' :userdescrip '%' FOR UPDATE OF qonhand, qonorder; Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 12

ροµέας : παράδειγµα EXEC SQL DECLARE X CURSOR FOR SELECT S.S#, S.SNAME, S.STATUS FROM S WHERE S.CITY = :y ; (καθαρά δηλωτική χρήση, όχι εκτέλεσης της SELECT) στη συνέχεια.. EXEC SQL OPEN X ; EXEC SQL FETCH X INTO :s#, :sname, :stat ; EXEC SQL CLOSE X;... Μεταβολή της τρέχουσας εγγραφής µε χρήση του CURRENT OF X Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 13

δροµέας EXEC SQL UPDATE S SET STATUS = STATUS + :raise WHERE CURRENT OF X ; EXEC SQL DELETE FROM S WHERE CURRENT OF X ; Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 14

παράδειγµα EXEC SQL DECLARE CP CURSOR FOR SELECT P.P#, P.PNAME, P. COLOR, P. WEIGHT, P. CITY FROM P WHERE P.P# > previous_p# Previous_P# = ' '; eof = false ; DO WHILE ( eof = false ) EXEC SQL ΟΡΕΝ CP ; DO count: = 1 to 10 ; EXEC SQL FETCH CP ΙΝΤΟ :P#, ; IF SQLSTATE = '02000. THEN DO ; EXEC SQL CLOSE CP ; EXEC SQL COMMIT ; eof = true ; END; ELSE print P#, ; END ; EXEC SQL DELETE FROM P WHERE P.P# = :P# ; EXEC SQL CLOSE CP ; EXEC SQL COMMIT ; Previous_P# = P# ; END ; Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 15

Το πρότυπο SQL/CLI ANSI/ISO IEC 9075-3-1995 call level interface Το πρότυπο δηµιουργήθηκε από το SQL Access Group (SAG) Το πρότυπο ODBC δηµιουργήθηκε από την Microsoft υλοποιεί το πρότυπο στον πυρήνα του (core level του ODBC 3.0). To SQL/CLI έχει µεγάλη διάδοση, περιλαµβάνει περίπου 40 κλήσεις του API που επιτρέπουν την σύνδεση µε µία βάση δεδοµένων, εκτέλεση εντολών SQL, διαχείριση σφαλµάτων κλπ. Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 16

SQL/CLI : λειτουργία Το X/Open Call-Level Interface (CLI): Υποθέτει ότι οι οδηγοί βάσεων δεδοµένων δέχονται κλήσεις CLI τις οποίες µεταφράζουν στη γλώσσα δεδοµένων της Βάσης Κάθε εφαρµογή µπορεί να λειτουργήσει ως CLI server αρκεί νε έχει κατάληλους οδηγούς CLI Driver Manager - δισυνδεέται µε τους οδηγούς µέσω Service Provider Interface (SPI) Application Application ------------------------------------------ ODBC Driver Manager ------------------------------------------ Driver to Driver to Driver Oracle DB2 Informix `-----------' `-----------' `---------' V V V Oracle DB DB2 Informix DB Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 17

Microsoft ODBC CLI Απόλυτα συµβατό µε το πρότυπο, ώς προς τον πυρήνα Τρία επίπεδα συµβατότητας: Πυρήνας - άνοιγµα και κλείσιµο σύνδεσης µε τη Β εκτέλεση εντολών SQL, αποτέλεσµα εκτέλεσης της εντολής FETCH, COMMIT, ROLL BACK, διαχείριση σφαλµάτων Επίπεδο 1 - Υποστήριξη καταλόγων, BLOBs, and driver-specific λειτουγίες Επίπεδο 2 - Υποστήριξη δροµέα cursors Οι εφαρµογές πρέπει να ελέγξουν ποιο από τα επίπεδα αυτά υποστηρίζει ο οδηγός Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 18

#9 Κανονικοποίηση σχέσεων Χρειάζεται ένα µέτρο ποιότητας του σχήµατος µιας βάσης δεδοµένων, δηλαδή αν η οµαδοποίηση των γνωρισµάτων σε σχέσεις έχει γίνει κατά βέλτιστο τρόπο Η ποιότητα µπορεί να συζητηθεί είτε στο λογικό επίπεδο (βαθµός κατανόησης του σχήµατος από τους χρήστες τους), είτε στο επίπεδο διαχείρισης που αφορά στο πώς οι πλειάδες αποθηκεύονται και ενηµερώνονται Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 19

Κριτήρια ποιότητας Σηµασιολογιά γνωρισµάτων (όσο πιο εύκολα εξηγείται η σηµασιολογία µιας σχέσης τόσο καλύτερος θεωτείται ο σχεδιασµός) Ελάττωση πλεοναζουσών τιµών στις πλειάδες Ελάττωση τιµών NULL στις πλειάδες Απόρριψη πλασµατικών πλειάδων Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 20

Παράδειγµα προβληµατικής σχέσης Έστω πίνακας των σπουδαστών και καθηγητών που επιβλέπουν τις διπλωµατικές τους R1(AM_spoud,Onoma_spoud,Onoma_kath,Thl_kath) Παρατηρήστε επαναλήψεις και προβλήµατα διαγραφής/ εισαγωγής και τροποποίησης πληροφορίας AM_spoud Onoma_spoud Onoma_kath Thl_kath 1234 Ν. Ανανιάδης Νικολάου A. 997123 1235 Γ. Αδιάβαστος Γεωργίου Π. 997200 1236 Β. Αψηλός Γεωργίου Π. 997200 1237 Γ. Αδιόρθωτος Νικολάου Α. 997123 1238 Ζ. Απρόσεκτος Νικολάου Α. 997123 1239 Η. Αργυρίου Παπαδόπουλος Γ. 997100 1240 Κ. Άσηµος Γεωργίου Π. 997200 1241 Τ. Άχαρος Παπαδόπουλος Γ. 997100 Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 21

Ανωµαλίες εισαγωγής/διαγραφής /τροποποίησης Πώς εισάγεται κάποιος που δεν έχει δηλώσει ακόµη διπλωµατική; Πώς εισάγεται καθηγητής που δεν παρακολουθεί ακόµη διπλωµατικές εργασίες Όταν διαγραφεί ο τελευταίος σπουδατής κάποιου καθηγητή χάνονται οι πληροφορίες που αφορούν τον καθηγητή (όνοµα, τηλέφωνο) Αν αλλάξει το τηλέφωνο ενός καθηγητή θα πρέπει να ενηµερωθούν πολλές εγγραφές Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 22

Τιµές NULL Αν υπάρχει γνώρισµα µε πολλά NULL (πχ στη σχέση R1, αρ. Κυκλοφορίας αυτοκινήτου φοιτητή και έστω ότι 90% των εγγραφών παίρνουν την τιµή ΝULL) Συνέπεια.. Σπατάλη χώρου σε επίπεδο αποθήκευσης ύσκολος χειρισµός τους από συναθροιστικές πράξεις (SUM, COUNT) Όχι σαφής σηµασιολογία, µπορεί να σηµαίνει είτε ότι η τιµή δεν έιναι γνωστή, είτε ότι η τιµή είναι γνωστή αλλά δεν έχει καταχωρηθεί, είτε ότι το γνώρισµα δεν υφίσταται για την πλειάδα Οδηγία: δηµιουργία βοηθητικής σχέσης σπουδαστήαριθµού κυκλοφορίας Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 23

Συναρτησιακές εξαρτήσεις γνωρισµάτων Τα γνωρίσµατα Υ είναι συναρτησιακά εξαρτώµενα από τα γνωρίσµατα Χ, όταν για κάθε τιµή των Χ η τιµή των Υ είναι µονοσήµατα ορισµένη Συµβολίζεται Χ Υ ή Χ Υ Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 24

Η Β παραγωγών-προιόντων SNAME S# STATUS CITY PNAME P# COLOR WEIGHT CITY S# P# QTY Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 25

Ορισµοί κανονικών µορφών 1η κανονική µορφή (1 st Normal Form (1NF) Μιά σχέση είναι σε πρώτη κανονική µορφή όταν όλες οι τιµές είναι ατοµικές, όλες οι τιµές κάθε στήλης είναι του ιδίου τύπου (έχουν κοινό πεδίο ορισµού), οι στήλες και οι πλειάδες είναι µη διαταγµένες και οι πλειάδες είναι διαφορετικές µεταξύ τους. (οι σχέσεις του σχεσιακού µοντέλου είναι στην 1η κανονική µορφή ) Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 26

2η κανονική µορφή Μια σχέση είναι στη 2η κανονική µορφή όταν όταν είναι ήδη στην 1η ΚΜ και ακόµη όλα τα πεδία που δεν ανήκουν στο πρωτεύον κλειδί είναι πλήρως συναρτησιακά εξαρτηµένα από το πρωτεύον κλειδί (αφορά σχέσεις µε σύνθετα πρωτεύοντα κλειδιά) Πρωτεύον κλειδί Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 27

Παράδειγµα, εξετάσετε αν η SP1 είναι σε κανονική µορφή Έστω σχέση SP1, η οποία περιέχει πληροφορίες STATUS, CITY που αφορούν τον προµηθευτή. Επίσης υποθέτουµε ότι υπάρχει συναρτησιακή εξάρτηση µεταξύ των CITY STATUS (δηλαδή οι προµηθευτές του Λονδίνου έχουν STATUS=20 κλπ.) S# STATUS CITY P# QTY S1 20 London P1 300 S1 20 London P2 200 S1 20 London P3 400 S1 20 London P4 200 S1 20 London P5 100 S1 20 London P6 100 S2 10 Paris P1 300 S2 10 Paris P2 400 S3 10 Paris P2 200 S4 20 London P2 200 S4 20 London P4 300 S4 20 London P5 400 Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 28

απάντηση Η σχέση είναι στην 1η κανονική µορφή αλλά όχι στην 2η κανονική µορφή (Το γνώρισµα STATUS είναι µερικά συναρτησιακά εξαρτηµένο από το πρωτεύον κλειδί) : STATUS S# P# CITY QTY Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 29

Κανονικοποίηση Γενικά: αν R(A,B,C,D), µε πρωτεύον κλειδί (Α,Β) και R.A R.D, η κανονικοποίηση σε 2ΚΜ απαιτεί τη δηµιουργία δύο σχέσεων R1, R2 όπου: R1(A,D), key(a) R2(A,B,C) key(a,b), foreign key (A) S# P# QTY S1 P1 300 S1 P2 200 S1 P3 400 S1 P4 200 S1 P5 100 S1 P6 100 S2 P1 300 S2 P2 400 S3 P2 200 S4 P2 200 S4 P4 300 S4 P5 400 S# STATUS CITY S1 20 London S2 10 Paris S3 10 Paris S4 20 London S4 20 London Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 30

3η κανονική µορφή Μια σχέση είναι στη 3η κανονική µορφή όταν όταν είναι ήδη στην 2η ΚΜ και ακόµη όλα τα πεδία που δεν ανήκουν στο πρωτεύον κλειδί δεν έχουν µεταβατική εξάρτηση από το πρωτεύον κλειδί Πρωτεύον κλειδί Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 31

άσκηση Να ελέγξετε αν η σχέση είναι σε κανονική µορφή και να κάνετε τις απαραίτητες κανονικοποιήσεις S# STATUS CITY S1 20 London S2 10 Paris S3 10 Paris S4 20 London S4 20 London Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 32

Απάντηση Η σχέση δεν είναι στην 3η ΚΜ αφού υπάρχει έµµεση συναρτησιακή εξάρτηση µεταξύ του STATUS και του πρωτεύοντος κλειδιού (S#). S# STATUS CITY Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 33

κανονικοποίηση Γενικά αν R(A,B,C) key(a) και R.B R.C Τότε η κανονικοποιήση της σχέσης R στην 3η ΚΜ απαιτεί τον µετασχηµατισµό της R σε R1, R2 όπου: R1(B,C) key (B) R2(A,B) key (A), foreign key (B) S# CITY S1 London S2 Paris S3 Paris S4 London S5 Athens CITY STATUS London 20 Paris 10 Athens 30 Rome 50 Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 34

Άσκηση Να περιγραφούν οι συναρτησιακές εξαρτήσεις των πεδίων του πίνακα Σε ποιά κανονική µορφή βρίσκεται ο πίνακας Να κανονικοποιηθεί ο πίνακας ERGO_KODIKOS ONOMA_YPAL MISTHOS_YPAL 100A Νικολάου 20,000 100A Γεωργίου 28,200 100B Γεωργίου 28,200 200A Νικολάου 20,000 200B Νικολάου 20,000 200C Παπαδόπουλος 18,100 200C Γεωργίου 28,200 200D Παπαδόπουλος 18,100 Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 35

#10 ιαχείριση πολλαπλών χρηστών οσοληψία (Τransaction): µια λογική ενότητα εργασίας, όχι όµως απαραίτητα µια µόνο εντολή στην Β. Σε µεγάλες Β πρέπει να υποστηρίζεται η έννοια της δοσοληψίας και της επεξεργασίας δοσοληψιών (transaction processing). Οι δυο λειτουργίες / εντολές που πρέπει να υπάρχουν είναι οι : COMMIT TRANSACTION (εκτέλεση δοσοληψίας) ROLLBACK TRANSACTION (αναίρεση δοσοληψίας) Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 36

Βασικές Ιδιότητες δοσοληψιών ACID (Atomicity- Consistency- Isolation- Durability) Ατοµικότητα : εν µπορεί να εκτελεστεί ένα τµήµα µόνο της δοσοληψίας (ή όλη ή τίποτα) Συνέπεια- ακεραιότητα : Η ακεραιότητα της Β διατηρείται µεταξύ δυο δοσοληψιών. Απόζευξη δοσοληψιών: Οι δοσοληψίες είναι πλήρως αποζευγµένες µεταξύ τους. ιάρκεια : Όταν ολοκληρωθεί µια δοσοληψία η ισχύς της είναι διαρκής. Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 37

Ανάκτηση συστήµατος Σφάλµατα συστήµατος (π.χ. διακοπή ρεύµατος) ή σφάλµατα µαγνητικών δίσκων (π.χ προσγείωση κεφαλής του συστήµατος δίσκων) Μετά από ένα τέτοιο σφάλµα, το σύστηµα σύµφωνα µε τα στοιχεία που έχει κρατήσει πρέπει να είναι σε θέση να ανακαλέσει τις µη ολοκληρωθείσες δοσοληψίες και να επανεκτελέσει τις δοσοληψίες που χάθηκαν. Σηµεία Ελέγχου (Checkpoints). Σηµεία στα οποία τα περιεχόµενα των ενδιαµέσων µνηµών (buffers) καταχωρούνται στη φυσική βάση δεδοµένων και το συµβάν καταγράφεται στο αρχείο συµβάντων (log file). Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 38

Περιπτώσεις δοσοληψιών (t c checkpoint, t f failure σφάλµα) t c t f Τ1 Τ2 Τ3 Τ4 Τ5 Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 39

Αλγόριθµος ανάκαµψης συστήµατος ηµιούργησε δύο λίστες δοσοληψιών (UNDO= όλες οι διεργασίες στο σηµείο ελέγχου και REDO= ) Να ελέγξεις το logfile από το σηµείο ελέγχου Όταν βρείς BEGIN TRANSACTION για Τ βάλε την Τ στην λίστα UNDO Άν βρείς COMMIT για Τ, να µεταφέρεις την Τ από την λίστα UNDO στη λίστα REDO Όταν φτάσεις στο τέλος του logfile να ξαναεπαναλάβεις τις διεργασίες που βρίσκονται στην λίστα REDO και να αναιρέσεις τις διεργασίες της λίστας UNDO ακολουθώντας αντίστροφα το logfile. Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 40

Two phase commit (επικύρωση δοσοληψίας σε δυο φάσεις) Ο µηχανισµός commit/rollback εκτελείται σε δύο φάσεις σε περιπτώσεις κατανεµηµένων συστηµάτων πολλαπλών βάσεων δεδοµένων. Φ1. Ολες οι βάσεις δεδοµένων αποθηκεύουν σε µόνιµο µέσο το logfile και στέλνουν ΟΚ στον συντονιστή Φ2. Αν όλες οι απαντήσεις είναι ΟΚ η εντολή είναι COMMIT στο log του συντονιστή, ενώ άν έστω µία είναι NOT OK τότε ROLLBACK. Αν το σύστηµα αστοχήσει κατά τη διαδικασία, ελέγχεται το Log του συντονιστή Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 41

Σύγχρονη επεξεργασία δοσοληψιών Χρειάζονται µηχανισµοί για την αποφυγή ανεπιθύµητων παρεµβολών µεταξύ δοσοληψιών που λαµβάνουν χώρα συγχρόνως. Πιθανά προβλήµατα: απώλεια ενηµέρωσης εξάρτηση από µη επικυρωµένη δοσοληψία ανάλυση ασύµβατης πληροφορίας Έλεγχος σύγχρονης λειτουργίας : ΚΛΕΙ ΩΜΑ S-LOCK (shared lock) κλείδωµα για ανάγνωση X-LOCK (exclusive lock) κλείδωµα για ενηµέρωση Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 42

1. Αδιέξοδο λόγω αµοιβαίου κλειδώµατος TRANSACTION A Retieve p1 Acquire S-Lock Retrive p2 Request S-Lock Wait Wait Wait t1 t2 t3 t4 TRANSACTION B Retieve p2 Acquire S-Lock Retrive p1 Request S-Lock Wait Wait Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 43

Άρση αδιεξόδου Επιλογή µιας δοσοληψίας-θύµατος και ανάκληση της (rollback) Πρωτόκολλο κλειδώµατος: S-LOCK για όλα τα RETRIEVE X-LOCK για όλα τα UPDATE ιατήρηση του LOCK µέχρι τέλους της δοσοληψίας Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 44

2. Απώλεια ενηµέρωσης TRANSACTION A Retrieve P t1 t2 TRANSACTION B Retrieve P Update P t3 t4 Update P Η ενηµέρωση της δοσοληψίας Α χάνεται Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 45

3. Εξάρτηση από µια µηεπικυρωµένη δοσοληψία TRANSACTION A Retrieve P t1 t2 TRANSACTION B Update P t3 ROLLBACK Η δοσοληψίας Α χρησιµοποιεί µια τιµή της P που δεν έχει επικυρωθεί. Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 46

Isolation: SQL support SET TRANSACTION { access mode, isolation level} ACCESS MODE = READ ONLΥ READ WRITE (default) ISOLATION LEVEL = READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE (default) Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 47

Παράδειγµα isolation level (a) Dirty read (επιτρέπεται ανάγνωση τροποποιηµένων δεδοµένων) SET TRANSACTION READ WRITE ISOLATION LEVEL READ UNCOMMITTED (b) Επιτρέπονται πολλαπλές ερωτήσεις στα πλαίσια µιας δοσοληψίας, όχι όµως ανάγνωση µηέγκυροποιηµένων δεδοµένων SET TRANSACTION READ WRITE ISOLATION LEVEL READ COMMITTED Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 48

Παράδειγµα isolation level (2) (c) Γίνεται µια ανάγνωση δεδοµένων τα οποία χρησιµοποιούνται σε επόµενες ερωτήσεις στα πλαίσια της δοσοληψίας SET TRANSACTION READ WRITE ISOLATION LEVEL REPEATABLE READ Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 49

#11 Ασφάλεια δεδοµένων Αφορά την εξασφάλιση και προστασία των δεδοµένων από χρήστες που χωρίς να έχουν το δικαίωµα προσπαθούν να έχουν πρόσβαση σε αυτά, να τα µεταβάλλουν ή να τα καταστρέψουν ύο µορφές ελέγχου: Προεραιτικός έλεγχος Υποχρεωτικός έλεγχος Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 50

1. Προεραιτικός έλεγχος Ευέλικτος έλεγχος, η πιο συνήθης περίπτωση Παράδειγµα CREATE SECURITY RULE SR3 GRANT RETRIEVE(S#,SNAME, CITY), DELETE ON S WHERE S.CITY <> LONDON TO JIM, FRED, GIORGOS ON ATTEMPTED VIOLATION REJECT Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 51

GRANT GRANT { RETRIEVE INSERT UPDATE DELETE ALL } Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 52

παράδειγµα CREATE SECURITY RULE ΕΧ1 GRANT RETRIEVE(S#,SNAME), ON S WHERE S.STATUS > 50 TO KOSTAS; Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 53

Παράδειγµα 2 Έστω ότι επιθυµούµε να παρέχεται πρόσβαση µόνο σε στατιστική πληροφορία στον NIKOS CREATE VIEW SSQ AS (S.S#,SUM (SP WHERE SP.S#=S.S#, QTY) AS SQ); CREATE SECURITY RULE ΕΧ2 GRANT RETRIEVE ON SSQ TO NIKOS; Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 54

Έλεγχος συνθηκών πρόσβασης CREATE SECURITY RULE ΕΧ3 GRANT RETRIEVE, UPDATE (STATUS) ON S WHERE DAY() IN ( DE, TR, TE, PE, PA ) AND TIME() >= 7.30 am AND TIME() < 3.30 pm TO AGORES Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 55

SQL: Εντολή GRANT GRANT δικαιώµατα ON αντικείµενο ΤΟ χρήστες [ PUBLIC] ON ATTEMPTED VIOLATION ικαιώµατα= USAGE, SELECT, INSERT, UPDATE, DELETE, REFERENCES Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 56

2. Υποχρεωτικός έλεγχος Β µε στατική δοµή ασφαλείας (π.χ. top secret, secret, confidential) Κάθε χρήστης έχει δικαιώµατα ασφαλείας (π.χ. top secret > secret > confidential) Κανόνες ασφαλείας: Χρήστης Ι µπορεί να δει το αντικείµενο J µόνο αν το επίπεδο ασφαλείας του J είναι <= των δικαιωµάτων ασφαλείας του Ι Ν. Αβούρης- Βάσεις εδοµένων και Γνώσεων 57