Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Επανάληψη Βασικών Αρχών Β.Δ.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Επανάληψη Βασικών Αρχών Β.Δ."— Μεταγράφημα παρουσίασης:

1 Επανάληψη Βασικών Αρχών Β.Δ.
Δαμιανός Χατζηαντωνίου Τμήμα Διδακτικής της Τεχνολογίας και Ψ.Σ. Πανεπιστήμιο Πειραιώς

2 Περιεχόμενα Εισαγωγικά Μοντέλο Οντοτήτων-Συσχετίσεων
Σχεσιακό Μοντέλο - Άλγεβρα SQL Οργάνωση Αρχείων και Ευρετήρια Ειδικά Θέματα

3 Εισαγωγικά

4 Ιστορική Αναδρομή Δεκαετία του 1950
Κάρτες και ταινίες (σειριακή επεξεργασία) – Batch processing Αρχή του 1960 πρώτο γενικού-σκοπού ΣΔΒΔ: Integrated Data Store (GE) Charles Bachman (Recipient of the 1st Turing Award, 1973) network data model (δικτυωτό) Τέλη του 1960 Information Management System (IMS) IBM hierarchical data model (Ιεραρχικό) SABRE Airline Reservation System (AA+IBM, travelocity!!)

5 Ιστορική Αναδρομή 1970 Edgar Codd (IBM, San Jose) relational data model (Recipient of the Turing Award, 1981) Ερευνητικά Προγράμματα: System R, INGRES - Γλώσσες: SEQUEL, QBE, QUEL Δεκαετία του 1980 SQL (μέρος του System R) transaction management (Jim Gray, Turing Award, 1999) [Τάσεις: αντικειμενοστραφή, αρχιτεκτονική πελάτη-εξυπηρέτη, κατανεμημένες, έμπειρα]

6 Ιστορική Αναδρομή Δεκαετία του 1990
εμπορικά αντικειμενοστραφή συστήματα [Τάσεις: πολυβάσεις, χωρικές & χρονικές, πολυμέσα, αποθήκες δεδομένων, συμπερασματικες] Δεκαετία του 2000 Τάσεις: Asilomar Report The Web Changes Everything Unifying Program Logic and Database Systems Hardware Advances: Scale up to MegaServers and Scale Down to Appliances

7 Συστήματα Διαχείρισης Β.Δ. (DBMS)
Συλλογή αλληλοσυσχετιζόμενων δεδομένων Σύνολο προγραμμάτων που χειρίζονται τα δεδομένα ΣΔΒΔ περιέχουν πληροφορίες για μία συγκεκριμένη επιχείρηση Τα ΣΔΒΔ προσφέρουν ένα περιβάλλον που είναι εύκολο (convenient) και αποτελεσματικό (efficient). Εφαρμογές Β.Δ.: Τραπεζικός χώρος: όλες οι συναλλαγές Αεροπορικές εταιρείες: reservations, schedules Πανεπιστήμια: εγγραφές, βαθμοί Πωλήσεις: πελάτες, προϊόντα, αγορές Μεταποίηση: παραγωγή, αποθήκη, παραγγελίες, supply chain Ανθρώπινοι πόροι: στοιχεία υπαλλήλων, μισθοί, εφορία >>>>> Οι Β.Δ. βρίσκονται στην καθημερινή μας ζωή.

8 Σκοπός μίας Β.Δ. Στην αρχή, οι εφαρμογές των Β.Δ. «κάθονταν» πάνω σε file systems Προβλήματα των file systems ώστε να αποθηκεύουν δεδομένα: Πλεονασμός (redundancy) των δεδομένων και ασυνέπεια (inconsistency) Πολλαπλά file formats, επανάληψη πληροφοριών σε διαφορετικά files Δυσκολία πρόσβασης στην πληροφορία Συγγραφή προγραμμάτων για κάθε νέα λειτουργία Απομόνωση δεδομένων (data isolation) — πολλαπλά files και formats Προβλήματα ακεραιότητας (integrity problems) Οι περιορισμόι για την ακεραιότητα (integrity constraints) (π.χ. υπόλοιπο λογαριασμού > 0) ήταν κομμάτια των προγραμμάτων Δύσκολο να προστεθούν νέοι περιορισμοί ή να αλλαχτούν ήδη υπάρχοντες.

9 Σκοπός μίας Β.Δ. Προβλήματα των file systems ώστε να αποθηκεύουν δεδομένα: Ατομικότητα των αλλαγών (atomicity of updates) Προβλήματα κατα τις αλλαγές μπορέι να αφήσουν μία Β.Δ. σε ασυνεπή κατάσταση, με μερικές από τις αλλαγές να έχουν γίνει και άλλες όχι. Π.χ. η μεταφορά χρημάτων από έναν λογαριασμό σε έναν άλλον θα πρέπει να ολοκληρωθεί ή να μη συμβεί καθόλου. Ταυτόχρονη πρόσβαση πολλαπλών χρηστών (concurrent access) Απαραίτητη για αποδοτικά συστήματα. Ταυτόχρονη πρόσβαση μπορεί να οδηγήσει σε inconsistencies Π.χ. ταυτόχρονη κατάθεση χρημάτων Προβλήματα ασφάλειας Τα Σ.Δ.Β.Δ. προσφέρουν λύσεις σε όλα αυτά τα προβλήματα.

10 Αφαιρετική δομή μίας Β.Δ.

11 Στιγμιότυπα (Instances) και Schemas
Παρεμφερή με τον τύπο και τις μεταβλητές στις γλώσσες προγραμματισμού. Schema – η λογική δομή μίας Β.Δ. π.χ. μια βάση δεδομένων αποτελείται από πληροφορίες για πελάτες και λογαριασμούς, καθώς και τη σχέση μεταξύ των. Παρόμοια με τον τύπο μίας μεταβλητής σε ένα πρόγραμμα. Physical schema: σχεδίαση της Β.Δ. σε φυσικό επίπεδο Logical/Conceptual schema: σχεδίαση της Β.Δ. σε λογικό επίπεδο Στιγμιότυπο – τα περιεχόμενα μίας Β.Δ. σε μια δεδομένη στιγμή. Ανάλογο με την τιμή μιας μεταβλητής κατά τη διάρκεια εκτέλεσης.

12 Ανεξαρτησία δεδομένων (Data Independency)
Ανεξαρτησία Δεδομένων: αλλαγή του σχήματος ενός επιπέδου χωρίς να αλλάξουμε το σχήμα του αμέσως υψηλότερου επιπέδου. Αρχή της ανεξαρτησίας των δεδομένων σε φυσικό επίπεδο: η δυνατότητα να αλλάζει κάποιος το physical schema χωρίς να αλλάζει το logical schema Ανάπτυξη εφαρμογών με βάση το λογικό schema Οι διεπαφές μεταξύ των διαφόρων επιπέδων πρέπει να είναι πολύ καλά ορισμένες. Λογική ανεξαρτησία των δεδομένων: η δυνατότητα να αλλάζει κάποιος το conceptual schema χωρίς να αλλάζει το επιπέδο όψεως.

13 Μοντέλα δεδομένων Ένα σύνολο από «θεμέλιους λίθους» για την περιγραφή:
συσχετίσεων μεταξύ των δεδομένων σημασιολογικού των δεδομένων (data semantics) περιορισμών επί των δεδομένων Μοντέλο Οντοτήτων-Συσχετίσεων (Entity-Relationship) Σχεσιακό Μοντέλο (Relational) ΄Αλλα μοντέλα: αντικειμενοστραφές (object-oriented model) semi-structured data models παλιότερα μοντέλα: network model και hierarchical model Διαφοροποίηση μεταξύ των object-based και value-based μοντέλα (π.χ. οντοτήτων-συσχετίσεων και σχεσιακό).

14 Γλώσσα Ορισμού Δεδομένων - Data Definition Language (DDL)
Τρόπος ορισμού του database schema Π.χ. create table account ( account-number char(10), balance integer) Ο μεταφραστής της DDL compiler δημιουργεί ένα σύνολο από πίνακες οι οποίοι αποθηκεύονται στο λεξικό δεδομένων (data dictionary) Τα λεξικά δεδομένων περιέχουν μέτα-δεδομενα (metadata) database schema Data storage and definition language γλώσσα στην οποία περιγράφεται και η δομή αποθήκευσης και οι τρόποι/μέθοδοι πρόσβασης στα δεδομένα (storage structure and access methods) συνήθως μία επέκταση της DDL

15 Γλώσσα Χειρισμού Δεδομένων - Data Manipulation Language (DML)
Γλώσσες για πρόσβαση και χειρισμό των δεδομένων που είναι αποθηκευμένα βάση ενός μοντέλου δεδομένων. Η Γ.Χ.Δ. είναι γνωστή και σαν γλώσσα αιτημάτων ή ερωτημάτων (query language) Δυο ειδών γλώσσες: Διαδικαστικές (procedural) – ο χρήστης ορίζει τι δεδομένα απαιτούνται και πως θα πρέπει να ανακτηθούν (π.χ. πρόγραμμα σε Java) Μη-διαδικαστικές ή Δηλωτικές (declarative) – ο χρήστης ορίζει τι δεδομένα απαιτούνται μόνο – κοντύτερα στη φυσική γλώσσα H SQL (Structured Query Language) είναι η πιο διαδεδομένη γλώσσα ερωτημάτων

16 Διαχείριση Συναλλαγών (Transactions)
Μία συναλλαγή (transaction) είναι ένα σύνολο από πράξεις (operations) οι οποίες εκτελούν μία απλή λογική λειτουργία σε μια εφαρμογή Β.Δ. Το κομμάτι ενός Σ.Δ.Β.Δ. που διαχειρίζεται τις συναλλαγές (transaction manager) διασφαλίζει ότι η Β.Δ. παραμένει σε μια συνεπή κατάσταση άσχετα από αστοχίες (soft/hard failures) του συστήματος Ο concurrency-control manager ελέγχει την αλληλοεπίδραση ταυτόχρονων συναλλαγών ώστε να διασφαλίσει πάλι τη συνεπή κατάσταση της Β.Δ.

17 Διαχείριση αποθήκευσης δεδομένων
Ο storage manager είναι ένα κομμάτι του Σ.Δ.Β.Δ. που προσφέρει τη διεπαφή μεταξύ των low-level data που είναι αποθηκευμένα στη Β.Δ. και των εφαρμογών και των ερωτημάτων που φτάνουν σε αυτόν. Tα καθήκοντα του storage manager είναι: επικοινωνία με τον file manager του λειτουργικού συστήματος (συνήθως) αποτελεσματική αποθήκευση, ανάκτηση και ενημέρωση των δεδομένων

18 Συνολική δομή ενός συστήματος Β.Δ.

19 Μοντέλο Οντοτήτων-Συσχετίσεων

20 Μοντελοποίηση ΜΟΝΤΕΛΑ - “ΤΥΠΙΚΟ” ΜΟΝΤΕΛΟ
- “ΤΥΠΙΚΟ” ΜΟΝΤΕΛΟ - “ΜΟΝΤΕΛΟ ΠΡΑΓΜΑΤΙΚΟΥ ΚΟΣΜΟΥ” - Διαισθητικό

21 Ερωτήσεις κατά την Μοντελοποίηση Δεδομένων
Πως πρέπει να μοντελοποιήσουμε αυτό τον μικρόκοσμο? Ποιες είναι οι βασικές συνιστώσες (components)? Τι γνωρίζουμε για αυτές ? Πως πρέπει να οργανωθούν? Πως συσχετίζονται ? Ποιες πληροφορίες έχουν ενδιαφέρον ? Ποιες πληροφορίες είναι άσχετες ? Σε ποιόν ? Για ποιο σκοπό ? Πόσο συχνά? Κάτω από ποιες συνθήκες?

