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

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

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

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

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

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

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

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Μετατροπή Διαγράμματος Οντοτήτων Συσχετίσεων (E-R) σε σχεσιακό. Φροντιστήριο 3 ο

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

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

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

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

Σχεσιακό Μοντέλο Περιορισμοί Μετατροπή ER σε Σχεσιακό Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Relational Model

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

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

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

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

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

Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model. Νικόλαος Ζ. Ζάχαρης

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

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

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

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

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

Μετατροπή Σχήματος Ο/Σ σεσχεσιακό

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

Μετατροπή Σχήματος Ο/Σ σεσχεσιακό

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

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

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

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

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

Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό

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

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)

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

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

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

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

Βάσεις εδοµένων. Σχεσιακή Άλγεβρα. Φροντιστήριο 4 o -5 o


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

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

Εργαστήριο Βάσεων Δεδομένων. Relational Model Σχεσιακό Μοντέλο

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

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

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

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

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

SQL Data Manipulation Language

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

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

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

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

DELETE, UPDATE, INSERT.

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

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

DELETE, UPDATE, INSERT

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

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

Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση Γνωρίσματα

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

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

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

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

Μετατροπή Σχήµατος Ο/Σ σε Σχεσιακό

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

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

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

Βάσεις Δεδομένων : Σχεσιακό Μοντέλο 1. Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση.

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

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

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

Σχεσιακό Μοντέλο Δεδομένων

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

Φυσική Σχεδίαση Υλοποίηση βάσης

1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL

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

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

SQL: Συναρτήσεις Συνάθροισης

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

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

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

Αρχεία και Βάσεις Δεδομένων

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP.

Transcript:

Επαναληπτικό Φροντιστήριο Βάσεις Δεδομένων Ι

θεωρία 1 Μετατροπή του E-R διαγράμματος σε σχεσιακό.

Θεωρία: Γραφικός Συμβολισμός Μοντέλου ER Συμβολισμός Σημασία οντότητα Ασθενής_οντότητα σχέση Προσδιορίζουσα σχέση γνώρισμα γνώρισμα-κλειδί Πλειότιμο_γνώρισμα

Θεωρία: Γραφικός Συμβολισμός Μοντέλου ER Συμβολισμός Σημασία Σύνθετο γνώρισμα Παραγόμενο γνώρισμα E 1 R E 2 E R N 1 E 2 R (min,max) E Ολική συμμετοχή της E2 στην R Λόγος πληθικότητας 1:N για τις E1:E2 στην R Δομικός περιορισμός (min, max) στη συμμετοχή της E στην R

Κανόνες μετατροπής Εννοιολογική σχεδίαση (Ο-Σ μοντέλο) κανόνες Λογική σχεδίαση (Σχεσιακό μοντέλο)

Ισχυροί τύποι οντοτήτων με μονότιμα γνωρίσματα Για κάθε (ισχυρό) τύπο οντοτήτων Ε δημιουργούμε ένα σχήμα σχέσης R με τα ίδια γνωρίσματα - ένα για κάθε απλό γνώρισμα του Ε. Αν το Ε έχει σύνθετα γνωρίσματα, στο σχεσιακό σχήμα R έχουμε ένα γνώρισμα για κάθε απλό γνώρισμα που απαρτίζει το σύνθετο. Επιλέγουμε το πρωτεύον κλειδί και το υπογραμμίζουμε. Αν είναι σύνθετο, υπογραμμίζονταιόλατααπλάγνωρίσματα.

Παράδειγμα

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

Παράδειγμα

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

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

Παράδειγμα

1-Ν δυαδική συσχέτιση Για κάθε 1-Ν δυαδικήσυσχέτισηr μεταξύ δύο τύπων οντοτήτων του διαγράμματος Ο/Σ που αντιστοιχούν στις σχέσεις Τ και S έστω T από την πλευρά 1 το πρωτεύον κλειδί της T γίνεται ξένο κλειδί της S

Παράδειγμα

Μ-Ν συσχέτιση Για κάθε Μ-Ν συσχέτισηr μεταξύ δύο τύπων οντοτήτων του διαγράμματος Ο/Σ που αντιστοιχούν στις σχέσεις Τ και S δημιουργούμε ένα νέο σχήμα σχέσης Ζ το οποίο περιέχει σαν ξένα κλειδιά τα πρωτεύοντα κλειδιά των οντοτήτων Τ και S περιέχει τα επιπλέον γνωρίσματα της συσχέτισης R.

