Σχεσιακή Άλγεβρα - Διαίρεση

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

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

Σχεσιακή Άλγεβρα Relational Algebra

SQL Data Manipulation Language

Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών. Σχεσιακός Λογισμός

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

Σχεσιακός Λογισμός Πλειάδων

SQL Data Manipulation Language

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

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

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

ΗΥ360: Αρχεία και Βάσεις Δεδομένων Διδάσκων: Πλεξουσάκης Δημήτρης. Φροντιστήριο Σχεσιακή Άλγεβρα Δημητράκη Κατερίνα

ΗΥ360 Αρχεία και Βάσεις Δεδομένων. Φροντιστήριο στην Σχεσιακή Άλγεβρα.

Φροντιστήριο Σχεσιακή Άλγεβρα (μέρος 2 ο ) - Σχεσιακός Λογισμός Δημητράκη Κατερίνα

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

Μοντέλο Οντοτήτων Σχέσεων (Entity-Relationship Model)

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

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

Τελεστής Προβολής - Παράδειγμα. Π Πόλη, Εξάμηνο (Φοιτητές)

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

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

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

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

4.2 ΕΥΚΛΕΙΔΕΙΑ ΔΙΑΙΡΕΣΗ

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

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

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

καλών σχεσιακών σχημάτων

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

Βάσεις Δεδομένων : Λογικός Σχεδιασμός 1. καλών σχεσιακών σχημάτων. Λογικός Σχεδιασμός Σχεσιακών Σχημάτων. Γενικές Κατευθύνσεις.

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

Λογικός Σχεδιασμός Σχεσιακών Σχημάτων: Αποσύνθεση

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

Πρόλογος Μέρος Ι Εισαγωγή στα συστήματα βάσεων δεδομένων Μια βόλτα στις βάσεις δεδομένων...25

Σχεδιασμός μιας Β : Βήματα

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

Σχεσιακό Μοντέλο. Σχεδιασμός Βάσεων Δεδομένων Μάθημα 2 ο Μαρία Χαλκίδη

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

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

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

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

Σχεσιακή Άλγεβρα. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1

Θέματα ανακεφαλαίωσης

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

Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων

ΠΟΛΥΩΝΥΜΑ. Λυμένα Παραδείγματα

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

καλών σχεσιακών σχημάτων

Βάσεις Δεδομένων Ι. Παραδείγματα. Γεώργιος Ευαγγελίδης, Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής

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

Διοίκηση Παραγωγής και Υπηρεσιών

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

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

Διάλεξη 14: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) II. Διδάσκων: Παναγιώτης Ανδρέου

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

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

f(x) = και στην συνέχεια

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

Σχεσιακή Άλγεβρα. Συνολοθεωρητικές Πράξεις. Εκφράσεις. Ειδικές Πράξεις. Θεμελίωση της Σχεσιακού Μοντέλου Δεδομένων. Σχεσιακός Λογισμός

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

Κανονικές Μορφές. Βάσεις Δεδομένων : Κανονικές Μορφές. ηλαδή, i = 1,.., n R i R. Σύντομη επανάληψη αποσύνθεσης.

Συναρτησιακές Εξαρτήσεις

Συναρτησιακές Εξαρτήσεις

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

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

Σχεσιακή Άλγεβρα. Προγράμματα που απαντούν σε επερωτήσεις για τον τρέχον στιγμιότυπο της βάσης δεδομένων (querying)

Συναρτησιακές Εξαρτήσεις

Το Σχεσιακό Μοντέλο-Σχεσιακή Άλγεβρα, Σχεσιακός Λογισμός. 06/06/2009 Μ.Χατζόπουλος 1

Κλείσιμο Συνόλου Γνωρισμάτων