22 Μοντέλα Δεδομένων - Οργάνωση
Ένα ΜΟΝΤΕΛΟ ΔΕΔΟΜΕΝΩΝ έχει τρεις βασικές συνιστώσες: ΔΟΜΕΣ (Structures) ΠΡΑΞΕΙΣ (Operations) ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ (Constraints)

23 Χρήση του Μοντέλου για Ανάπτυξη ΒΔ
Από τον Μικρόκοσμο Real World Στο Μοντέλο Δεδομένων Data Model Στην Βάση Δεδομένων Database

24 ΕΝΝΟΙΟΛΟΓΙΚΟΣ ΣΧΕΔΙΑΣΜΟΣ : Δημιουργώντας ένα Διαισθητικό Μοντέλο
ΕΝΝΟΙΟΛΟΓΙΚΟΣ ΣΧΕΔΙΑΣΜΟΣ (Conceptual Model) Προσπάθεια για ξεκαθάρισμα των εννοιών Εύρεση και καταγραφή των Οντοτήτων της βάσης, των μεταξύ τους Συσχετίσεων καθώς και των Εννοιολογικών Κανόνων (semantic rules) που πρέπει να ικανοποιούν ΣΤΟΧΟΣ: Μια αφαιρετική, αλλά πλήρης περιγραφή του τμήματος του μικρόκοσμού που θα αναπαρασταθεί στην βάση δεδομένων. Αυτή η περιγραφή γίνεται με τη χρήση μιας ημι-τυπικής (pseudo-formal) σημειογραφίας / συμβολισμού (notation).

25 Μοντέλο Οντοτήτων-Συσχετίσεων (Entity-Relationship Model)
Το E-R μοντέλο ήταν ο «νικητής» μεταξύ αρκετών υποψηφίων (την δεκαετία του 80) και έγινε αποδεκτό από τους ερευνητές και την αγορά για την ΑΠΛΟΤΗΤΑ (simplicity), ΣΑΦΗΝΕΙΑ (clarity) και ΓΡΑΦΙΚΟ ΣΥΜΒΟΛΙΣΜΟ (graphical notation) που έχει. Το E-R μοντέλο είναι ένα μάλλον διαισθητικό μοντέλο που επιδιώκει να προσδιορίσει αφαιρετικά τις πληροφορίες που μια ΒΔ αποθηκεύει και οργανώνει. Όλα τα άλλα μοντέλα δεδομένων μπορούν να κριθούν σε σχέση με αυτά που προσφέρει το E-R μοντέλο

26 E-R Μοντέλο: ΔΟΜΕΣ (1) ΔΟΜΕΣ
Υπάρχουν δυο εννοιολογικές βασικές έννοιες: Οντότητες Συγκεκριμένα αντικείμενα που υπάρχουν (ή πιστεύεται ότι υπάρχουν) και μπορούν να αναπαρασταθούν στην ΒΔ π.χ., ο ΥΠΑΛΛΗΛΟΣ “Μαρία”, στο ΤΜΗΜΑ “Λογιστήριο”,το ΠΡΟΙΟΝ “Βίδες”, η ΟΜΑΔΑ “Ολυμπιακός”, ... Συσχετίσεις Είναι επίσης (ειδικά) αντικείμενα που αντιστοιχούν δύο ή περισσότερες ξεχωριστές οντότητες με ένα συγκεκριμένο νόημα (τυπικά, μια Συσχέτιση είναι ένα ταξινομημένο σύνολο οντοτήτων) π.χ.,. Η “Μαρία” είναι ΟΠΑΔΟΣ του “Ολυμπιακού”, Η “Μαρία” ΕΡΓΑΖΕΤΑΙ στο “Λογιστήριο”, κλπ.

27 E-R Μοντέλο: ΔΟΜΕΣ (2) Οι Οντότητες και οι Συσχετίσεις μπορούν να έχουν ΓΝΩΡΙΣΜΑΤΑ / ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ (ATTRIBUTES,) που είναι ιδιότητες που τα χαρακτηρίζουν π.χ., μια οντότητα ΥΠΑΛΛΗΛΟΣ έχει γνωρίσματα όνομα, ηλικία, διεύθυνση, … (ενδεικτικά, “Μαρία”, “21”, “Κηφισίας 32”, ...) επίσης, ημερομηνία είναι ένα γνώρισμα της συσχέτισης ΔΑΝΕΙΖΟΜΑΙ (ενδεικτικά, η “Μαρία” ΔΑΝΕΙΣΤΗΚΕ στις “20 Ιουνίου”) το βιβλίο «» Συνήθως τα Γνωρίσματα των Συσχετίσεων προσδιορίζουν: - Ποιος έκανε την συσχέτιση - Πότε έγινε αυτή - Πότε παύει να ισχύει, κλπ.

28 E-R Μοντέλο: ΔΟΜΕΣ (3) Τα ΠΕΔΙΑ (DOMAINS) είναι σύνολα τιμών για τα γνωρίσματα π.χ., DOMAIN OF NAMES = το σύνολο των ονομάτων DOMAIN of WEIGHT = το σύνολο τιμών για βάρη INTEGERS FROM 0 to 220 CHAR STRINGS from 1 to 10 in length, κλπ. ΕΙΔΗ ΓΝΩΡΙΣΜΑΤΩΝ ΑΠΛΑ: μια οντότητα έχει ατομική τιμή για αυτό (π.χ., φύλλο) ΣΥΝΘΕΤΑ: το γνώρισμα αποτελείται από περισσότερες τιμές (π.χ., η διεύθυνση = { Δρόμος, Αριθμός, Πόλη, Χώρα} ) ΠΛΕΙΟΤΙΜΑ (MULTI-VALUED): το γνώρισμα έχει πολλαπλές τιμές (π.χ., color of a CAR, degrees of a PERSON)

29 E-R Μοντέλο: ΔΟΜΕΣ (4) Οντότητες με ταυτόσημα γνωρίσματα ομαδοποιούνται σε ΤΥΠΟΥΣ ΟΝΤΟΤΗΤΩΝ (ENTITY SETS ή ENTITY TYPES) Ενδεικτικά, all PERSONS, all DEPARTMENTS, κλπ. Συσχετίσεις ιδίου τύπου επίσης ομαδοποιούνται σε ΤΥΠΟΥΣ ΣΥΣΧΕΤΙΣΕΩΝ (RELATIONSHIP SETS ή TYPES) Ενδεικτικά, ο τύπος συσχέτισης WORKS-ON όπου συμμετέχουν οι τύποι οντοτήτων EMPLOYEE και PROJECT. ή. Ο τύπος συσχετίσεων MANAGES όπου συμμετέχουν οι τύποι οντοτήτων EMPLOYEE και DEPARTMENΤ. ή ο τύπος συσχέτισης SALE-ACT όπου συμμετέχουν οι τύποι οντοτήτων PRODUCTS, CUSTOMERS, και SALESPERSONS.

30 ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (1)
ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (1) ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ στο E-R Μοντέλο 1. Ιδιότητες των ΤΥΠΩΝ ΣΥΣΧΕΤΙΣΕΩΝ Περισσότεροι του ενός τύποι συσχετίσεων μπορεί να υπάρχουν μεταξύ των ιδίων τύπων οντοτήτων (multiple relationships) π,χ., WORKS-FOR και MANAGES μεταξύ EMPLOYEE και DEPARTMENT. Μια συσχέτιση μπορεί να συνδέει δύο οντότητες που ανήκουν στον ίδιο τύπο οντοτήτων (αποκαλείται, ένας αναδρομικός τύπος συσχετίσεων - recursive relationship type) π.χ., ο SUPERVISION τύπος συσχετίσεων συνδέει EMPLOYEE (στον ρόλο αυτού που επιβλέπεται) με κάποιο άλλο EMPLOYEE (στον ρόλο του επιβλέποντα)

31 ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (2)
ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (2) Ένας τύπος Συσχετίσεων έχει ΒΑΘΜΟ (relationship degree): 2 τύποι οντοτήτων ---> binary relationship 3 τύποι οντοτήτων ---> ternary relationship N τύποι οντοτήτων ---> N-ary relationship Περιορισμός Ύπαρξης (existence dependency) ορίζει αν η συμμετοχή μιας οντότητας στον τύπο συσχέτισης είναι ΟΛΙΚΗ ή ΜΕΡΙΚΗ (total or partial) π.χ., όλοι οι ΥΠΑΛΛΗΛΟΙ συμμετέχουν στην ΕΡΓΑΖΟΝΤΑΙ-ΣΕ (όλοι δουλεύουν σε ένα τμήμα) --- ΟΛΙΚΗ ενώ, Στην συσχέτιση ΔΙΕΥΘΥΝΩ δεν συμμετέχουν όλοι (υπάρχουν Υπάλληλοι που δεν είναι Διευθυντές) - ΜΕΡΙΚΗ

32 ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (3)
ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (3) Ο ΛΟΓΟΣ ΠΛΗΘΙΚΟΤΗΤΑΣ (cardinality) ενός τύπου συσχετίσεων ορίζει το πόσες οντότητες από τον πρώτο τύπο οντοτήτων στην συσχέτιση μπορούν να συνδεθούν με πόσες οντότητες από τον δεύτερο τύπο οντοτήτων Συγκεκριμένα: 1 : PERSON married-to PERSON (συνάρτηση) 1 : N MOTHER having CHILDREN (inverse function) N : STUDENT reports-to ADVISOR (συνάρτηση) N : M EMPLOYEE works-on PROJECT

33 ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (4)
ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (4) 1 : N 1 : 1 . e1 e2 e3 e4 r1 r2 r3 r4 r5 d1 d2 d3 e1 e2 e3 e4 r1 r2 r3 r4 r5 d1 d2 d3 PERSON married-to PERSON MOTHER having CHILDREN

34 ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (5)
ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (5) N : M N : 1 . e1 e2 e3 e4 r1 r2 r3 r4 r5 d1 d2 d3 e1 e2 e3 e4 r1 r2 r3 r4 r5 d1 d2 d3 STUDENT reports-to ADVISOR EMPLOYEE works-for PROJECT