Παράδειγμα

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

Παράδειγμα

Περιορισμοί Ακεραιότητας Περιορισμός Πεδίου Ορισμού: Ητιμήκάθε γνωρίσματος A πρέπει να είναι μία ατομική τιμή από το πεδίο ορισμού αυτού του γνωρίσματος dom(a) Περιορισμός Κλειδιού: όλες οι πλειάδες σε μία σχέση πρέπει να είναι διαφορετικές Περιορισμός Ακεραιότητας Οντοτήτων: Δε μπορεί η τιμή του πρωτεύοντος κλειδιού να είναι null Περιορισμός Αναφορικής Ακεραιότητας: Όταν μια πλειάδα μιας σχέσης s, αναφέρεται σε μια άλλη, τότε αυτή η άλλη πρέπει να υπάρχει. Περιορισμός Σημασιολογικής Ακεραιότητας : Λογικοί περιορισμοί που ισχύουν στον πραγματικό κόσμο.

1 η Κανονική μορφή Πρώτηκανονικήμορφή(1NF) Κάθε γραμμή πρέπει να είναι αναγνωρίσιμη κάθε στήλη στον πίνακα πρέπει να περιέχει ατομικές τιμές κάθε πεδίο πρέπει να είναι μοναδικό Καν. μορφή 1NF έλεγχος Μια σχέση δεν μπορεί να έχει μη ατομικά γνωρίσματα ή εμφωλευμένες σχέσεις Θεραπεία Σχηματίζω νέες σχέσεις για κάθε μη ατομικό γνώρισμα ή εμφωλευμένη σχέση

Άσκηση 1 Εκφώνηση

Ε-R Προαπαιτούμενο Ν 1 Ν ανήκει 1 Τομέας Μάθημα Ν Ν Διδάσκει 1 Καθηγητής Παρακολουθεί Μ Ακαδημαϊκή χρονιά Ακαδημαϊκή χρονιά Φοιτητής

Ελάχιστη πληροφορία για κάθε οντότητα Μάθημα Όνομα, κωδικός, Περιγραφή πρώτο έτος διδασκαλίας διδακτικές μονάδες Ώρες Διδασκαλίας Εξάμηνο Url_Ιστοσελίδας Τομέας κωδικός Περιγραφή Καθηγητής Όνομα Επίθετο Κωδικός Βαθμίδα E-mail Φοιτητής AM Όνομα Επίθετο Ακ.Ετος εισαγωγής E-mail

Ερωτήματα Επιλέξτε Πρωτεύοντα κλειδιά για κάθε μία από τις παραπάνω οντότητες λαμβάνοντας υπόψιν όλα τα δεδομένα που σας έχουν δοθεί Σχεδιάστε το αντίστοιχο σχεσιακό μοντέλο για την συγκεκριμένη βάση λαμβάνοντας υπόψιν όλους τους περιορισμούς που προκύπτουν από τα δεδομένα που σας έχουν δοθεί. Δικαιολογείστε ποια από τα παραπάνω γνωρίσματαπρέπειναοριστούνωςnull ήνot NULL και γιατί. (λάβετε υπόψιν όχι μόνο την σημασιολογική ορθότητα της βάσης αλλά και τις πληθικότητες των σχέσεων μεταξύ των οντοτήτων)

Θεωρία 2 Σχεσιακή άλγεβρα

Θεωρία Πράξεις σχεσιακής άλγεβρας Επιλογή Προβολή Ένωση Διαφορά Καρτεσιανό γινόμενο Μετονομασία Τομή (Intersection) Join & Φυσικό join (Natural Join) Ανάθεση (Assignment)

Πράξεις σχεσιακής άλγεβρας μοναδιαίες (unary) επιλογή σ condition (r) προβολή π attributelist (r) μετονομασία ρ X (E) ή ρ X ( A,,..., ) ( E ) 1 A 2 A n