Σχεσιακή Άλγεβρα. Εισαγωγή. Εισαγωγή. Εισαγωγή. Παράδειγμα. Εισαγωγή. Ταινία Τίτλος Έτος Διάρκεια Είδος. Παίζει Όνομα-Ηθοποιού Τίτλος Έτος.

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

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7α: SQL (NULL, Διαίρεση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

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

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

Διάλεξη 10: Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός (Relational Algebra/Calculus) ΙI

Λογικός Σχεδιασµός Σχεσιακών Σχηµάτων: Αποσύνθεση

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

Σχέσεις. Διμελής Σχέση. ΣτοΊδιοΣύνολο. Αναπαράσταση

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7β: SQL (Πρακτική Εξάσκηση 1) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Θεωρία Κανονικοποίησης

ΜοντέλοΟντοτήτωνΣυσχετίσεων & ΔιάγραμμαΟντοτήτων Συσχετίσεων. Μοντέλο Οντοτήτων Συσχετίσεων

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

Συναρτησιακές Εξαρτήσεις

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

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

Θεωρία Πιθανοτήτων & Στατιστική

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

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

Ασκήσεις1 Πολυώνυμα. x x c. με το. b. Να βρεθούν όλες οι τιμές των a, Να βρεθεί ο μκδ και το εκπ τους

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

Transcript:

Σχεσιακή Άλγεβρα - Διαίρεση Ορισμός (13): Έστω σχέσεις R, S με Head(R) = {A 1, A 2, A n, B 1, B 2, B k } και Head(S) = {B 1, B 2, B k } με n,k 0. Το αποτέλεσμα της διαίρεσης R S είναι μια σχέση Τ: με σχήμα { A 1, A 2, A n } με πλειάδες t τέτοιες ώστε, για κάθε πλειάδα s S, η πλειάδα t s ανήκει στην R 1

Διαίρεση (1) - R S R A B C a1 b1 c1 a2 b1 c1 a1 b2 c1 a1 b2 c2 a2 b1 c2 a1 b2 c3 a1 b2 c4 a1 b1 c5 S C c1 R S A B a1 b1 a2 b1 a1 b2 Temp A B a1 b1 a2 b1 a1 b2 2

Διαίρεση (2) R A B C a1 b1 c1 a2 b1 c1 a1 b2 c1 a1 b2 c2 a2 b1 c2 a1 b2 c3 a1 b2 c4 a1 b1 c5 S C c1 c2 R S A B a2 b1 a1 b2 Temp A B a1 b1 a2 b1 a1 b2 3

Διαίρεση (3) R A B C a1 b1 c1 a2 b1 c1 a1 b2 c1 a1 b2 c2 a2 b1 c2 a1 b2 c3 a1 b2 c4 a1 b1 c5 S C c1 c2 c3 c4 R S A B a1 b2 Temp A B a1 b1 a2 b1 a1 b2 4

Διαίρεση (4) R A B C a1 b1 c1 a2 b1 c1 a1 b2 c1 a1 b2 c2 a2 b1 c2 a1 b2 c3 a1 b2 c4 a1 b1 c5 S B C b1 c1 R S A a1 a2 Temp A a1 a2 5

Διαίρεση (4) R A B C a1 b1 c1 a2 b1 c1 a1 b2 c1 a1 b2 c2 a2 b1 c2 a1 b2 c3 a1 b2 c4 a1 b1 c5 S B C b1 c1 b2 c1 R S A a1 Temp A a1 a2 6

Διαίρεση Η διαίρεση μπορεί να θεωρηθεί ως το αντίστροφο του καρτεσιανού γινομένου Αν T := R S τότε T S δίνει μια σχέση με σχήμα συμβατό με αυτό της R και μπορεί να ισχύει ότι T S = R Γενικά, αν T := R S τότε T είναι το μέγιστο δυνατό σύνολο πλειάδων ώστε T S R 7

Διαίρεση Θεώρημα 1: Έστω T, S σχέσεις με σχήματα A 1, A 2, A n και B 1, B 2, B m αντίστοιχα. Αν R = T S τότε T := R S Απόδειξη: Head(R) = {A 1, A 2, A n, B 1, B 2, B m }. Αρκεί να αποδειχτεί ότι T R S και R S T T R S. Έστω W := R S και Head(W) = {A 1, A 2, A n } = Head(T). Έστω t μια οποιαδήποτε πλειάδα της T. Τότε για κάθε πλειάδα s S, η t s ανήκει στην T S. Συνεπώς η t ανήκει στην R = T S άρα στην R S (βάσει ορισμού). Άρα η t ανήκει στην W και άρα T W. R S T.. Έστω W = R S και Έστω w οποιαδήποτε πλειάδα της W. Τότε για κάθε πλειάδα s S, η w s ανήκει στην R. Από την υπόθεση, R = T S, δηλαδή κάθε πλειάδα της R προκύπτει από τη συνένωση μιας πλειάδας της T και μιας της S. Αφού Head(W) = Head(T) τότε πρέπει να υπάρχει πλειάδα t T τέτοια ώστε t = w. Άρα η w ανήκει στην T και W T. 8

Διαίρεση (5) (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(ord,cid,aid,pid,qty, amt) «Βρείτε όλους τους κωδικούς των πελατών που έχουν κάνει παραγγελία για όλα τα προϊόντα που παραγγέλνει ο πελάτης c001» Κωδικοί προϊόντων που έχει παραγγείλει ο πελάτης c001 T1 := pid ( cid = c001 (O)) Βρείτε τους πελάτες που έχουν κάνει παραγγελία για όλα τα προηγούμενα προϊόντα T2 := cid,pid (O) T1 pid,cid (O) ( pid ( cid = c001 (O)) 9

Διαίρεση (5) ord cid aid pid qty amt o001 c001 a001 p001 1 1000 Orders o002 c001 a002 p002 2 2000 o003 c003 a003 p001 3 3000 o004 c003 a004 p002 4 4000 o005 c004 a004 p001 5 5000 pid,cid (O) ( pid ( cid = c001 (O)) pid,cid (O) pid ( cid = c001 (O) pid,cid (O) ( pid ( cid = c001 (O)) cid pid pid cid c001 c001 c003 p001 p002 p001 p001 p002 c001 c003 c003 p002 c004 p001 10

Διαίρεση (5) (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(ord,cid,aid,pid,qty, amt) pid,cid (O) ( pid ( cid = c001 (O)) pid,cid (O) ( pid ( cid = c006 (O)) Σωστή λύση? pid,cid (O ( pid ( cid = c001 (O)))) 11

Διαίρεση (5) ord cid aid pid qty amt o001 c001 a001 p001 1 1000 o002 c001 a002 p002 2 2000 o003 c003 a003 p001 3 3000 o004 c003 a004 p002 4 4000 o005 c004 a004 p001 5 5000 pid ( cid = c001 (O) pid p001 p002 cid ( O pid ( cid = c001 (O)) cid Η λύση cid (O ( pid ( cid = c001 (O)))) προϋποθέτει ότι οι πλειάδες που αντιστοιχούν στις παραγγελίες όλων των προϊόντων του πελάτη c001 έχουν τις ίδιες τιμές για όλα τα γνωρίσματα τα της Orders(orderid, cid, aid, qty, amt). 12

Διαίρεση (6) (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(ord,cid,aid,pid,qty, amt) «Βρείτε τα ονόματα των πελατών που παραγγέλνουν όλα τα προϊόντα» Κωδικοί προϊόντων T1 := pid (P) Πελάτες που παραγγέλνουν όλα τα προϊόντα της σχέσης T1 : T2 := pid, cid (O) T1 Ονόματα των πελατών στη σχέση T2: cname (C JOIN T2) cname ( C JOIN ( pid, cid (O) pid (P) ) ) 13

Διαίρεση Θεώρημα 2: Η διαίρεση μπορεί να εκφραστεί χρησιμοποιώντας τις πράξεις,,. Απόδειξη: Έστω R, S σχέσεις με σχήματα A 1, A 2, A n, B 1, B 2, B m και B 1, B 2, B m αντίστοιχα. Έστω R S := A1, A2, An (R) A1, A2, An (( A1, A2, An (R) S) R), και W := A1, A2, An (R) A1, A2, An (( A1, A2, An (R) S) R). Έστω u πλειάδα που ανήκει στην W. Τότε η u ανήκει στην A1, A2, An (R) και δεν ανήκει στην A1, A2, An (( A1, A2, An (R) S) R). Έστω ότι υπάρχει πλειάδα s S τέτοια ώστε η πλειάδα u s να μην ανήκει στην R. Αυτό σημαίνει ότι η u θα ανήκει στην A1, A2, An (( A1, A2, An (R) S) R), το οποίο είναι άτοπο. Επομένως για κάθε πλειάδα s S, η πλειάδα u s ανήκει στην R S Αντίστροφα, έστω u πλειάδα που ανήκει στην R S. Τότε ανήκει στην A1, A2, An (R) και δεν ανήκει στην A1, A2, An ( ( A1, A2, An (R) S ) R). Αν ίσχυε αυτό, θα σήμαινε ότι υπάρχει πλειάδα s S τέτοια ώστε η πλειάδα u s να ανήκει στην A1, A2, An (R) S αλλά όχι στην R. Επομένως η u θα ανήκει στην A1, A2, An (R) A1, A2, An ( ( A1, A2, An (R) S) R) 14

Διαίρεση (7) Παράδειγμα: R S = A,B (R) - A,B ( ( A,B (R) S) R) R T1 := A,B (R) T2 := T1 S A B C a1 b1 c1 a2 b1 c1 a1 b2 c1 a1 b2 c2 a2 b3 c2 a1 b4 c3 a1 b2 c4 a1 b1 c5 S C A B A B C a1 b1 a1 b1 c1 a2 b1 a2 b1 c1 a1 b2 a1 b2 c1 a2 b3 a2 b3 c1 a1 b4 a1 b4 c1 T3 := T2 R T4 := A,B (T3) A B C A B a2 b3 c1 a2 b3 a1 b4 c1 a1 b4 c1 15

Διαίρεση (7) Παράδειγμα: R S = A,B (R) - A,B ( ( A,B (R) S) R) T1 := A,B (R) A B a1 b1 a2 b1 a1 b2 a2 b3 a1 b4 T3 := T2 R A B C a2 b3 c1 a1 b4 c1 T2 := T1 S A B C a1 b1 c1 a2 b1 c1 - a1 b2 c1 a2 b3 c1 a1 b4 c1 T4 := A,B (T3) A B a2 b3 a1 b4 S C c1 T5 := T1 T4 A B a2 b3 a1 b4 16

Διαίρεση (7) Παράδειγμα: R S = A,B (R) - A,B ( ( A,B (R) S) R) R S Temp A B C a1 b1 c1 a2 b1 c1 a1 b2 c1 a1 b2 c2 a2 b3 c2 a1 b4 c3 a1 b2 c4 a1 b1 c5 C c1 A a1 B b1 a2 b1 a1 b2 R S A B a1 b1 a2 b1 a1 b2 a2 b3 a1 b4 17

Διαίρεση (8) (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(ord,cid,aid,pid,qty, amt) «Βρείτε τα ονόματα των πελατών που παραγγέλνουν όλα τα προϊόντα με τιμή 0.50$» Προϊόντα με τιμή 0.50$. T1 := price=0.50 (P) Κωδικοί προϊόντων T2 := pid (Τ1) Κωδικοί πελατών και προϊόντων που παραγγέλνουν T3 := cid,pid (O) Κωδικοί πελατών που παραγγέλνουν όλα τα προϊόντα στη σχέση T2: T4:=T3 T2 Ονόματα πελατών: T5 := cname (C JOIN T4) cname ( C JOIN ( pid, cid (O) pid ( price=0.50 (P)))) 18

Διαίρεση (9) (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(ord,cid,aid,pid,qty, amt) «Βρείτε τους κωδικούς των πελατών που παραγγέλνουν όλα τα προϊόντα» pid, cid (O) pid (P) «Βρείτε τους κωδικούς προμηθευτών που παίρνουν παραγγελίες από όλα τα προϊόντα που παραγγέλνει ο πελάτης c004 aid, pid (O) pid ( cid= c004 (O)) 19

Σχεσιακή Άλγεβρα - Παραδείγματα (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(orderid,cid,aid,pid,qty,$) (A) Agents (aid, aname,city,percent) «Βρείτε τα ονόματα των πελατών που δεν κάνουν καμία παραγγελία μέσω του πράκτορα a03» πελάτες που κάνουν παραγγελίες μέσω του πράκτορα a03: T1 := cid ( aid= a03 (Ο)) Υπόλοιποι πελάτες T2 := cid (C) T1 ονόματα των παραπάνω πελατών: cname (T2 JOIN C) cname ( ( cid (C) cid ( aid= a03 (Ο))) JOIN C) 20

Σχεσιακή Άλγεβρα - Παραδείγματα (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(orderid,cid,aid,pid,qty,$) (A) Agents (aid, aname,city,percent) «Βρείτε τους πελάτες που κάνουν παραγγελίες μόνο μέσω του πράκτορα a03» πελάτες που δεν κάνουν παραγγελίες μέσω του πράκτορα a03: T1 := cid ( aid a03 (Ο)) Υπόλοιποι πελάτες T2 := cid (Ο) T1 cid (O) cid ( aid a03 (Ο)) 21

Σχεσιακή Άλγεβρα - Παραδείγματα (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(orderid,cid,aid,pid,qty,$) (A) Agents (aid, aname,city,percent) «Βρείτε τα προϊόντα που δεν έχουν παραγγελθεί ποτέ από πελάτη στη Νέα Υόρκη μέσω ενός πράκτορα που έχει έδρα τη Βοστώνη» pid (P) pid ( ( city = NY (C) ) JOIN Ο JOIN ( city = Boston (A) ) ) 22

Σχεσιακή Άλγεβρα - Παραδείγματα (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(orderid,cid,aid,pid,qty,$) (A) Agents (aid, aname,city,percent) «Βρείτε τα προϊόντα που δεν παραγγέλνονται από οποιονδήποτε πελάτη ζει σε πόλη της οποίας το όνομα ξεκινάει με D. Πελάτες που ζουν σε πόλη της οποίας το όνομα ξεκινάει από D: T1 := city < E city D (C) Παραγγελίες των παραπάνω πελατών: T2 := Ο JOIN T1 Κωδικοί παραπάνω προϊόντων: T3 := pid (T2) pid (P) pid (Ο JOIN ( city E city D (C) ) ) 23

Σχεσιακή Άλγεβρα - Παραδείγματα (P) Products(pid, pname,city,quantity, price) (C) Customers(cid, cname,city,discount) (O) Orders(orderid,cid,aid,pid,qty,$) (A) Agents (aid, aname,city,percent) «Βρείτε τους πελάτες που παραγγέλνουν και το προϊόν p01 και το προϊόν p07. cid ( pid= p01 (O) ) cid ( pid= p07 (O) ) Η πράξη της τομής μπορεί να χρησιμοποιηθεί όταν οι συνθήκες της επιλογής αναφέρονται σε μονότιμα γνωρίσματα (π.χ. αναγνωριστικό της σχέσης). Αν οι συνθήκες της επιλογής αναφέρονται σε πλειότιμα γνωρίσματα τότε μπορεί να χρησιμοποιηθεί η πράξη της σύζευξης στη συνθήκη, όπως και η πράξη της τομής. 24