35 ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Γνωρίσματα (1)
ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Γνωρίσματα (1) Ιδιότητες των ΓΝΩΡΙΣΜΑΤΩΝ των Τύπων Ένα ΓΝΩΡΙΣΜΑ (ή σύνολο Γνωρισμάτων) ενός Τύπου Οντοτήτων / Συσχετίσεων για το οποίο κάθε οντότητα / συσχέτιση στο σύνολο πρέπει να έχει μοναδική τιμή (unique value(s) είναι ΚΛΕΙΔΙ (key) (ή superkey). Ενδεικτικά, ΑΦΜ του ΥΠΑΛΛΗΛΟΥ, ΟΝΟΜΑ και ΔΙΕΥΘΥΝΣΗ του ΥΠΑΛΛΗΛΟΥ, ΑΦΜ και ΟΝΟΜΑ, κλπ. Ένα ΥΠΟΨΗΦΙΟ ΚΛΕΙΔΙ (candidate key) είναι ένα ΕΛΑΧΙΣΤΟ (minimal) ΚΛΕΙΔΙ (δηλαδή, κανένα υποσύνολο των γνωρισμάτων του δεν είναι και αυτό κλειδί) Ενδεικτικά, ΑΦΜ είναι Υποψήφιο Κλειδί για τον ΥΠΑΛΛΗΛΟ, αλλά ο συνδυασμός {ΑΦΜ, ΟΝΟΜΑ} δεν είναι.

36 ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Γνωρίσματα (2)
ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Γνωρίσματα (2) Το ΚΥΡΙΟ ΚΛΕΙΔΙ (primary key) είναι ένα από τα υποψήφια κλειδιά που ορίζεται σαν αναγνωριστής (identifier) για τον τύπο οντοτήτων / συσχετίσεων Ενδεικτικά, ΑΦΜ είναι μια καλή επιλογή Κυρίου Κλειδιού στον τύπο οντοτήτων ΥΠΑΛΛΗΛΟΣ. Ένα ΕΞΩΤΕΡΙΚΟ ΚΛΕΙΔΙ (foreign key) είναι ένα σύνολο ενός ή περισσοτέρων γνωρισμάτων ενός τύπου οντοτήτων (ή συσχετίσεων) που αντιστοιχεί σε ένα ΚΥΡΙΟ ΚΛΕΙΔΙ that για κάποιον άλλο τύπο οντοτήτων (ή συσχετίσεων). Ενδεικτικά, για τον τύπο συσχετίσεων ΕΡΓΑΖΕΤΑΙ, το γνώρισμα ΑΦΜ είναι Εξωτερικό Κλειδί (είναι Κύριο Κλειδί στον ΥΠΑΛΛΗΛΟ)..

37 Το E-R Μοντέλο: Άλλες Έννοιες
Αδύναμοι Τύποι Οντοτήτων (ή Εξαρτώμενοι) Ένας τύπος οντοτήτων ΧΩΡΙΣ Κλειδί Ενδεικτικά, ο τύπος DEPENDENT (έχει μόνο σημασία σε συσχέτιση με τον συγγενή του που δουλεύει στην Εταιρεία) Η Συσχέτιση ΓΕΝΙΚΕΥΣΗ (is-A) Η θεώρηση ενός συνόλου τύπων οντοτήτων ως ένα γενικευμένο (generic) τύπο PAINTING is-A ART-OBJECT, DRAWING is-A ART-OBJECT Το βασικό πλεονέκτημα αυτού είναι η ιδιότητα της ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑΣ (Inheritance) των Γνωρισμάτων Ενδεικτικά, κρατάμε Γνωρίσματα που είναι κοινά για όλα τα ART-OBJECT και δεν χρειάζεται να τα επαναλάβουμε για τα PAINTINGS και DRAWINGS – κληρονομούνται.

38 Το E-R Μοντέλο: Γραφικός Συμβολισμός
. ENTITY SET WEAK RELATIONSHIP SET ATTRIBUTE PRIMARY KEY is_A GENERALIZATION E2 R1 E1 Total PARTICIPATION of E1 in R1 E1 E2 R1 1 N Cardinality ratio 1:N for E2:E1 in R1

39 Περιγραφή της ΕΤΑΙΡΕΙΑΣ στο E-R (1)
. 1 N WORKS-FOR DEPARTMENT EMPLOYEE 1 1 1 MANAGES CONTROLS 1 N N 1 N M WORKS-ON SUPERVISION Dependents-of PROJECT supervisor supervisee N DEPENDENT

40 Περιγραφή της ΕΤΑΙΡΕΙΑΣ στο E-R (2)
ΓΝΩΡΙΣΜΑΤΑ σε Οντότητες και Συσχετίσεις EMPLOYEE -- SSN, Name, BirthDate, Sex, Address, Salary DEPARTMENT -- Number, Name,Locations, NoOfEmployees PROJECT -- Number, Name, Location DEPENDENT -- Name, Sex, BirthDate, Relationship WORKS-ON -- HoursPerWeek MANAGES -- StartDate

41 Σχεσιακό Μοντέλο - Άλγεβρα

42 Το Σχεσιακό Μοντέλο Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας (table) που λέγεται σχέση (relation) Γνωρίσματα (attributes, fields) υπάλληλος AFM Name Address Salary Nikos Papadopoulos Pentelis Maria Xilomenou Dimokratias Giorgos Papas Trikalwn

43 Σχήμα Σχέσης (Relational Schema)
Σχήμα σχέσης R που δηλώνεται R(A1, A2, …,An) αποτελείται από ένα όνομα σχέσης και μια λίστα από γνωρίσματα. Παράδειγμα - Ταινία(τίτλος, χρόνος, διάρκεια, είδος) Παράδειγμα - Υπάλληλος(ΑΦΜ, Όνομα, Επίθετο, Διευθυνση, Μισθός) Βαθμός: το πλήθος των γνωρισμάτων

44 Πλειάδες (Tuples) Πλειάδες Οι γραμμές της σχέσης ονομάζονται πλειάδες.
τίτλος χρόνος διάρκεια είδος Star Wars 1997 124 έγχρωμη Mighty Ducks 1991 104 έγχρωμη Wayne’s World 1992 95 έγχρωμη Παράδειγμα: (Star Wars, 1997, 124, έγχρωμη) (Wayne’s World, 1992, 95, έγχρωμη)

45 Πλειάδες, σχέση πρόθεση (intension)
Σχήμα σχέσης R που δηλώνεται R(A1, A2, …,An) αποτελείται από ένα όνομα σχέσης και μια λίστα από γνωρίσματα. έκταση ή στιγμιότυπο (extension) Μία σχέση r ή r(R) (ή ένα στιγμιότυπο r του σχήματος σχέσης R) είναι ένα σύνολο από πλειάδες.

46 Ονοματολογία Πίνακας (table)  Σχέση (relation)
Στήλη (column, field)  Γνώρισμα ή Χαρακτηριστικό (attribute) Γραμμή, εγγραφή (row, record)  πλειάδα (tuple)

47 Πεδίο Ορισμού Πεδίο Ορισμού
Κάθε γνώρισμα Ai παίρνει τιμές από κάποιο σύνολο D οποίο λέγεται πεδίο ορισμού (domain) του Ai και συμβολίζεται με dom(Ai). (το γνώρισμα είναι το όνομα ενός ρόλου που παίζει κάποιο πεδίο ορισμού D στο σχήμα σχέσης R) Πεδίο ορισμού D: ένα σύνολο από ατομικές τιμές (παράδειγμα: ακέραιοι, συμβολοσειρές - όχι εγγραφές, πίνακες, λίστες) Κάθε στοιχείο μιας πλειάδας ατομικό.

48 Το Σχεσιακό Μοντέλο Κάθε πλειάδα είναι μια διατεταγμένη λίστα από τιμές <v1, v2, …, vn> όπου κάθε τιμή vi είναι ένα στοιχείο του dom(Ai) ή η ειδική τιμή null Κάθε σχέση είναι ένα υποσύνολο του καρτεσιανού γινομένου: r(R)  (dom(A1) X dom(A2) X … X dom(An)) Παρατηρήσεις Διάταξη των πλειάδων σε μια σχέση Διάταξη των γνωρισμάτων στο σχήμα σχέσης

49 Το Σχεσιακό Μοντέλο Συμβολισμός Σχήμα σχέσης βαθμού n R(A1, A2, …, An)
Πλειάδα t της σχέσης r(R) <v1, v2, …, vn> αναφορά στις συνιστώσες τιμές t[Ai] t[Au, Aw, …, Az] όνομα γνωρίσματος t.Ai Q, R, S ονόματα σχέσεων t, u, v πλειάδες

50 Σχήμα Σχεσιακής Βάσης Δεδομένων
Σχήμα μιας σχεσιακής βάσης δεδομένων είναι ένα σύνολο από σχήματα σχέσεων Παράδειγμα - Ταινία(τίτλος, χρόνος, διάρκεια, είδος) Ηθοποιός(όνομα, διεύθυνση, έτος-γέννησης) Παίζει(όνομα_ηθοποιοιού, τίτλος, χρόνος) Παράδειγμα – Υπάλληλος(ΑΦΜ, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)

51 Περιορισμός Κλειδιού (Key constraint)
Μια σχέση ορίζεται ως ένα σύνολο πλειάδων, άρα όλες οι πλειάδες πρέπει να είναι διαφορετικές. Ένα υποσύνολο γνωρισμάτων SK του σχήματος σχέσης R τέτοιο ώστε σε κάθε στιγμιότυπο r(R) κανένα ζευγάρι πλειάδων δε μπορεί να έχει τον ίδιο συνδυασμό τιμών για τα γνωρίσματα αυτά, δηλαδή για δυο διαφορετικές πλειάδες t1 και t2, t1[SK]  t2[SΚ] λέγεται υπερκλειδί ή εμπλουτισμένο κλειδί (superkey)

52 Περιορισμός Κλειδιού SK υπερκλειδί - υποψήφιο κλειδί - (πρωτεύον) κλειδί υποψήφιο κλειδί Κ (candidate key) : υπερκλειδί με την ιδιότητα ότι αν αφαιρεθεί ένα οποιοδήποτε γνώρισμα Α από το Κ, το Κ’ που προκύπτει δεν είναι υπερκλειδί Κάθε σχέση τουλάχιστον ένα υπερκλειδί, ποιο; Διαλέγουμε ένα υποψήφιο κλειδί να είναι το πρωτεύον (primary) Συμβολισμός: υπογραμμίζουμε τα γνωρίσματα του πρωτεύοντος κλειδιού

53 Περιορισμός Κλειδιού Παράδειγμα – Υπάλληλος(ΑΦΜ, κωδικός, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)

54 Περιορισμός Κλειδιού Παράδειγμα – Υπάλληλος(ΑΦΜ, κωδικός, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)

55 Περιορισμός Αναφορικής Ακεραιότητας (Referential Integrity)
Ορίζεται μεταξύ δύο σχημάτων σχέσεων όταν μια πλειάδα μιας σχέσης αναφέρεται σε μια άλλη αυτή η άλλη πρέπει να υπάρχει Παράδειγμα – Υπάλληλος(ΑΦΜ, κωδικός, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)

56 Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό
Εννοιολογική σχεδίαση (Ο-Σ μοντέλο) απεικόνιση (mapping) Λογική σχεδίαση (Σχεσιακό μοντέλο) Αυτή η απεικόνιση πρέπει να γίνει σύμφωνα με κάποιους κανόνες.

57 Παράδειγμα Works-in Employee Department Policy Assigned Dependent
FirstName LastName DeptCode SSN Name Works-in Employee Department Policy Assigned Location Dependent Hours Name Location Code Project Description

58 Ισχυροί Τύποι Οντοτήτων
Οντότητες 1. Ισχυροί τύποι οντοτήτων με μονότιμα γνωρίσματα Για κάθε (ισχυρό) τύπο οντοτήτων Ε δημιουργούμε ένα σχήμα σχέσης R με τα ίδια γνωρίσματα - ένα για κάθε απλό γνώρισμα του Ε. Αν το Ε έχει σύνθετα γνωρίσματα, στο σχεσιακό σχήμα R έχουμε ένα γνώρισμα για κάθε απλό γνώρισμα που απαρτίζει το σύνθετο. Παράδειγμα: Employee(SSN,Firstname,Lastname)

59 Ασθενείς Τύποι Οντοτήτων
2. Ασθενείς τύποι οντοτήτων με (μονότιμα) γνωρίσματα Για κάθε ασθενή τύπο οντοτήτων Α που εξαρτάται από τον ισχυρό τύπο οντοτήτων Β (προσδιορίζον ιδιοκτήτης) δημιουργούμε ένα σχήμα σχέσης R με γνωρίσματα: . τα γνωρίσματα του μερικού κλειδιού του Α, και . τα γνωρίσματα του πρωτεύοντος κλειδιού του Β ξένο κλειδί παράδειγμα: Dependent(name, SSN)

60 Συσχετίσεις Συσχετίσεις
Γενικά, για κάθε συσχέτιση R μεταξύ n τύπων οντοτήτων που αντιστοιχούν στις σχέσεις S1, S2, … , Sn δημιουργούμε μια νέα σχέση R με γνωρίσματα: τα γνωρίσματα (ξένα κλειδιά) του πρωτεύοντος κλειδιού κάθε συμμετέχουσας σχέσης Si τα γνωρίσματα της R (αν υπάρχουν) Θα δούμε κάποιες ειδικές περιπτώσεις

61 Συσχετίσεις 1-1 1. 1-1 δυαδική (μη ασθενής) συσχέτιση
δυαδική (μη ασθενής) συσχέτιση Για κάθε 1-1 δυαδική συσχέτιση R μεταξύ δύο τύπων οντοτήτων του διαγράμματος Ο/Σ που αντιστοιχούν στις σχέσεις Τ και S 1. επιλογή μιας εκ των Τ και S, έστω της S 2. το πρωτεύον κλειδί της S γίνεται ξένο κλειδί της Τ Προτιμάμε τη σχέση που αντιστοιχεί σε τύπο οντοτήτων με ολική συμμετοχή, γιατί; Τα γνωρίσματα της R;

62 Συσχετίσεις 1-Ν 2. 1-Ν δυαδική συσχέτιση
Ν δυαδική συσχέτιση Για κάθε 1-Ν δυαδική συσχέτιση R μεταξύ δύο τύπων οντοτήτων του διαγράμματος Ο/Σ που αντιστοιχούν στις σχέσεις Τ και S 1. έστω T από την πλευρά 1 2. το πρωτεύον κλειδί της T γίνεται ξένο κλειδί της S Παράδειγμα: Employee(SSN,Firstname,Lastname, DeptCode) ξένο κλειδί

63 Γνωρίσματα Σύνθετα Ένα γνώρισμα για κάθε απλό γνώρισμα που απαρτίζει το σύνθετο. Πλειότιμα Για κάθε πλειότιμο γνώρισμα Α, κατασκευάζουμε μια σχέση R με γνωρίσματα: το Α (ή τα γνωρίσματα του Α αν το Α είναι σύνθετο) και τα γνωρίσματα (ξένο κλειδί) του πρωτεύοντος κλειδιού της σχέσης που παριστάνει τον τύπο οντοτήτων η συσχετίσεων του οποίου γνώρισμα είναι το Α Παράδειγμα: DeptLocations (DeptCode, Location)

64 Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό
Ανακεφαλαίωση Τύπος οντοτήτων Σχέση (οντοτήτων) Τύπος συσχέτισης 1:1 ή 1:Ν Ξένο κλειδί ή Σχέση (συσχέτισης) Τύπος συσχέτισης Μ:Ν Σχέση (συσχέτισης) με 2 ξένα κλειδιά (και γενικά) n-αδικός τύπος συσχέτισης Σχέση (συσχέτισης) με n ξένα κλειδιά Απλό γνώρισμα Γνώρισμα Σύνθετο γνώρισμα Σύνολο από γνωρίσματα Πλειότιμο γνώρισμα Σχέση και ξένο κλειδί

65 Ερωτήματα και Άλγεβρα Προγράμματα που απαντούν σε ερωτήσεις για τον παρόν στιγμιότυπο της βάσης δεδομένων (quering) Το σχεσιακό μοντέλο έχει ένα σύνολο από πράξεις -> Σχεσιακή Άλγεβρα Τι είναι μία άλγεβρα ? Ένα κλειστό σύνολο Α ως προς ένα σύνολο πράξεων, με άλλα λόγια το αποτέλεσμα της πράξης είναι στοιχείο του Α. Πράξεις επί πινάκων που δίνουν πίνακες.

66 Σχεσιακή Άλγεβρα Γλώσσες Ερωτήσεων (Query Languages): Επιτρέπουν τον χειρισμό και την εύρεση πληροφορίας από μια βάση δεδομένων Το σχεσιακό μοντέλο υποστηρίζει απλές και ισχυρές γλώσσες ερωτήσεων (σε αντίθεση με το μοντέλο Ο/Σ)

67 Σχεσιακή Άλγεβρα Γλώσσες Ερωτήσεων != Γλώσσες Προγραμματισμού!
Δεν αναμένεται να είναι “Turing complete”. Δεν αναμένεται να χρησιμοποιηθούν για ”δύσκολους υπολογισμούς”. Υποστηρίζουν εύκολη και αποδοτική προσπέλαση σε μεγάλα σύνολα δεδομένων

68 Σχεσιακή Άλγεβρα Δύο μαθηματικές γλώσσες ερωτήσεων αποτελούν το θεωρητικό υπόβαθρο για τις πραγματικές γλώσσες ερωτήσεων (π.χ. SQL) και για την υλοποίησή τους Σχεσιακή Άλγεβρα: Ποιο λειτουργική “operational” (database byte-code!) Σχεσιακός Λογισμός (calculus): Επιτρέπει στους χρήστες να περιγράψουν τι θέλουν αλλά όχι πώς να το υπολογίσουν (δηλωτική)

69 Σχεσιακή Άλγεβρα μετάφραση optimization SQL Σχεσιακή Άλγεβρα Πλάνο Εκτέλεσης Σχεσιακή άλγεβρα: ένας απλός τρόπος δημιουργίας νέων σχέσεων από παλιές. Ένα σύνολο από πράξεις που όταν εφαρμοστούν σε σχέσεις μας δίνουν νέες σχέσεις

70 Σχεσιακή Άλγεβρα Οι πράξεις τις σχεσιακής άλγεβρας:
1. Πράξεις που αφαιρούν κομμάτια από μια σχέση είτε επιλέγοντας γραμμές είτε προβάλλοντας στήλες 2. Οι συνηθισμένες πράξεις συνόλου - ένωση, τομή, διαφορά 3. Πράξεις που συνδυάζουν πλειάδες από δύο σχέσεις 4. Μετονομασία γνωρισμάτων

71 Η Πράξη της Επιλογής Η πράξη της επιλογής (selection)
Επιλογή ενός υποσυνόλου των πλειάδων (γραμμών) μιας σχέσης (πίνακα) που ικανοποιεί μια συνθήκη επιλογής θ σ<συνθήκη επιλογής> (<όνομα σχέσης>)

72 Η Πράξη της Επιλογής σθ (<όνομα πίνακα>) συνθήκη θ
Επιλογή ενός υποσυνόλου των πλειάδων μιας σχέσης που ικανοποιεί μια συνθήκη επιλογής θ σθ (<όνομα πίνακα>) <όνομα γνωρίσματος> <τελεστής σύγκρισης> <όνομα γνωρίσματος> ή <σταθερή τιμή από το πεδίο ορισμού του γνωρίσματος> προτάσεις της μορφής συνθήκη θ =, >, <, ,  ,  συνδυασμένες με AND, OR, NOT

73 Η Πράξη της Επιλογής σ διάρκεια > 100 (Ταινία) Παραδείγματα
τίτλος χρόνος διάρκεια είδος Star Wars έγχρωμη Mighty Ducks έγχρωμη Wayne’s World έγχρωμη 1. Ταινίες με διάρκεια μεγαλύτερη των 100 λεπτών) σ διάρκεια > 100 (Ταινία) τίτλος χρόνος διάρκεια είδος Star Wars έγχρωμη Mighty Ducks έγχρωμη