Πράξεις σχεσιακής άλγεβρας δυαδικές (binary) ένωση (r s) Τομή ( r s) r & s πρέπει να έχουν ίδιο arity (αριθμός στηλών) γνωρίσματα των r & s πρέπει να είναι συμβατά διαφορά (r s) r & s πρέπει να έχουν το ίδιο arity (αριθμός στηλών) το domain του i-οστού στοιχείου των r & s πρέπει να είναι το ίδιο

Πράξεις σχεσιακής άλγεβρας Καρτεσιανό γινόμενο (r x s) Το καρτεσιανό γινόμενο μπορεί να γίνει μεταξύ 2 οποιονδήποτε σχέσεων Κάθε πλειάδα του r συσχετίζεται με κάθε πλειάδα του s. Το καρτεσιανό γινόμενο προϋποθέτει ότι τα γνωρίσματα των σχέσεων πρέπει να έχουν διακριτά ονόματα (αλλιώς μετονομασία).

Πράξεις σχεσιακής άλγεβρας join r Ε s ισοδυναμεί με natural join r s παράδειγμα: R = (A, B, C, D) S = (E, B, D) αποτέλεσμα = (A, B, C, D, E) r s ορίζεται (τυπικά) ως: σ E ( r x s) r.a, r.b, r.c, r.d, s.e (σ r.b = s.b AND r.d = s.d (r x s)

Πράξεις σχεσιακής άλγεβρας ανάθεση σύμβολο παράδειγμα: temp1 R-S (r) οι τελεστές της μπορούν να συντεθούν το αποτέλεσμα μιας πράξης είναι πάντα μία σχέση

Άσκηση 2 Σχεσιακή άλγεβρα

Εκφώνηση έστω το παρακάτω σχήμα μιας βάσης δεδομένων: Product (maker, model, type) PC (model, speed, ram, hd, cd, price) Laptop (model, speed, ram, hd, screen, price) Printer (model, color, type, price)

Ερωτήματα 1. Ποια μοντέλα PCs έχουν ταχύτητα τουλάχιστον 2,3 GHz; 2. Βρείτε τους αριθμούς μοντέλου κάθε έγχρωμου Laser εκτυπωτή 3. Ποιοι κατασκευαστές φτιάχνουν laptops με σκληρό μεγαλύτερο από 1 Gb; 4. Ποιος είναι ο αριθμός μοντέλου και η τιμή κάθε προϊόντος του κατασκευαστή Β; 5. Βρείτε τους κατασκευαστές που φτιάχνουν laptops αλλά όχι PCs 6. Βρείτε τα μεγέθη των σκληρών που υπάρχουν σε περισσότερα από ένα PC 7. Βρείτε τα ζευγάρια (μοντέλων) των PCs με ίδιο επεξεργαστή και μνήμη 8. Όπως το 7, αλλά με μη διακριτά ζευγάρια δηλαδή (Α,Β)=(Β,Α) 9. Βρείτε τους κατασκευαστές που κατασκευάζουν ακριβώς δύο μοντέλα PCs

Ερώτημα - Λύση 1. Ποια μοντέλα PCs έχουν ταχύτητα τουλάχιστον 2,3 GHz; π σ ( (PC)) model speed 2.3GHz

Ερώτημα - Λύση 2. Βρείτε τους αριθμούς μοντέλου κάθε έγχρωμου Laser εκτυπωτή π model ( σ (PC)) color=true AND type='laser'

3. Ποιοι κατασκευαστές φτιάχνουν laptops με σκληρό μεγαλύτερο από 1 Gb; π σ maker hd 1GB ( (Product Laptop))

Ερώτημα - Λύση 4. Ποιοςείναιοαριθμόςμοντέλουκαιη τιμή κάθε προϊόντος του κατασκευαστή Β; π π π model,price model,price model,price ( σ (Product PC)) maker='b' ( σ (Product Laptop)) maker='b' ( σ (Product Printer)) maker='b'

Ερώτημα - Λύση 5. Βρείτε τους κατασκευαστές που φτιάχνουν laptops αλλά όχι PCs π maker (Product Laptop) π maker (Product PC)

Ερώτημα - Λύση 6. Βρείτε τα μεγέθη των σκληρών που υπάρχουν σε περισσότερα από ένα PC π pc1.hd (PC AS pc1) pc1.hd = pc2.hd AND pc1.model pc2.model π pc2.hd (PC AS pc2)

Ερώτημα - Λύση 7. Βρείτε τα ζευγάρια (μοντέλων) των PCs με ίδιο επεξεργαστή και μνήμη π pc1.model,pc2.model ((PC AS pc1) pc1.ram = pc2.ram AND pc1.speed = pc2.speed AND pc1.model (PC AS pc2)) pc2.model

Ερώτημα - Λύση 8. Όπως το 7, αλλά με μη διακριτά ζευγάρια δηλαδή (Α,Β)=(Β,Α) π pc1.model,pc2.model ((PC AS pc1) pc1.ram = pc2.ram AND pc1.speed = pc2.speed AND pc1.model < pc2.model (PC AS pc2))

Βρείτε τους κατασκευαστές που κατασκευάζουν ακριβώς δύο μοντέλα PCs PCMaker π 9. maker,model (Product PC) LeastTwo π ( maker (PCM aker AS mp1) (PCM aker AS mp2)) LeastThree π ( maker (PCM aker AS mp1) (PCM aker AS mp2) (PCMaker AS mp3)) mp1.maker = mp2.maker AND mp1.model < mp2.model mp1.maker = mp2.maker AND mp1.model < mp2.model mp2.maker = mp3.maker AND mp2.model < mp3.model ExactlyTwo LeastTwo - LeastThree

Θεωρία 3 SQL

SQL Η SQL (Structured Query Language) είναι μια πλήρης γλώσσα Βάσεων Δεδομένων. Είναι δομημένη σε βάσεις που περιέχουν πίνακες. Οι πίνακες αποτελούνται από γραμμές (πλειάδες) και στήλες (γνωρίσματα).

Πίνακες Κάθε πίνακας αποτελείται από πεδία, τα οποία αντιπροσωπεύουν τα γνωρίσματα. Για κάθε πεδίο πρέπει να οριστεί ο τύπος τους. Θα πρέπει πάντα να χρησιμοποιείται ο τύπος δεδομένων που χρειάζεται για να αποθηκευτούν οι τιμές που μπορεί να πάρει το γνώρισμα. Επίσης πρέπει να ορίζεται και το μέγεθος του πεδίου, σύμφωνα με τις ανάγκες.

Δημιουργία πίνακα Η δημιουργία ενός πίνακα γίνεται με την εντολή CREATE TABLE. H CREATE TABLE συντάσσεται ως εξής: CREATE TABLE [IF NOT EXISTS] όνομα_πίνακα( όνομα_στήλης τύπος_στήλης [options], όνομα_στήλης2 τύπος_στήλης2 [options2], κλπ.. PRIMARY KEY (όνομα_στήλης_κλειδιού1,...) UNIQUE (index_col_name,...) [CONSTRAINT symbol] FOREIGN KEY (index_col_name,...) REFERENCES tbl_name [(index_col_name,...)] [ON DELETE reference_option] [ON UPDATE reference_option] Όπου options=[not NULL NULL] [DEFAULT default_value] [AUTO_INCREMENT] και reference option=restrict CASCADE SET NULL NO ACTION SET DEFAULT

Εντολή Insert Χρησιμοποιείται για την εισαγωγή δεδομένων στην βάση Βασική μορφή INSERT [INTO] table [(column1,column2 )] VALUES (value1,value2, ); Όταν συμπεριλαμβάνουμε τιμές για όλες τις στήλες δεν χρειάζεται να αναφέρουμε τη λίστα των τιμών. Σε όποια στήλη δεν θέλουμε να προσδιορίσουμε τιμή μπορούμε αντί για τιμή να βάλουμε NULL ή DEFAULT Αν δοθεί η τιμή NULL σε ένα πεδίο με την ιδιότητα AUTO_INCREMENT, τότε η τιμή θα υπολογιστεί αυτόματα.

Εντολή Insert Αν θέλουμε να γεμίσουμε μόνο ορισμένα πεδία INSERT [INTO] table set column1= value1,column2= value2,...; Μπορούμε να εισάγουμε πολλαπλές γραμμές σε ένα πίνακα, ταυτόχρονα. Κάθε γράμμα θα πρέπει να είναι στο δικό της σύνολο από αγκύλες και κάθε σύνολο από αγκύλες θα πρέπει να χωρίζεται με κόμμα. INSERT [INTO] table VALUES (value11,value 1,value12, 2,, value1n), (value21,value22,, value2n), (valuen1,valuen2,, valuenn);

Εντολή Select Μας δίνει την δυνατότητα να ανακαλούμε δεδομένα από μια βάση δεδομένων, σύμφωνα με κριτήρια που θέτουμε Βασική μορφή SELECT items FROM tables [WHERE condition] [GROUP BY group_type] Στήλες Πίνακες [HAVING where_definition] [ORDER BY order_type] [LIMIT limit_criteria] Συνθήκη

Where Γιαναέχουμεπρόσβασησεέναυποσύνολο γραμμών του πίνακα πρέπει να καθορίσουμε κάποια κριτήρια επιλογής. Αυτό γίνεται με την εντολή where Στην WHERE πρόταση οι τελεστές είναι 1. =,<>,>,>=,<,<=, 2. like(με % και _) 3. IS null,is not null, In, not in, between

Παραδείγματα Where Select * from customer where custid=3; Select * from customer where name like %a% ; Select * from author where authorid<>3; Select * from author where authorid<>2 AND name like _.% ;

Select-Order By ORDER BY: Ταξινόμηση σύμφωνα με το πεδίο που αναφέρεται. Οι τελεστές ASC και DESC σημαίνουν ταξινόμηση με αύξουσα και φθίνουσα σειρά αντίστοιχα. Παράδειγμα: 1. Select * from customer order by custid desc; 2. Select * from customer order by custid Asc;

Select-Group By GROUP BY: Ομαδοποίηση εγγραφών σύμφωνα με το πεδίο που αναφέρεται Κάνει χρήση βοηθητικών συναρτήσεων SUM(column): Άθροισμα COUNT(items): Μέτρηση Πλήθους μη κενών εγγραφών Με Distinct column προσμετρώνται μόνο οι διαφορετικές τιμές Με count(*) προσμετρώνται και οι Null εγγραφές. ΜΑΧ(column): Μέγιστο MIN(column): Ελάχιστο AVG(column): Μέσος όρος Παράδειγμα: 1. SELECT author_id, count(author_id) FROM book group by author_id; 2. SELECT count(author_id) FROM book; 3. SELECT avg(price),author_id from book group by author_id;

Select-Having HAVING: συνθήκη που εφαρμόζεται στην GROUP BY. Παράδειγμα: 1. SELECT avg(price),author_id from book group by author_id having price> 15.00; 2. select name, sum(quantity) from customer inner join request on custid=customerid group by name having sum(quantity) > 2;

Select-Limit LIMIT: καθορίζει τον αριθμό των εγγραφών που επιστρέφονται από την select. Το πρώτο νούμερο καθορίζει τη θέση εκκίνησης (με αρίθμηση που ξεκινάει από το 0) καιτοδεύτεροοαριθμόςτωνεγγραφών που θα επιστρέψει Παράδειγμα: 1. Select * from book order by price limit 2,3;

Ανακαλώντας στοιχεία από πολλαπλούς πίνακες-εμφωλευμένα select Να προβληθούν ο τίτλος και οι κωδικοί των συγγραφέων των βιβλίων, τα οποία γράφτηκαν από συγγραφείς που γεννήθηκαν μετά από την 01-01-1980 1. SELECT title, author_id FROM book WHERE author_id IN (SELECT authorid FROM author WHERE birthday>1980-01-01) Σε σύγκριση με 1. SELECT title, author_id FROM book;

Συνένωση πινάκων JOIN: Συνένωση πινάκων για το συνδυασμό πληροφοριών, κυρίως όταν έχουμε συσχέτιση. Παράδειγμα: Select title,price, name from author, book where author.authorid=book.author_id; Επιστρέφει τις εγγραφές των βιβλίων συνδυάζοντας τον πίνακα book με τον πίνακα author έτσι ώστε μέσω του ξένου κλειδιού author_id, ο πίνακας book να αποκτήσει και το όνομα του συγγραφέα.

Είδη Join: EQUI JOIN : Cross join με συνθήκη ισότητας μεταξύ ξένων κλειδιών INNER JOIN: μια εγγραφή συμπεριλαμβάνεται μόνο αν υπάρχει εγγραφή που της «ταιριάζει». LEFT JOIN: Οι εγγραφές του αριστερού πίνακα συμπεριλαμβάνονται πάντα, ανεξάρτητα από το αν υπάρχει εγγραφή στο δεξιό πίνακα που να τους ταιριάζει. RIGHT JOIN: Ομοίως για τον δεξιό πίνακα.

Ερώτηση σε Μ-Ν Με χρήση μόνο των JOIN: select title,name FROM book INNER JOIN order on book.isbn=order.isbn INNER JOIN customer on custid=customerid; Επιστρέφει τα ζευγάρια των ονομάτων πελατών και ποια βιβλία αγόρασαν σε κάθε παραγγελία.

Χρησιμοποιώντας άλλα Ονόματα για Πίνακες: Ψευδώνυμα Μπορούμε να αναφερόμαστε σε πίνακες με άλλα ονόματα που είναι πιο σύντομα. Select c.name from customers as c, order as o,book as b where C.custID=o.customerID And o.isbn=b.isbn And b.title like %java% ;

Εντολή Delete DELETE: Διαγραφή μιας εγγραφής Σύνταξη: DELETE FROM πίνακας [where συνθήκη] [LIMIT number]; Παραδείγματα 1. delete from book; 2. Delete from book where ISBN= 0-672-11297-2

Εντολή Update UPDATE: Ανανέωση μιάς εγγραφής Σύνταξη: UPDATE όνομα_πίνακα SET στήλη=τιμή,... WHERE συνθήκη Η σύνταξη της where είναι ίδια με προηγουμένως. ΠΧ: 1. update book set price=price*0.5; 2. update book set price=11.50 where ISBN= 0-760-31697-3

Εντολή ALTER Μας δίνει την δυνατότητα να αλλάζουμε την δομή ενός πίνακα. Σύνταξη ALTER TABLE όνομα-πινακα αλλαγή [,αλλαγή...]; Παραδείγματα: Alter table customers modify name char(45) not null; Alter table book drop price;

Άσκηση 3 SQL

Εκφώνηση

Εκφώνηση Θεωρήστε το παραπάνω διάγραμμα οντοτήτων συσχετίσεων και τις εντολές δημιουργίας των πινάκων «βιβλίο» και «Συγγραφέας» που αντιπροσωπεύουν τις αντίστοιχες οντότητες. CREATE TABLE `author` ( `name` varchar(20) NOT NULL default '', `birthday` date NOT NULL default '0000-00-00', `authorid` int NOT NULL auto_increment, `comments` longtext NOT NULL, PRIMARY KEY (`authorid`) );

Εκφώνηση CREATE TABLE `book` ( ); `ISBN` varchar(5) NULL default 12345678910, `Title` varchar(30) NOT NULL default '', `Price` float(5,2) NULL default '0.00', `review` longtext NOT NULL, `author_id` varchar(30) NULL default '0', PRIMARY KEY (`ISBN`), CONSTRAINT `c1` FOREIGN KEY (`author_id`) REFERENCES `author` (`authorid`) ON DELETE CASCADE ON UPDATE CASCADE;

Ερωτήματα Βρείτε τα λάθη στον ορισμό του πίνακα BOOK και αναφέρετε τον περιορισμό ο οποίος παραβιάζεται σε κάθε περίπτωση. Γράψτε την ορθή εντολή δημιουργίας του πίνακα «BOOK». Εξηγήστε τι εκφράζει η δήλωση «CONSTRAINT `c1` FOREIGN KEY (`author_id`) REFERENCES `author` (`authorid`)» Εξηγήστεπωςεπηρεάζειτιςεγγραφέςτουπίνακα «ΒΟΟΚ» ηδήλωσηon DELETE CASCADE ON UPDATE CASCADE

ΛΑΘΟΣ ΛΑΘΟΣ CREATE TABLE `book` ( `ISBN` varchar(5) NULL default 12345678910, `Title` varchar(30) NOT NULL default '', `Price` float(5,2) NULL default '0.00', `review` longtext NOT NULL, `author_id` varchar(30) NULL default '0', PRIMARY KEY (`ISBN`), CONSTRAINT `c1` FOREIGN KEY (`author_id`) REFERENCES `author` (`authorid`) ON DELETE CASCADE ON UPDATE CASCADE; ); ΣΩΣΤΟ CREATE TABLE `book` ( `ISBN` varchar(13) NOT NULL, `Title` varchar(30) NOT NULL default '', `Price` float(5,2) NOT NULL default '0.00', `review` longtext NOT NULL, `author_id` int NOT NULL default '0', PRIMARY KEY (`ISBN`), CONSTRAINT `c1` FOREIGN KEY (`author_id`) REFERENCES `author` (`authorid`) ON DELETE CASCADE ON UPDATE CASCADE; );

Ερωτήματα σε SQL Βρείτε τα ονόματα των πελατών που έχουν γεννηθεί μετά τις 1970-12-01. select name from customer where Birthday > '1970-12-01'; Βρείτε τους διακριτούς τίτλους των βιβλίων που έχει αγοράσει ο πελάτης με όνομα «Giannhs papadopoulos» select distinct Title from customer inner join request on custid=customerid inner join book on book_isbn=isbn where name like 'Giannhs papadopoulos'; Βρείτε το όνομα του πελάτη και το αντίστοιχο αριθμό βιβλίων που έχει αγοράσει. select name, sum(quantity) from customer inner join request on custid=customerid group by name;

Άσκηση 4 SQL

Θεωρείστετησχεσιακήβάσητου σχήματος 1. Τα γνωρίσματα κλειδιά είναι υπογραμμισμένα employee (person_name, street, city) works (person_name, company_name, salary) company (company_name, c_city) Σχήμα 1

Στην δεδομένη σχεσιακή βάση έχουν αποθηκευθεί τα εξής δεδομένα: employee Γιάννης_Περικο κλέας Δημοκρατίας 1 Θήβα Γιώργος_Μαντ άς Μαρία_Κομποθ έκλα Κορίνθου 34 Αγ.Δημητρίου 20 Κόρινθος Αθήνα Νταλια_Χατζή Τσιμισκή 25 Χαλκίδα

Δεδομένα works Γιάννης_Περικοκλέας Infocom 1000 Γιάννης_Περικοκλέας TerraNet 1500 Γιώργος_Μαντάς Infocom 2500 Μαρία_Κομποθέκλα Infocom 300 Μαρία_Κομποθέκλα WebLife 800 Μαρία_Κομποθέκλα WebLife 1200 Νταλια_Χατζή WebLife 900 Νταλια_Χατζή TerraNet 1100

Δεδομένα company Infocom Πάτρα TerraNet Λαμία WebLife Κόρινθος

Καταγράψτε το αποτέλεσμα των παρακάτω ερωτημάτων: select * from company where city like %α select person_name, sum(salary) from works group by person_name; select person_name,c_city from works inner join company on works.person_name=company. person_name inner join employee on works.person_name = employee.person_name Where employee.city=company.c_city; select * from works natural join company on works.company_name=company. company_name Where c_city like K% ; select person_name,c_city from works, employee where works.person_name=employee. person_name;

select * from company where city like %α company Infocom Πάτρα TerraNet Λαμία

select person_name, sum(salary) from works group by person_name; works Γιάννης_Περικοκλέας 2500 Γιώργος_Μαντάς 2500 Μαρία_Κομποθέκλα 2300 Νταλια_Χατζή 2000

select person_name,c_city from works inner join company on works.person_name=company. person_name inner join employee on works.person_name = employee.person_name Where employee.city=company.c_city; works inner join company on works.person_name=company. person_name inner join employee on works.person_name = employee.person_name person_name Γιώργος_Μαντάς c_city Κορινθος

select * from works natural join company on works.company_name=company. company_name Where c_city like K% ; works natural join company on works.company_name=company.company_name person_name company_name salary c_city Γιώργος_Μαντάς WebLife 2500 Κορινθος

select person_name,c_city from employee, works, company where works.person_name=employee. person_name AND works.company_name=company. company_name AND employee.city=company.c_city; ; employee, Works, company person_name c_city Γιώργος_Μαντάς Κορινθος