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

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

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

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


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

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

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

3 3 Εισαγωγικά

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

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

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

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

10 Βάσεις Δεδομένων ΙΙ 10 Αφαιρετική δομή μίας Β.Δ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

28 Βάσεις Δεδομένων ΙΙ 28 Τα ΠΕΔΙΑ (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) E-R Μοντέλο: ΔΟΜΕΣ (3)

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

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

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

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

33 Βάσεις Δεδομένων ΙΙ 33. 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 PERSONMOTHER having CHILDREN 1 : 1 1 : N ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (4)

34 Βάσεις Δεδομένων ΙΙ 34. 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 ADVISOREMPLOYEE works-for PROJECT N : 1 N : M ΔΟΜΙΚΟΙ ΠΕΡΙΟΡΙΣΜΟΙ: Συσχετίσεις (5)

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

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

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

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

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

40 Βάσεις Δεδομένων ΙΙ 40 ΓΝΩΡΙΣΜΑΤΑ σε Οντότητες και Συσχετίσεις  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 Περιγραφή της ΕΤΑΙΡΕΙΑΣ στο E-R (2)

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

42 Βάσεις Δεδομένων ΙΙ 42 Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας (table) που λέγεται σχέση (relation) Γνωρίσματα (attributes, fields) υπάλληλος AFMNameAddressSalary Nikos PapadopoulosPentelis Maria XilomenouDimokratias Giorgos PapasTrikalwn Το Σχεσιακό Μοντέλο

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

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

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

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

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

48 Βάσεις Δεδομένων ΙΙ 48 Κάθε πλειάδα είναι μια διατεταγμένη λίστα από τιμές όπου κάθε τιμή v i είναι ένα στοιχείο του dom(A i ) ή η ειδική τιμή null r(R)  (dom(A 1 ) X dom(A 2 ) X … X dom(A n )) Κάθε σχέση είναι ένα υποσύνολο του καρτεσιανού γινομένου: Παρατηρήσεις Διάταξη των πλειάδων σε μια σχέση Διάταξη των γνωρισμάτων στο σχήμα σχέσης Το Σχεσιακό Μοντέλο

49 Βάσεις Δεδομένων ΙΙ 49 Συμβολισμός Σχήμα σχέσης βαθμού n R(A 1, A 2, …, A n ) Πλειάδα t της σχέσης r(R) αναφορά στις συνιστώσες τιμές t[Ai] t[A u, A w, …, A z ] όνομα γνωρίσματος t.A i Q, R, S ονόματα σχέσεων t, u, v πλειάδες Το Σχεσιακό Μοντέλο

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

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

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

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

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

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

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

57 Βάσεις Δεδομένων ΙΙ 57 Employee Project Department Assigned SSN Works-in Name LastNameFirstName Code Description Location Dependent Policy Name Hours DeptCode Παράδειγμα

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

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

60 Βάσεις Δεδομένων ΙΙ 60 Συσχετίσεις Γενικά, για κάθε συσχέτιση R μεταξύ n τύπων οντοτήτων που αντιστοιχούν στις σχέσεις S 1, S 2, …, S n δημιουργούμε μια νέα σχέση R με γνωρίσματα: τα γνωρίσματα (ξένα κλειδιά) του πρωτεύοντος κλειδιού κάθε συμμετέχουσας σχέσης S i τα γνωρίσματα της R (αν υπάρχουν) Θα δούμε κάποιες ειδικές περιπτώσεις Συσχετίσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

76 Βάσεις Δεδομένων ΙΙ 76 Η πράξη της προβολής (projectιοn) π ( ) Επιλογή συγκεκριμένων στηλών (γνωρισμάτων) Η Πράξη της Προβολής

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

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

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

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

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

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

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

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

85 Βάσεις Δεδομένων ΙΙ 85 Καρτεσιανό Γινόμενο (cartesian product) R(A 1, A 2, …, A n ) x S(B 1, B 2, …, B m ) (ή χιαστί γινόμενο (cross product) ή χιαστί συζεύξη (cross join) αποτέλεσμα η σχέση Q: Q(A 1, A 2, …, A n, B 1, B 2, …, B m ) n + m γνωρίσματα n R * n S πλειάδες τι γίνεται αν κάποια γνωρίσματα έχουν ίδια ονόματα ? Καρτεσιανό Γινόμενο

86 Βάσεις Δεδομένων ΙΙ 86 Α Β B C D RS R x S A R.B S.B C D Καρτεσιανό Γινόμενο

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

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

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

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

91 Βάσεις Δεδομένων ΙΙ 91 B C D UV Α Β C U A

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

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

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

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

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

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

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

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

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

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

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

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

104 104 SQL

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

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

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

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

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

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

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

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

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

114 Βάσεις Δεδομένων ΙΙ 114 Employee Project Department Assigned SSN Works-in Name Id Description Location Hours Code Sex Salary Name Budget MgrSSN Παράδειγμα

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

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

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

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

119 Βάσεις Δεδομένων ΙΙ 119 select * from Employee Επιλογή όλων των γνωρισμάτων select SSN, Name, Sex, Salary, DeptCode from Employee Select

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

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

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

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

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

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

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

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

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

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

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

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

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

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

134 Βάσεις Δεδομένων ΙΙ 134 Γενική Σύνταξη: ( select from where) union/intersection/except ( select from where) Πράξεις Συνόλων

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

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

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

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

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

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

141 Βάσεις Δεδομένων ΙΙ 141 Παράδειγμα: Για κάθε τμήμα βρες το SSN του υπαλλήλου με το μεγαλύτερο μισθό. 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) Θα δούμε έναν άλλον τρόπο αργότερα. συσχέτιση (correlation) Εμφωλευμένα Υποερωτήματα (nested subqueries)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