74 Η Πράξη της Επιλογής σ διάρκεια > 100 AND χρόνος > 1995 (Ταινία)
τίτλος χρόνος διάρκεια είδος Star Wars έγχρωμη Mighty Ducks έγχρωμη Wayne’s World έγχρωμη 2. Ταινίες με διάρκεια μεγαλύτερη των 100 λεπτών που γυρίστηκαν μετά το 1995 σ διάρκεια > 100 AND χρόνος > 1995 (Ταινία) τίτλος χρόνος διάρκεια είδος Star Wars έγχρωμη

75 Η Πράξη της Επιλογής Η συνθήκη επιλογής εφαρμόζεται ανεξάρτητα σε κάθε πλειάδα (γραμμή) Ο τελεστής είναι μοναδιαίος (unary) Ο βαθμός της σχέσης που προκύπτει είναι ίδιος με τον βαθμό της αρχικής R Πλήθος γραμμών μικρότερο ή ίσο με την αρχική σχέση: το ποσοστό που επιλέγονται ονομάζεται επιλεκτικότητα (selectivity)

76 Η Πράξη της Προβολής Η πράξη της προβολής (projectιοn)
Επιλογή συγκεκριμένων στηλών (γνωρισμάτων) π<λίστα γνωρισμάτων> (<όνομα σχέσης>)

77 Η Πράξη της Προβολής Παραδείγματα τίτλος χρόνος διάρκεια είδος
τίτλος χρόνος διάρκεια είδος Star Wars έγχρωμη Mighty Ducks έγχρωμη Wayne’s World έγχρωμη

78 Η Πράξη της Προβολής π τίτλος, χρόνος, διάρκεια (Ταινία)
1. Τίτλος, χρόνος, διάρκεια των ταινιών π τίτλος, χρόνος, διάρκεια (Ταινία) τίτλος χρόνος διάρκεια Star Wars Mighty Ducks Wayne’s World

79 Η Πράξη της Προβολής π είδος (Ταινία)
2. Είδος ταινιών π είδος (Ταινία) είδος έγχρωμη Προσοχή: απαλοιφή διπλότιμων (duplicate elimination)

80 Η Πράξη της Προβολής Τα γνωρίσματα έχουν την ίδια διάταξη
Ο τελεστής είναι μοναδιαίος Ο βαθμός της σχέσης είναι ίσος με τον αριθμό γνωρισμάτων στη <λίστα γνωρισμάτων> Πλήθος πλειάδων μικρότερο ή ίσο (πότε;) με την αρχική σχέση

81 Σχεσιακή Άλγεβρα - Συνθετικότητα
Παράδειγμα (ερώτημα με πράξεις σε σειρά - σημαντικό) Διάρκειες μεγαλύτερες των 100 λεπτών π διάρκεια (σ διάρκεια > 100 (Ταινία)) διάρκεια 124 104

82 Πράξεις συνόλου Ένωση () - union Τομή () - intersection
Πράξεις Συνόλου Ένωση () - union Τομή () - intersection Διαφορά (-) - difference Πράξεις συνόλου Συμβατότητα ως προς την ένωση Δύo σχέσεις R(A1, A2, …, An) και S(B1, B2, …, Bn) είναι συμβατές ως προς την ένωση όταν 1. Έχουν τον ίδιο βαθμό n, και 2.  i, dom(Ai) = dom(Bi)

83 Ανάθεση Ανάθεση (Assignment) όνομα στην ενδιάμεση σχέση R  Παράδειγμα
ΜΕΓΑΛΗΣ_ΔΙΑΡΚΕΙΑΣ  σ διάρκεια > 100 (Ταινία)

84 Μετονομασία R(λίστα με νέα ονόματα)  μετονομασία γνωρισμάτων
Παράδειγμα ΜΕΓΑΛΗΣ_ΔΙΑΡΚΕΙΑΣ (όνομα ταινίας, έτος παραγωγής, διάρκεια, είδος)  σ διάρκεια > 100 (Ταινία) όνομα ταινίας έτος παραγωγής διάρκεια είδος Star Wars έγχρωμη Mighty Ducks έγχρωμη

85 Καρτεσιανό Γινόμενο Καρτεσιανό Γινόμενο (cartesian product)
(ή χιαστί γινόμενο (cross product) ή χιαστί συζεύξη (cross join) R(A1, A2, …, An) x S(B1, B2, …, Bm) αποτέλεσμα η σχέση Q: Q(A1, A2, …, An, B1, B2, …, Bm) n + m γνωρίσματα nR * n S πλειάδες τι γίνεται αν κάποια γνωρίσματα έχουν ίδια ονόματα ?

86 Καρτεσιανό Γινόμενο R x S A R.B S.B C D 1 2 2 5 6 1 2 4 7 8
R S Α Β B C D

87 Παράδειγμα Παράδειγμα – Υπάλληλος(ΑΦΜ, κωδικός, όνομα, διευθυνση, μισθος) Project (κωδικός_έργου, περιγραφή, τοποθεσία) Συμμετέχει(ΑΦΜ, κωδικός_έργου, ώρες)

88 Καρτεσιανό Γινόμενο Παράδειγμα
Για κάθε υπάλληλο δείξε το όνομα του και την περιγραφή κάθε έργου στο οποίο συμμετέχει. π ονομα, περιγραφη (σκωδικός_έργου = Project.κωδικός_έργου (σ Υπάλληλος.ΑΦΜ = Συμμετέχει.ΑΦΜ (Υπάλληλος x Συμμετέχει) x Project)) Άλλη έκφραση που να περιγράφει το ίδιο ερώτημα? Γιατί?

89 Σύζευξη (Join) Θ-Σύζευξη (θ-join) συνδυασμός σχετιζόμενων πλειάδων
R θ S (  σ θ (R x S) ) Συνθήκη σύζευξης θ Προτάσεις της μορφής =, >, <, ,  ,  Ai <τελεστής σύγκρισης> Bj όπου Ai γνώρισμα της R, Bj γνώρισμα της S, και dom(Ai) = dom(Bj) συνδυασμένες με AND

90 Σύζευξη (Join) το αποτέλεσμα είναι οι συνδυασμοί πλειάδων που ικανοποιούν τη συνθήκη η συνθήκη αποτιμάται για κάθε συνδυασμό αποτέλεσμα σχέση Q με n + m γνωρίσματα πλειάδες με τιμή null σε γνώρισμα συνένωσης δεν εμφανίζονται στο αποτέλεσμα γιατί μια καινούργια πράξη? πιο αποτελεσματικό implementation + σύνηθες

91 Σύζευξη (Join) U A<D V U V A U.B U.C V.B V.C D 1 2 3 2 3 4
Α Β C B C D U A<D AND U.B  V.B V ???

92 Συναθροιστικές Συναρτήσεις (Aggregate functions)
Χρήσιμη η δυνατότητα της συνάθροισης: συνδυασμός των γραμμών μιας σχέσης για τον υπολογισμό μιας συναθροιστικής τιμής (π.χ. min, max, sum, count, avg) Παραδείγματα: πόσοι ηθοποιοί παίζουν σε μια ταινία, ποιος ηθοποιός πήρε το μεγαλύτερο μισθό, κ.λ.π. Παραδείγματα: πόσοι δουλεύουν σε κάποιο έργο, ποιός έχει το μεγαλύτερο μισθό, κ.λ.π. Η βάση για ερωτήματα στήριξης αποφάσεων (decision support)

93 Συναθροιστικές Συναρτήσεις
συναρτήσεις που παίρνουν ως παράμετρο μια συλλογή (όχι σύνολο) από τιμές συνήθεις συναρτήσεις: SUM, AVERAGE, MAX, MIN, COUNT αποτέλεσμα μια σχέση (πίνακας) και όχι μια τιμή π<λίστα συναρτήσεων> (<όνομα σχέσης>) ζεύγη <συνάρτηση γνώρισμα> - π.χ. max(μισθός)

94 Συναθροιστικές Συναρτήσεις
Παράδειγμα: μέση διάρκεια ταινιών AVERAGE_διάρκεια 91 π AVERAGE(διάρκεια)(Ταινία) Παράδειγμα: παλιότερη και πιο πρόσφατη έγχρωμη ταινία π ΜΙΝ (έτος), ΜΑΧ (έτος) ( σ είδος = έγχρωμη (Ταινία)) ΜΙΝ_έτος MAX_έτος

95 Συναθροιστικές Συναρτήσεις
Ομαδοποίηση (Grouping) <γνωρίσματα ομαδοποίησης> F <λίστα συναρτήσεων> (<όνομα σχέσης>) Παράδειγμα: πόσοι ηθοποιοί ανά ταινία πόσα έργα ανά υπάλληλο

96 Συναθροιστικές Συναρτήσεις
Παράδειγμα: αριθμός ηθοποιών ανά ταινία Τίτλος, έτος F COUNT Όνομα-Ηθοποιού (Παίζει) Τίτλος Έτος COUNT_Όνομα Ηθοποιού Sixth Sense Run Lola Run Eyes Wide Shut Ποιο θα ήταν το αποτέλεσμα αν δεν υπήρχαν τα γνωρίσματα ομαδοποίησης;

97 Εξωτερική Σύζευξη (Outer Join)
Όταν θέλουμε να κρατήσουμε στο αποτέλεσμα όλες τις πλειάδες - και αυτές που δεν ταιριάζουν) είτε της σχέσης στα αριστερά (αριστερή – left - εξωτερική συνένωση) είτε της σχέσης στα δεξιά (δεξιά – right - εξωτερική συνένωση) R * S R S Α C B null Α C B 3 null 9 Α C Α B Α C B

98 Υπάλληλος <- Υπάλληλος – σμισθός > 2500 (Υπάλληλος)
Αλλαγές στη Β.Δ. Διαγραφή (Deletion) Διαγραφή ολόκληρων γραμμών Επιτυγχάνεται μέσω της πράξης της ανάθεσης και διαφοράς: R <- R - E R το όνομα μίας σχέσης, Ε μια έκφραση σε σχεσιακή άλγεβρα Παράδειγμα: Υπάλληλος <- Υπάλληλος – σμισθός > 2500 (Υπάλληλος)

99 R <- R U {“219099999”, “Damianos”, …}
Αλλαγές στη Β.Δ. Εισαγωγή (Insertion) Επιτυγχάνεται μέσω της πράξης της ανάθεσης και ένωσης: R <- R U E ή R <- R U {“ ”, “Damianos”, …} R το όνομα μίας σχέσης, Ε μια έκφραση σε σχεσιακή άλγεβρα

100 δμισθός <- μισθός*1.05 (Υπάλληλος)
Αλλαγές στη Β.Δ. Ενημέρωση (Updating) Επιτυγχάνεται μέσω μίας νέας πράξης, που συμβολίζεται με δ. δ<γνώρισμα> <- Ε (<όνομα σχέσης>), όπου Ε μία έκφραση στο πεδίο τιμών του γνωρίσματος. Παράδειγμα: δμισθός <- μισθός*1.05 (Υπάλληλος)

101 Σχεσιακός Λογισμός Στη σχεσιακή άλγεβρα έχουμε μια ακολουθία πράξεων ενώ στον σχεσιακό λογισμό έχουμε δηλωτικές εκφράσεις (μη διαδικαστικός τρόπος) – βασισμένο στη μαθηματική λογική (First Order Predicate Calculus)

102 Σχεσιακός Λογισμός Expressivity: Το σύνολο των ερωτημάτων που μπορεί να εκφράσει μια γλώσσα. Σχεσιακή άλγεβρα = Σχεσιακό λογισμό όποιo ερώτημα μπορεί να προσδιοριστεί σε σχεσιακή άλγεβρα μπορεί και σε σχεσιακό λογισμό και αντιστρόφως σχεσιακά πλήρης γλώσσα

103 Σχεσιακός Λογισμός Ορισμός ενός συνόλου από τιμές μέσω μιας λογικής συνθήκης. Π.χ. μαθηματικά: {x : x (0,1) και x < ½} Δυο προσαρμογές (από που παίρνουν τιμές οι μεταβλητές): -- σχεσιακός λογισμός πλειάδων (tuple relational calc.) -- σχεσιακός λογισμός πεδίου (domain relational calc.)

104 SQL

105 Η γλώσσα SQL Η “standard” γλώσσα για σχεσιακές βάσεις δεδομένων.
Aρχικά Sequel στην IBM ως μέρος του System R, τώρα SQL (Stuctured Query Language) SQL--89, SQL--92, SQL-99 Είναι γλώσσα δηλωτική (declarative) – ορίζουμε το ΤΙ, όχι το ΠΩΣ

106 Η γλώσσα SQL Θέματα SQL:
Γλώσσα Ορισμού Δεδομένων (Data Definition Lang) Γλώσσα Χειρισμού Δεδομένων (Data Manipulation Lang) Ορισμό Όψεων (Views) Ακεραιότητα (Integrity Constraints) Διαδικαστική SQL - Λογικοί Δρομείς (Cursors) Stored Procedures Triggers (Εναύσματα) Ενσωματωμένη Γλώσσα SQL (Embedded SQL)

107 Η γλώσσα SQL SQL αποτελείται από:
DDL (Data Definition Language) - ορισμός, δημιουργία, τροποποίηση και διαγραφή σχήματος. DML (Data Manipulation Language) - ορισμός, δημιουργία, τροποποίηση, διαγραφή και επιλογή δεδομένων (γλώσσα αιτημάτων – query language) . Προδιαγραφές ασφάλειας - χρήστες και δικαιώματα.

108 Γλώσσα Χειρισμού Δεδομένων
Θέματα: Βασική δομή (select-from-where) Συναθροιστικές συναρτήσεις (aggregation) Εμφωλευμένα υποαιτήματα (nested subqueries)

109 Βασική Δομή Βασική Δομή select Α1, Α2, .., Αn from R1, R2, … Rm
Μια χαρακτηριστική ερώτηση σε SQL έχει την εξής μορφή: ονόματα γνωρισμάτων select Α1, Α2, .., Αn from R1, R2, … Rm where P ονόματα σχέσεων συνθήκη Ισοδύναμο του: π A1, A2, .., An (σ P (R1 x R2 x … Rm))

110 Βασική Δομή select Α1, Α2, .., Αn from R1, R2, … Rm where P
π A1, A2, .., An (σ P (R1 x R2 x … Rm)) select αντιστοιχεί στην πράξη της προβολής (projection) της σχεσιακής άλγεβρας (προσοχή: όχι στην πράξη selection). Ποια γνωρίσματα θέλουμε να υπάρχουν στο τελικό αποτέλεσμα της ερώτησης.

111 Βασική Δομή select Α1, Α2, .., Αn from R1, R2, … Rm where P
π A1, A2, .., An (σ P (R1 x R2 x … Rm)) from αντιστοιχεί στην πράξη του καρτεσιανού γινομένου της σχεσιακής άλγεβρας. Ποιες σχέσεις θα χρησιμοποιηθούν για τον υπολογισμό του αποτελέσματος.

112 Βασική Δομή select Α1, Α2, .., Αn from R1, R2, … Rm where P
π A1, A2, .., An (σ P (R1 x R2 x … Rm)) where αντιστοιχεί στη συνθήκη της πράξης της επιλογής (selection) στη σχεσιακή άλγεβρα. Το κατηγόρημα (predicate) P έχει γνωρίσματα των σχέσεων που εμφανίζονται στο from.

113 Βασική Δομή Όταν δεν υπάρχει το where, το P θεωρείται ότι ισχύει (true). ΠΡΟΣΟΧΗ: Δε γίνεται απαλοιφή των διπλών εμφανίσεων. Με άλλα λόγια δεν έχει συνολοθεωρητική ερμηνεία, όπως η σχεσιακή άλγεβρα.

114 Παράδειγμα Works-in Employee Department Assigned Project Code SSN Name
Sex Employee Department Salary MgrSSN Budget Assigned Hours Location Id Project Description

115 Παράδειγμα Σχεσιακή σχεδίαση:
Employee (SSN, Name, Salary, Sex, DeptCode) Dept (Code, Name, Budget, MgrSSN) Assigned (SSN, Id, Hours) Project (Id, Description, Location)

116 Select Παράδειγμα: δείξε όλα τα στοιχεία των υπαλλήλων
select SSN, Name, Sex, Salary, DeptCode from Employee

117 Select Παράδειγμα: δείξε τους μισθούς των υπαλλήλων select Salary
from Employee Η SQL επιτρέπει πολλαπλές εμφανίσεις της ίδιας πλειάδας σε μια σχέση (π.χ. ίδιοι μισθοί). Μια σχέση στην SQL είναι ένα πολυσύνολο (multiset) ή θύλακας (bag) => δεν υπάρχει απαλοιφή διπλοτιμών. Αυτό είναι πολύ χρήσιμο στις περισσότερες περιπτώσεις (π.χ. ?)