157 Βάσεις Δεδομένων ΙΙ 157 create table R(A 1 D 1, A 2 D 2,..., A n D n ),, …, όπου R είναι το όνομα της σχέσης, A i τα ονόματα των γνωρισμάτων, και D i οι τύποι των αντίστοιχων πεδίων τιμών. Γλώσσα Ορισμού Δεδομένων

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

159 Βάσεις Δεδομένων ΙΙ 159 Επιτρεπτοί περιορισμοί ακεραιότητας είναι της μορφής: primary key A j 1, A j 2,..., A j n, (δεν επιτρέπονται επαναλαμβανόμενες τιμές και NULL τιμές) unique A j 1, A j 2,..., A j n, (δεν επιτρέπονται επαναλαμβανόμενες τιμέs; NULL τιμές επιτρέπονται) check P foreign key (A i ) references A j Περιορισμοί ακεραιότητας

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

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

162 Βάσεις Δεδομένων ΙΙ 162 Για να εισάγουμε δεδομένα σε μια σχέση είτε (α) προσδιορίζουμε την πλειάδα, είτε (β) γράφουμε μια ερώτηση που το αποτέλεσμα της εισάγεται στη σχέση. insert into R(A 1, …, A n ) values (v 1, …, v n ) insert into R(A 1, …, A n ) select-from-where Εισαγωγή πλειάδων

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

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

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

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

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

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

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

170 Βάσεις Δεδομένων ΙΙ 170 Παράδειγμα: 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; Case Study: Oracle’s PL/SQL

171 Βάσεις Δεδομένων ΙΙ 171 Το βασικό κομμάτι ενός 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; Case Study: Oracle’s PL/SQL, Βlocks

172 Βάσεις Δεδομένων ΙΙ 172 Η επικοινωνία με τη ΒΔ γίνεται με τη μορφή μεταβλητών. Κάθε μεταβλητή έχει έναν τύπο. Ο χρήστης μπορεί να ορίσει τους δικούς του τύπους σαν 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... Case Study: Oracle’s PL/SQL, Μεταβλητές και τύποι

173 Βάσεις Δεδομένων ΙΙ 173 Μπορούμε να έχουμε επαναληπτικές δομές σε ένα πρόγραμμα 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; Case Study: Oracle’s PL/SQL, Βρόγχοι

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

175 Βάσεις Δεδομένων ΙΙ 175 Παράδειγμα (τυπικό πρόγραμμα λογικών δρομέων): 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; Case Study: Oracle’s PL/SQL, Λογικοί Δρομείς

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

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

178 Βάσεις Δεδομένων ΙΙ 178 Παράδειγμα: Πλήρης οδηγός υπάρχει στο Query Analyzer -> Help -> Transact SQL Help CREATE PROCEDURE 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' Case Study: Transact SQL, stored procedures

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

180 Βάσεις Δεδομένων ΙΙ 180 Γενική μορφή σύνταξης (περισσότερες περιπτώσεις) σε Transact SQL: CREATE TRIGGER trigger_name ON table [WITH ENCRYPTION] FOR { [DELETE] [,] [INSERT] [,] [UPDATE] } [WITH APPEND] [NOT FOR REPLICATION] AS sql_statement Case Study: Transact SQL, Εναύσματα (triggers)

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

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

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

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

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

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

187 Βάσεις Δεδομένων ΙΙ 187 Ιεραρχία της Μνήμης

188 Βάσεις Δεδομένων ΙΙ 188 Μαγνητικοί Δίσκοι

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

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

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

193 Βάσεις Δεδομένων ΙΙ 193 Οργάνωση αρχείων – sequential files Τα records αποθηκεύονται σειριακά με βάση την τιμή κάποιου κλειδιού αναζήτησης (π.χ. ΑΦΜ)

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

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

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

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

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

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

200 Βάσεις Δεδομένων ΙΙ 200 Παράδειγμα Index entries Data entries direct search for (Index File) (Data file) Data Records data entries Data entries Data Records CLUSTERED UNCLUSTERED


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

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


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