118 Select Απαλοιφή διπλών εμφανίσεων
Για να έχουμε απαλοιφή διπλοτιμών (duplicate elimination) θα πρέπει να το ζητήσουμε χρησιμοποιώντας το distinct. Απαλοιφή διπλών εμφανίσεων select distinct Salary from Employee

119 Select Επιλογή όλων των γνωρισμάτων select * from Employee
select SSN, Name, Sex, Salary, DeptCode from Employee

120 Select Αριθμητικές πράξεις (+, -, *, /) ή εφαρμογή συναρτήσεων (π.χ. date ή string functions - αργότερα) ανάμεσα σε σταθερές ή γνωρίσματα πλειάδων select Name, Salary * from Employee

121 Where Where Παράδειγμα: Το όνομα και το μισθό όλων των γυναικών στο τμήμα 23 select Name, Salary from Employee where Sex = ‘F’ and DeptCode = 23

122 Where συνθήκη του where Λογικοί τελεστές: and, or, not
Τελεστές σύγκρισης: <, <=, >, >=, =, <>, between, not between (ανάμεσα σε αριθμητικές εκφράσεις, συμβολο-σειρές [strings], και ειδικούς τύπους).

123 From From Παράδειγμα: Δείξε το SSN των υπαλλήλων μαζί με το SSN του διευθυντή του τμήματος στο οποίο δουλεύει select SSN, MgrSSN from Employee, Dept where DeptCode = Code ΟΜΩΣ: Αν θέλαμε και το όνομα του τμήματος στο οποίο δουλεύει?

124 From From Παράδειγμα: Δείξε το SSN των υπαλλήλων μαζί με το όνομα του τμήματος στο οποίο δουλεύει select SSN, Name from Employee, Dept where DeptCode = Code Ποιό Name ??? Από ποιόν πίνακα ???

125 Βασική Δομή Όταν το ίδιο γνώρισμα εμφανίζεται στο σχήμα περισσότερων από μια σχέσεων, τότε διάκριση βάση του συμβολισμού: <όνομα-σχέσης>.<όνομα-γνωρίσματος> select SSN, Dept.Name from Employee, Dept where DeptCode = Code

126 From From Παράδειγμα: Δείξε το όνομα των υπαλλήλων που δουλεύουν σε κάποιο project στο ‘Μαρούσι’ select Name from Employee, Assigned, Project where Employee.SSN = Assigned.SSN and Project.Id=Assigned.Id and Project.Location=‘Μαρούσι’

127 Πράξεις με Συμβολοσειρές (Strings)
Η πιο συνηθισμένη πράξη είναι ταίριασμα προτύπων (pattern matching): % ταιριάζει οποιαδήποτε συμβολοσειρά _ ταιριάζει οποιοδήποτε χαρακτήρα Γίνεται διάκριση ανάμεσα σε κεφαλαία και μικρά Σύγκριση χρησιμοποιώντας το like, not like

128 Πράξεις με Συμβολοσειρές (Strings)
Παράδειγμα: Δείξε όλα τα IDs των projects που έχουν στην περιγραφή τους το string «Αττική οδός» select ID from Project where Description like “%Αττική οδός%”

129 Διάταξη των Πλειάδων Διάταξη των Γραμμών του αποτελέσματος
Χρήση του order by ώστε οι πλειάδες στο αποτέλεσμα να είναι ταξινομημένες με βάση τo αντίστοιχο γνώρισμα select Name, Salary from Employee where DeptCode = 311 order by Salary

130 Διάταξη των Πλειάδων Default: αύξουσα διάταξη, αλλά και άμεσα χρησιμοποιώντας το asc (αύξουσα) ή το desc (φθίνουσα). Επίσης, ταξινόμηση με βάση πολλά γνωρίσματα. Παράδειγμα: select * from Employee order by DeptCode asc, Salary desc Η ταξινόμηση είναι δαπανηρή λειτουργία.

131 Αλλαγή Ονόματος Τα ονόματα των γνωρισμάτων στο αποτέλεσμα είναι αυτά των σχέσεων στην ερώτηση. Δυνατότητα αλλαγής του ονόματος τόσο μιας σχέσης όσο και ενός γνωρίσματος: <παλιό-όνομα> as <νέο-όνομα> To as μπορεί να εμφανίζεται στο select ή στο from (aliases)

132 Αλλαγή Ονόματος Χρήσιμο,
(α) όταν έχουμε αριθμητικές εκφράσεις στο select και δεν έχουν όνομα, (β) όταν θέλουμε να αλλάξουμε το όνομα του γνωρίσματος στο αποτέλεσμα. (γ) όταν δυο σχέσεις του from έχουν γνωρίσματα με το ίδιο όνομα (δ) όταν έχουμε self-joins

133 Πράξεις Συνόλων Πράξεις: ένωση (union) τομή (intersection)
διαφορά (except/difference) εφαρμόζονται σε συμβατές σχέσεις (same arity, domain).

134 Πράξεις Συνόλων Γενική Σύνταξη: ( select from where)
union/intersection/except

135 Μεταβλητές Πλειάδων (tuple variables)
Μια μεταβλητή πλειάδας μπορεί να οριστεί στο from χρησιμοποιώντας το as H ιδέα είναι ότι η μεταβλητή «τρέχει» επί του πίνακα, γραμμή-γραμμή Οι μεταβλητές πλειάδων είναι ιδιαίτερα χρήσιμες όταν θέλουμε να συγκρίνουμε δυο πλειάδες της ίδιας σχέσης (self-join). Παράδειγμα: Για κάθε τμήμα, δείξε τα τμήματα που έχουν μεγαλύτερο budget από αυτό select D.Code, G.Code from Dept as D, Dept as G where D.Budget < G.Budget υπολογισμός?

136 Εμφωλευμένα Υποερωτήματα (nested subqueries)
Εμφωλευμένα υποερωτήματα Μερικά ερωτήματα απαιτούν πρώτα τον υπολογισμό κάποιων τιμών και κατόπιν τη χρησιμοποίησή τους στις συνθήκες του WHERE. Η SQL επιτρέπει το nesting υποερωτήμάτων (δομημένα υποερωτήματα). Μια υποερώτηση είναι μια έκφραση select-from-where που χρησιμοποιείται μέσα σε μια άλλη ερώτηση.

137 Εμφωλευμένα Υποερωτήματα (nested subqueries)
Γενική δομή: select ... from ... where ? (select ... where ); υποερώτηση ή εσωτερικό ερώτημα (inner query) εξωτερικό ερώτημα (οuter query) Υπολογισμός της υποερώτησης για κάθε γραμμή (ή πλειάδα) της εξωτερικής ερώτησης

138 Εμφωλευμένα Υποερωτήματα (nested subqueries)
Παράδειγμα: Βρες όλους τους υπαλλήλους που δουλεύουν σε κάποιο τμήμα με budget > select * from Employee where DeptCode in ( select Code from Dept where Budget > ) To υποερώτημα δεν εξαρτάται/συσχετίζεται (correlated) με το εξωτερικό ερώτημα. Αυτό δεν ισχύει πάντοτε (correlation).

139 Εμφωλευμένα Υποερωτήματα (nested subqueries)
Η SQL έχει μια συνολοθεωρητική κατεύθυνση. Θα έπρεπε λοιπόν να επιτρέπει συγκρίσεις συνόλων στο WHERE κομμάτι. Παράδειγμα: προηγουμένως το “in” Μπορούμε να έχουμε όσα επίπεδα εμφώλευσης επιθυμούμε Δομή και συντακτικό?

140 Εμφωλευμένα Υποερωτήματα (nested subqueries)
Συνδυασμοί: WHERE <value> in / not in A A, Β είναι υποερωτήματα της μορφής select-from-where. Μπορεί να είναι συσχετισμένα (correlated), μπορεί και όχι. [exists?] Σε αυτές τις περιπτώσεις, τα Α και Β είναι διαφορετικά για κάθε γραμμή. WHERE <value> some A < <= > >= = <> WHERE <value> all A < <= > >= = <> WHERE A contains/ not contains B * WHERE exists/ not exists A WHERE unique/ not unique A * not standard

141 Εμφωλευμένα Υποερωτήματα (nested subqueries)
Παράδειγμα: Για κάθε τμήμα βρες το SSN του υπαλλήλου με το μεγαλύτερο μισθό. συσχέτιση (correlation) select SSN from Employee as E1 where Salary >= all ( select Salary from Employee as E2 where E1.SSN <> E2.SSN and E1.DeptCode=E2.DeptCode) Θα δούμε έναν άλλον τρόπο αργότερα.

142 Συναθροιστικές Συναρτήσεις (Aggregation)
Συναθροιστικές Συναρτήσεις (Aggregate Functions) Η SQL έχει 5 built-in συναθροιστικές συναρτήσεις: Μέσος όρος: avg(A) (μόνο σε αριθμούς) A γνώρισμα Ελάχιστο: min(A) Μέγιστο: max(A) Άθροισμα: sum(A) (μόνο σε αριθμούς) Πλήθος: count(A)

143 Συναθροιστικές Συναρτήσεις (Aggregation)
Παράδειγμα: Βρες το μικρότερο, μεγαλύτερο και μέσο μισθό του τμήματος με κωδικο 311. select min(salary), max(salary), avg(salary) from Employee where DeptCode = 311 Το αποτέλεσμα είναι ένας πίνακας με τρία γνωρίσματα και μια γραμμή. Μπορούμε να δώσουμε όνομα στα γνωρίσματα χρησιμοποιώντας το as.

144 Συναθροιστικές Συναρτήσεις (Aggregation)
Παράδειγμα: Βρες το όνομα του υπαλλήλου με το μεγαλύτερο μισθό του τμήματος με κωδικο 311. select name, max(salary) from Employee where DeptCode = 311 Αν στο select υπάρχει συναθροιστική συνάρτηση, τότε μπορούν να υπάρχουν μόνο συναθροιστικές. Γιατί (σκεπτικό)?

145 Συναθροιστικές Συναρτήσεις (Aggregation)
Μπορούμε να εφαρμόσουμε τις συναρτήσεις όχι μόνο επί ενός πίνακα συνολικά, αλλά και επί ομάδων, αφού πρώτα τον ομαδοποοιήσουμε βάση ενός (ή περισσοτέρων γνωρισμάτων). Οι ομάδες προσδιορίζονται χρησιμοποιώντας το group by. Γενική μορφή: select <group-by γνωρίσματα>, <συναθροιστικές συναρτήσεις> from R group by <group by γνωρίσματα>

146 Συναθροιστικές Συναρτήσεις (Aggregation)
Παράδειγμα: Μικρότερος και μεγαλύτερος μισθός ανά τμήμα και φύλο select DeptCode, Sex, min(Salary), max(Salary) from Employee group by DeptCode, Sex DeptCode Sex min_Salary max_Salary 312 M 312 F 231 M 231 F 412 M

147 Συναθροιστικές Συναρτήσεις (Aggregation)
Μπορούν να συμμετέχουν πάνω από μία σχέσεις. Παράδειγμα: Βρές το μέσο μισθό για κάθε project SELECT A.ID, avg(Salary) FROM Employee as E, Assigned as A WHERE E.SSN=A.SSN GROUP BY A.ID

148 Συναθροιστικές Συναρτήσεις (Aggregation)
Μπορούμε να εφαρμόσουμε μια συνθήκη σε μια συγκεκριμένη ομάδα από πλειάδες χρησιμοποιώντας το having (όπως το where επιδρά επί μίας γραμμής, έτσι και το having επιδρά επί μίας ομάδας. Παράδειγμα: Δείξε τους κωδικούς των τμημάτων με μέσο όρο μισθού πάνω από 2000 select DeptCode, avg(salary) from Employee group by DeptCode having avg(salary) > 2000 Η συνθήκη του having εφαρμόζεται αφού σχηματιστούν οι ομάδες και υπολογιστούν οι συναθροιστικές συναρτήσεις.

149 Συναθροιστικές Συναρτήσεις (Aggregation)
'Οταν εμφανίζονται και το where και το having: η συνθήκη του where εφαρμόζεται πρώτα, οι πλειάδες που ικανοποιούν αυτή τη συνθήκη τοποθετούνται σε ομάδες με βάση το group by και μετά αν υπάρχει συνθήκη στο having εφαρμόζεται στις ομάδες.

150 Συζεύξεις Συνόλων Η SQL--92 υποστηρίζει διάφορους τύπους συζεύξεων που συνήθως χρησιμοποιούνται στο for, αλλά μπορούν να χρησιμοποιηθούν οπουδήποτε μπορεί να χρησιμοποιηθεί μια σχέση. Γενική σύνταξη: <όνομα-σχέσης1> <τύπος-σύζευξης> <όνομα-σχέσης2> <συνθήκη-σύζευξης> ή <όνομα-σχέσης1> natural <τύπος-σύζευξης> <όνομα-σχέσης2>

151 Συζεύξεις Συνόλων Τύποι Σύζευξης:
inner join: εσωτερική (θήτα) συνένωση left outer join: αριστερή εξωτερική συνένωση right outer join full outer join

152 Ορισμός Όψεων Μπορούμε να ορίσουμε μια όψη χρησιμοποιώντας την εντολή:
view definition Μπορούμε να ορίσουμε μια όψη χρησιμοποιώντας την εντολή: create view <όνομα--όψης> as <select-from-where ερώτηση> Επίσης, μπορούν να προσδιοριστούν τα ονόματα των γνωρισμάτων άμεσα create view <όνομα--όψης> (<λίστα ονομάτων-γνωρισμάτων>) as <select-from-where ερώτηση> Χρήση: πίνακες που χρησιμοποιούνται συχνά και ενδιάμεσα αποτελέσματα

153 Ορισμός Όψεων Παράδειγμα: Μια όψη που περιλαμβάνει πληροφορίες για τους υπαλλήλους και τα τμήματα τους. create view EmployeeDept (SSN,Name,Salary,Sex,DeptName,MgrSSN) as select SSN, Employee.Name, Salary,Sex, Dept.Name, MgrSSN) from Employee, Dept where DeptCode = Code

154 Ορισμός Όψεων Τα ονόματα όψεων μπορεί να χρησιμοποιηθούν οπουδήποτε μπορεί να χρησιμοποιηθεί το όνομα μιας σχέσης. Εν γένει οι όψεις δεν υλοποιούνται (materialized views) – στην ORACLE μπορεί κάποιος να ορίσει να υλοποιούνται. Ο ορισμός της όψης παραμένει στην βάση δεδομένων, εκτός αν σβηστεί: drop view <όνομα-όψης> Ενημέρωση (updating) όψεων? στις απλές περιπτώσεις (χωρίς καρτεσιανό γινόμενο ή συναθροίσεις) μπορεί να υπάρξει ενημέρωση joins ? Γιατί όχι ? συνάθροιση ? Γιατί όχι ?

155 SQL Functions Εκτός από τις συναρτήσεις συνάθροισης υπάρχουν και άλλες built-in συναρτήσεις (που εξαρτώνται από το σύστημα). Για παράδειγμα ή Transact-SQL έχει: datatype conversion functions date functions mathematical functions row aggregate functions string functions system functions text and image functions

156 Γλώσσα Ορισμού Δεδομένων
Σχετικά με το λογικό σχήμα, η ΓΟΔ SQL υποστηρίζει τους ορισμούς: του σχήματος κάθε σχέσης του πεδίου τιμών κάθε γνωρίσματος των περιορισμών ακεραιότητας

157 Γλώσσα Ορισμού Δεδομένων
create table R(A1 D1, A2 D2, ..., An Dn), <περιορισμός-ακεραιότητας1>, …, <περιορισμός-ακεραιότηταςk> όπου R είναι το όνομα της σχέσης, Ai τα ονόματα των γνωρισμάτων, και Di οι τύποι των αντίστοιχων πεδίων τιμών.

158 Πεδία Τιμών Για τον ορισμό του πεδίου ορισμού, οι διαθέσιμοι built-in τύποι περιλαμβάνουν: char(n) (σταθερού μήκους) varchar(n) int smallint numeric(p, d) (d από τα p ψηφία είναι στα δεξιά της υποδιαστολής) real, double precision float(n) date (ημερομηνία) time (ώρα)

159 Περιορισμοί ακεραιότητας
Επιτρεπτοί περιορισμοί ακεραιότητας είναι της μορφής: primary key Aj1, Aj2, ..., Ajn, (δεν επιτρέπονται επαναλαμβανόμενες τιμές και NULL τιμές) unique Aj1, Aj2, ..., Ajn, (δεν επιτρέπονται επαναλαμβανόμενες τιμέs; NULL τιμές επιτρέπονται) check P foreign key (Ai) references Aj

160 Διαγραφή Σχήματος Μια καινούργια σχέση είναι αρχικά άδεια.
Για να σβηστεί ένα σχήμα: drop table R Διαφορετικό από το: delete from R

161 Τροποποίηση Σχήματος ALTER TABLE όνομα πίνακα
ADD - προσθέτει καινούργια στήλη DROP - διαγράφει μια στήλη MODIFY - τροποποιεί μια στήλη

162 Εισαγωγή πλειάδων Για να εισάγουμε δεδομένα σε μια σχέση είτε
(α) προσδιορίζουμε την πλειάδα, είτε (β) γράφουμε μια ερώτηση που το αποτέλεσμα της εισάγεται στη σχέση. insert into R(A1, …, An) values (v1, …, vn) insert into R(A1, …, An) select-from-where

163 Εισαγωγή πλειάδων Παράδειγμα για το (α): insert into Employee
values (“ ”,”Mark Johnson”,3500,”M”,311) Παράδειγμα για το (β): insert into HighSalaryEmployee select * from Employee where salary > 3000

164 Διαγραφή delete from R where P
Μπορούμε να σβήσουμε μόνο ολόκληρες πλειάδες και όχι συγκεκριμένα γνωρίσματα. Σβήνει όλες τις πλειάδες της R για τις οποίες ισχύει το P. delete from R where P Όταν λείπει το where σβήνονται όλες οι πλειάδες μιας σχέσης.

165 Ενημερώσεις Παράδειγμα: Αύξηση όλων των μισθών του τμήματος 311 κατά 10% update Employee set Salary = Salary * 1.10 where DeptCode = 311

166 SQL και προγράμματα Πολλές φορές η SQL δεν είναι ικανή να εκφράσει τα ερωτήματα που θέλουμε, για λόγους: ειδικού χειρισμού ερωτημάτων. αποδοτικότητας συστήματος (optimization). ανάγκες για μία Turing-complete γλώσσα (σαν τη Java / C). Σε αυτές τις περιπτώσεις πρέπει να παντρέψουμε τη SQL με δομές κλασσικού προγραμματισμού. Υπάρχουν 3 τρόποι για αυτό: Επεκτείνουμε τη SQL με τέτοιες δομές Εμφωλιάζουμε SQL εντολές μέσα σε μια γλώσσα προγραμματισμού Δημιουργούμε μία «γέφυρα» (interface) μεταξύ της SQL και της γλώσσας προγραμματισμού (API)

167 SQL και προγράμματα Διαδικαστική (procedural) SQL (Transact-SQL, PL/SQL) Ενσωματωμένη (embedded) SQL ODBC / JDBC Interface

168 Procedural (Διαδικαστική) SQL
H SQL επεκτείνεται με δομές (μεταβλητές, βρόγχοι, blocks κ.λ.π.) ώστε να «θυμίζει» μία γλώσσα προγραμματισμού, με τις ανάλογες δυνατότητες. Μιcrosoft SQL Server: Transact-SQL Oracle: PL/SQL

169 Case Study: Oracle’s PL/SQL
Blocks εντολών Μεταβλητές και τύπους (built-in και user-defined) Εντολές ελέγχου ροής, όπως if-then-else και loops Procedures και functions Αντικείμενα και μεθόδους Μέσα σε ένα πρόγραμμα PL/SQL συνήθως έχουμε κλασσικά ερωτήματα SQL.

170 Case Study: Oracle’s PL/SQL
Παράδειγμα: DECLARE /* Declare variables which will be used in SQL statements */ v_NewMajor VARCHAR2(10) := 'History'; v_FirstName VARCHAR2(10) := 'Scott'; v_LastName VARCHAR2(10) := 'Urman'; BEGIN /* Update the students table. */ UPDATE students SET major = v_NewMajor WHERE first_name = v_FirstName AND last_name = v_LastName; /* Check to see if the record was found. If not, then we need to insert this record. */ IF SQL%NOTFOUND THEN INSERT INTO students (ID, first_name, last_name, major) VALUES (student_sequence.NEXTVAL, v_FirstName, v_LastName, v_NewMajor); END IF; END;

171 Case Study: Oracle’s PL/SQL, Βlocks
Το βασικό κομμάτι ενός PL/SQL είναι ένα block. Μπορούμε να έχουμε nesting. DECLARE /* declaration of variables go here */ BEGIN /* executanle section – procedural and SQL go here */ EXCEPTION /* error-handling statements when something goes wrong */ END;

172 Case Study: Oracle’s PL/SQL, Μεταβλητές και τύποι
Η επικοινωνία με τη ΒΔ γίνεται με τη μορφή μεταβλητών. Κάθε μεταβλητή έχει έναν τύπο. Ο χρήστης μπορεί να ορίσει τους δικούς του τύπους σαν table και record. DECLARE v_StudentName VARCHAR2(20); v_CurrentDate DATE; TYPE t_StudentRecord IS RECORD ( FirstName VARCHAR2(10); LastName VARCHAR2(10); ); v_Student t_StudentRecord; BEGIN ...

173 Case Study: Oracle’s PL/SQL, Βρόγχοι
DECLARE v_LoopCounter BINARY_INTEGER := 1; BEGIN LOOP INSERT INTO temp_table (num_col) VALUES (v_LoopCounter); v_LoopCounter := v_LoopCounter + 1; EXIT WHEN v_LoopCounter > 50; END LOOP; END; BEGIN FOR v_LoopCounter IN LOOP INSERT INTO temp_table (num_col) VALUES (v_LoopCounter); END LOOP; END;

174 Case Study: Oracle’s PL/SQL, Λογικοί Δρομείς
Ένας λογικός δρομέας (ή κέρσορας ) (cursor) χρησιμοποιείται για το χειρισμό των γραμμών που έχουν «τραβηχτεί» από τη ΒΔ με κάποιο select…from...where. Στην ουσία δημιουργείται ένας λογικός πίνακας των αποτελεσμάτων στον οποίο μπορούμε να προχωρήσουμε γραμμή-γραμμή. Η ιδέα των cursors υπάρχει σε όλες τις γλώσσες. Νίκος Παπαδοπουλος 35 Δημητρας 25 Μαρία Τσίαπα 28 Παπαδημητρίου 31 κέρσορας Γιώργος Λακιός 38 Χαλανδρίου 78 ΕΟF

175 Case Study: Oracle’s PL/SQL, Λογικοί Δρομείς
Παράδειγμα (τυπικό πρόγραμμα λογικών δρομέων): DECLARE v_FirstName VARCHAR2(20); v_LastName VARCHAR2(20); -- Cursor declaration. This defines the SQL statement to -- return the rows. CURSOR c_Students IS SELECT first_name, last_name FROM students; BEGIN -- Begin cursor processing. OPEN c_Students; LOOP -- Retreive one row. FETCH c_Students INTO v_FirstName, v_LastName; -- Exit the loop after all rows have been retreived. EXIT WHEN c_Students%NOTFOUND; /* Process data here */ END LOOP; -- End processing. CLOSE c_Students; END;

176 Case Study: Transact SQL, Έλεγχος Ροής
Υπάρχουν οι εξής δομές: begin ... end if ... else while, break, continue /* ... */ comments Goto <label>

177 Case Study: Transact SQL, stored procedures
Η γενική μορφή είναι η εξής: CREATE PROC[EDURE] procedure_name [;number] [ data_type} [VARYING] [= default] [OUTPUT] ] [,...n] [WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } [FOR REPLICATION] AS sql_statement [...n]

178 Case Study: Transact SQL, stored procedures
Παράδειγμα: CREATE PROCEDURE au_info @lastname varchar(40), @firstname varchar(20) AS SELECT au_lname, au_fname, title, pub_name FROM authors WHERE au_fname AND au_lname GO The au_info stored procedure can be executed in these ways: EXECUTE au_info 'Dull', 'Ann' EXECUTE = = 'Ann' EXEC au_info 'Dull', 'Ann' EXEC = = 'Ann' Πλήρης οδηγός υπάρχει στο Query Analyzer -> Help -> Transact SQL Help

179 Case Study: Transact SQL, Εναύσματα (triggers)
Μια διαδικασία η οποία ενεργοποιείται αυτόματα από το ΣΔΒΔ κάθε φορά που συμβαίνουν μεταβολές ορισμένου τύπου στα δεδομένα λέγεται trigger (έναυσμα). Μία ΒΔ με δηλωμένα triggers ονομάζεται active database (ενεργή ΒΔ). Παράδειγμα: Ένας πελάτης θέλει να κάνει χρέωση στην πιστωτική του κάρτα και με αυτή την συναλλαγή θα ξεπεράσει το πιστωτικό του όριο. Το ΣΔΒΔ θα πρέπει να ελέγχει σε κάθε συναλλαγή αν ο κανόνας του πιστωτικού ορίου τηρείται. Χαρακτηριστικά ενός trigger: γεγονός (π.χ. [before | after] insert/delete/update <πίνακα>) συνθήκη (π.χ. Salary > 10000, Area = “Μαρούσι”) ενέργεια (κώδικας SQL – π.χ. PL/SQL πρόγραμμα)

180 Case Study: Transact SQL, Εναύσματα (triggers)
CREATE TRIGGER trigger_name ON table [WITH ENCRYPTION] FOR { [DELETE] [,] [INSERT] [,] [UPDATE] } [WITH APPEND] [NOT FOR REPLICATION] AS sql_statement

181 Ενσωματωμένη SQL Ενσωματωμένη SQL
Προσπέλαση μιας ΒΔ μέσω μια γλώσσας προγραμματισμού (π.χ. C, Java) γενικού σκοπού απαιτείται τουλάχιστον γιατί: υπάρχουν ερωτήσεις που δε μπορούν να διατυπωθούν σε SQL, γιατί η SQL δεν έχει όλες τις δυνατότητες μιας γλώσσας προγραμματισμού γενικού σκοπού μη-δηλωτικές εντολές (π.χ., εκτύπωση, επικοινωνία με το χρήστη) δε μπορούν να γίνουν μέσω της SQL Ενσωμάτωση της SQL σε μια γλώσσα που καλείται φιλόξενη (host)

182 Ενσωματωμένη SQL EXEC SQL < embedded SQL statement > END-EXEC
Σε αυτήν την περίπτωση, η επεξεργασία των ερωτήσεων γίνεται από τη ΒΔ, και το αποτέλεσμα γίνεται διαθέσιμο στο πρόγραμμα μια γραμμή τη φορά Ένας ειδικός προ-επεξεργαστής (preprocessor) αντικαθιστά τον ενσωματωμένο κώδικα της SQL με δηλώσεις και κλήσεις συναρτήσεων στη host γλώσσα (δηλαδή π.χ. C) και μεταφράζεται το πρόγραμμα Τα ερωτήματα SQL «ενσωματώνονται» με την εξής σύνταξη: EXEC SQL < embedded SQL statement > END-EXEC Η ακριβής σύνταξη εξαρτάται από τη host γλώσσα

183 Eπικοινωνία με διεπαφή JDBC/ODBC - Γενικά
Σε αυτή την περίπτωση εισάγουμε ένα επίπεδο μεταξύ γλώσσας προγραμματισμού και Β.Δ., μέσω του οποίου γίνεται η επικοινωνία τους. Υπάρχει το ODBC (γενικής εφαρμογής) και το JDBC (για γλώσσα Java). Ποια είναι η διαφορά με την ενσωματωμένη SQL ??? Η επικοινωνία με τη ΒΔ γίνεται με system calls της host γλώσσας προγραμματισμού. Συνεπώς, για κάθε διαφορετικό ΣΔΒΔ πρέπει να δημιουργείται και διαφορετικό σύνολο system calls. Αυτό συνεπάγεται ότι για ν ΣΔΒΔ θα υπάρχουν ν implementations. Αντίθετα, με ένα ενδιάμεσο επίπεδο, αρκεί η γλώσσα να «μιλάει» με αυτό (DB-independent.) Νο free lunch: κόστος -> αποδοτικότητα

184 Eπικοινωνία με διεπαφή JDBC/ODBC - ODBC
Open Database Connectivity- Αναπτύχθηκε από τη Microsoft Corp. Το ODBC είναι ένα ευρέως διαδεδομένο API (application programming interface) για πρόσβαση και χειρισμό βάσεων δεδομένων. Ο στόχος είναι κάθε εφαρμογή να έχει πρόσβαση σε οποιαδήποτε δεδομένα, ανεξαρτήτου συστήματος. Το ODBC δημιουργεί ένα middle layer (database driver) - μεταξύ της εφαρμογής (στην περίπτωση μας Java) και της Β.Δ. H Java στέλνει SQL στο ODBC και περιμένει την απάντηση.

185 Eπικοινωνία με διεπαφή JDBC/ODBC - ODBC
Αυτό το layer μεταφράζει τα ερωτήματα της εφαρμογής σε εντολές που καταλαβαίνει η Β.Δ Η SQL χρησιμοποιείται σαν η γλώσσα πρόσβασης στη Β.Δ. Oracle Application A ODBC Driver for Oracle Application B ODBC Driver for IBM DB2 DB2 ODBC Driver for SQL Server Application C SQL Server Application D

186 Οργάνωση Αρχείων και Ευρετήρια

187 Ιεραρχία της Μνήμης

188 Μαγνητικοί Δίσκοι

189 Μαγνητικοί Δίσκοι (Συνέχεια)
Block or page – μία συνεχής σειρά από sectors ενός track Τα δεδομένα μεταφέρονται από και προς το δίσκο σε blocks Το μέγεθος διαφέρει από 512 bytes εώς μερικά kilobytes Disk-arm-scheduling αλγόριθμοι ταξινομούν τις επισκέψεις στα tracks έτσι ώστε το disk arm movement να ελαχιστοποιείται (ο elevator αλγόριθμος χρησιμοποιείται συχνά) Οργάνωση αρχείων – βελτιστοποίηση του block (page) access time μέσω της οργάνωσης των blocks ώστε να ανταποκρίνεται με το πως to «επισκεπτόμαστε» τα δεδομένα. Ιδέα: αποθήκευση συσχετισμένων πληροφοριών «κοντά» η μία με την άλλη.

190 Οργάνωση αρχείων Κάθε block (page) (μπορεί να) περιέχει πολλά records
To record id (rid) είναι αρκετό για να εντοπίσουμε ένα record στο δίσκο Records: είναι μεταβλητού ή σταθερού μήκους Data Page Data Page Data Page Full Pages Header Page Data Page Data Page Data Page Pages with Free Space

191 Οργάνωση αρχείων Μοντέλο κόστους: Έννοιες: B: # σελίδων δεδομένων
R: # records / page C: μέσος χρόνος επεξεργασίας D: μέσος χρόνος ανάγνωσης ή εγγραφής σελίδας H: κόστος συνάρτησης κατακερματισμού Έννοιες: Κλειδί αναζήτησης Σάρωση Αναζήτηση με επιλογή ισότητας (point queries / equality) Αναζήτηση με επιλογή διαστήματος τιμών (range queries) Εισαγωγή / Διαγραφή

192 Οργάνωση αρχείων – heap files
Τα records μπαίνουν στα pages χωρίς ιδιαίτερη σειρά. Εισαγωγή: 2D+C Διαγραφή: C+D Point queries: 0.5B(D+RC) Range queries: B(D+RC) Σάρωση: B(D+RC)

193 Οργάνωση αρχείων – sequential files
Τα records αποθηκεύονται σειριακά με βάση την τιμή κάποιου κλειδιού αναζήτησης (π.χ. ΑΦΜ) 1 2 4 8 11 12 15 16

194 Οργάνωση αρχείων – hash files
h: A -> B (συνάρτηση) ιδέα: ένα μεγάλο σύνολο τιμών να απεικονιστεί σε ένα μικρό παράδειγμα: φ(χ) = χ mod 1000 (οι τιμές είναι 0,1,...,999) Βάση της τιμής του κλειδιού αναζήτησης και της συνάρτησης κατακερματισμού, έχουμε ότι κάποιο record απεικονίζεται σε μία page Προβλήματα: μεροληψία δεδομένων (skewing), overflow, range queries

195 Ευρετήρια Μία δομή δεδομένων η οποία επιτρέπει στο ΣΔΒΔ να εντοπίζει τις εγγραφές γρηγορότερα. Παράδειγμα: Κατάλογος βιβλίων σε μία βιβλιοθήκη. Ιδεά: 1 , 5 , 8 , 15 , 22 , 25 , 28 , 33 , 37 , 39 , 45 , 47 , 56 ευρετήριο 25 ... 5 ... 28 ... 56 ... εγγραφές 1 ... 37 ... 15 ... 8 ...

196 Ευρετήρια Παράδειγμα: τηλεφωνική ατζέντα Αγγ ... Αδα ... Βασ ...
Βολ ... Γαρ ... Δεν ... Ελε ... Ηλι ... εγγραφές Θαν ... Καρ ... Κολ ... Παπ ...

197 Ευρετήρια Ευρετήρια: Ordered (ταξινομημένα, δενδρικά) – Β+ δέντρα
Hash-based (κατακερματισμού) – Πίνακες κατακερματισμού Πρωτέυοντα (primary) – αν το κλειδί αναζήτησης περιέχει το πρωτεύον κλειδί του πίνακα Δευτερεύοντα (secondary)

198 Ευρετήρια Ευρετήρια: Δεν υπάρχει ομοφωνία για όρους στη βιβλιογραφία!
Συγκροτημένα (clustered) – η σειρά των εγγραφών είναι ίδια με αυτή του ευρετηρίου Μη-συγκροτημένα (non-clustered) Πυκνά (dense) – για κάθε εγγραφή υπάρχει ένα entry στο ευρετήριο Αραιά (sparse) – υπάρχει ένα entry στο ευρετήριο για κάθε ομάδα εγγραφών. Δεν υπάρχει ομοφωνία για όρους στη βιβλιογραφία!

199 Ευρετήρια (συνέχεια) Ευρετήρια:
Τα κλειδιά αναζήτησης μπορούν να αποθηκεύονται μαζί με τις εγγραφές στις οποίες ανήκουν ή Τα κλειδιά αναζήτησης μπορούν να αποτελούν αυτόνομα μία δομή δεδομένων, με το κάθε κλειδί να «δείχνει» στην αντίστοιχη εγγραφή στην οποία ανήκει Βασική ερώτηση: είναι το ευρετήριο μέρος της οργάνωσης αρχείων ή μία ξεχωριστή οντότητα?

200 Παράδειγμα UNCLUSTERED CLUSTERED Index entries direct search for
data entries Data entries Data entries (Index File) (Data file) Data Records Data Records


Κατέβασμα ppt "Επανάληψη Βασικών Αρχών Β.Δ."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google